Te recomendamos que pruebes esta resolución en un entorno controlado antes de enviarlo a producción, un saludo.
Solución:
Cuando un programa lee o escribe datos de un archivo, las solicitudes van a un controlador de kernel. Si el archivo es un archivo normal, los datos son manejados por un controlador de sistema de archivos y generalmente se almacenan en zonas en un disco u otro medio de almacenamiento, y los datos que se leen de un archivo son los que se escribieron previamente en ese lugar. Hay otros tipos de archivos para los que suceden cosas diferentes.
Cuando se leen o escriben datos en un archivo de dispositivo, el controlador de ese dispositivo maneja la solicitud. Cada archivo de dispositivo tiene un número asociado que identifica el controlador a utilizar. Lo que hace el dispositivo con los datos es asunto suyo.
Los dispositivos de bloque (también llamados archivos especiales de bloque) normalmente se comportan de forma muy parecida a los archivos ordinarios: son un array de bytes, y el valor que se lee en una ubicación determinada es el último valor que se escribió allí. Los datos del dispositivo de bloque se pueden almacenar en caché en la memoria y volver a leer desde el caché; las escrituras se pueden almacenar en búfer. Los dispositivos de bloque normalmente se pueden buscar (es decir, hay una noción de posición dentro del archivo que la aplicación puede cambiar). El nombre “dispositivo de bloque” proviene del hecho de que el hardware correspondiente normalmente lee y escribe un bloque completo a la vez (por ejemplo, un sector en un disco duro).
Los dispositivos de caracteres (también llamados archivos especiales de caracteres) se comportan como conductos, puertos serie, etc. Escribir o leer en ellos es una acción inmediata. Lo que hace el conductor con los datos es asunto suyo. Escribir un byte en un dispositivo de caracteres puede hacer que se muestre en la pantalla, se emita en un puerto serie, se convierta en un sonido, … Leer un byte de un dispositivo puede hacer que el puerto serie espere la entrada, puede devolver un mensaje aleatorio byte (/dev/urandom
), … El nombre “dispositivo de caracteres” proviene del hecho de que cada carácter se maneja individualmente.
Consulte Wikipedia y Comprensión de /dev y sus subdirectorios y archivos para obtener más información.
Apuntan a un controlador y pueden ser creados por [mknod][1]
. Mirando su página de manual, parece que los dispositivos de bloque están almacenados en búfer mientras que los dispositivos de caracteres no están almacenados en búfer. Los dispositivos de bloque tienen un “tamaño de bloque” que indica el tamaño de los bloques a los que se puede acceder. (para los dispositivos de almacenamiento, el tamaño del bloque suele oscilar entre 512 B y 4 KiB) Los dispositivos de almacenamiento y la memoria suelen accederse como dispositivos de bloque, mientras que los dispositivos como los puertos serie y los terminales suelen accederse como dispositivos de caracteres.
Normalmente se encuentran en /dev (y no pueden funcionar en particiones montadas con un nodev
opción (o su equivalente))
En ls -l
muestre dos números separados por comas para los dispositivos en el lugar donde normalmente se encuentra el tamaño. Esos son los números mayores y menores, que apuntan al conductor. Su tipo también se indica como “c” o “b” en la columna de permiso de la ls -l
producción.
/dev se puede completar de varias maneras. En las versiones recientes del kernel de Linux, normalmente se usa udev, en Solaris contiene enlaces a /devices, que es un sistema de archivos virtual devfs.