Tipos de dispositivos
100%

Dispositivos · Lección 2

Tipos de dispositivos

Aprende a distinguir los nodos de dispositivos de caracteres y de bloques de las tuberías, los sockets y los objetos normales del sistema de archivos.

El primer carácter del modo que muestra ls -l identifica el tipo de objeto del sistema de archivos. Bajo /dev, los archivos especiales de caracteres y de bloques son nodos de dispositivo. También pueden aparecer nodos de tuberías y sockets de dominio Unix, pero son objetos de comunicación entre procesos, no nodos de dispositivos de hardware.

$ ls -l /dev/null /dev/sda /run/systemd/journal/dev-log /tmp/example-fifo
crw-rw-rw- 1 root root 1, 3 ... /dev/null
brw-rw---- 1 root disk 8, 0 ... /dev/sda
srw-rw-rw- 1 root root      ... /run/systemd/journal/dev-log
prw------- 1 user user      ... /tmp/example-fifo

Las entradas y los permisos varían según el sistema; el ejemplo solo ilustra los caracteres de tipo.

Nodos de dispositivos de caracteres

Una c identifica un dispositivo de caracteres. Suele exponer una interfaz orientada a flujos o específica del dispositivo en vez de bloques de almacenamiento de tamaño fijo direccionables. Algunos ejemplos son las terminales y seudodispositivos como /dev/null.

«Carácter» no exige que cada llamada al sistema transfiera exactamente un carácter. Las aplicaciones pueden leer o escribir búferes, mientras que el controlador define el bloqueo, el encuadre y el comportamiento de control.

¿Qué primer carácter del modo identifica un nodo de dispositivo de caracteres?

Nodos de dispositivos de bloques

Una b identifica un dispositivo de bloques. Los dispositivos de bloques proporcionan almacenamiento direccionable en bloques mediante la capa de bloques del kernel y pueden admitir operaciones como E/S con búfer, particionado y sistemas de archivos. Los discos, las particiones y los volúmenes lógicos suelen tener nodos de bloques.

Un nodo de bloques no es un sistema de archivos montado. Representa un dispositivo de almacenamiento o una región lógica; se puede crear un sistema de archivos en él y montarlo por separado. Escribir datos sin procesar en el nodo de bloques equivocado puede destruir tablas de particiones, sistemas de archivos o datos de usuarios.

¿Qué indica el primer carácter de modo b?

FIFO y nodos de socket

Una p identifica una FIFO, también llamada tubería con nombre. Proporciona un flujo de bytes con nombre mediante el cual pueden comunicarse los procesos. Los datos no se almacenan de forma persistente en el nodo FIFO después de ser consumidos.

Una s identifica un nodo de socket de dominio Unix. Da nombre a un extremo de socket local y puede admitir comunicación orientada a conexiones o mediante datagramas, transferencia de descriptores y funciones de credenciales del par. Los sockets de red que utilizan direcciones de Internet no tienen necesariamente nodos en el sistema de archivos.

Ni una FIFO ni un nodo de socket Unix utilizan números mayor y menor de dispositivo para seleccionar un controlador de hardware.

¿Qué afirmación distingue correctamente estos tipos de objetos de comunicación entre procesos?

Números mayor y menor de dispositivo

Los nodos de dispositivos de caracteres y de bloques almacenan un número de dispositivo dividido en componentes mayor y menor. En un listado largo sustituyen la columna habitual del tamaño del archivo:

brw-rw---- 1 root disk 8, 0 ... /dev/sda

El par indica al kernel la interfaz de dispositivo registrada y la instancia a las que se dirige el nodo. Un número mayor se asocia con un controlador o una clase de dispositivo, mientras que el controlador interpreta el número menor. No codifiques supuestos como «el número menor cero siempre significa la primera unidad»; las correspondencias dependen del subsistema y de las interfaces del kernel.

Muestra explícitamente el tipo y los números de dispositivo con:

$ stat -c 'type=%F major=%t minor=%T path=%n' /dev/null

GNU stat muestra los valores %t y %T en hexadecimal.

¿Qué objetos utilizan números mayor y menor para identificar una interfaz de dispositivo del kernel?

Lección completada

Has completado Tipos de dispositivos

Ahora puedes interpretar tipos especiales del sistema de archivos sin tratar todos ellos como dispositivos de hardware.

  • Interpreta c como nodo de dispositivo de caracteres y b como nodo de dispositivo de bloques.

  • Interpreta p como FIFO y s como nodo de socket de dominio Unix.

  • Asocia los números mayor y menor únicamente con nodos de dispositivo.

  • Trata el acceso directo a dispositivos de bloques como potencialmente destructivo.

Guarda tu progreso

Crea una cuenta gratuita para guardar esta lección y continuar en cualquier dispositivo.

Crear una cuenta gratuita
Siguiente Lección
Volver a Dispositivos