Dispositivos de caracteres para discos en Linux.

Dispositivos de caracteres para discos en Linux.

¿Por qué otros sistemas UNIX necesitan dispositivos de caracteres como dispositivos de almacenamiento cuando Linux no?

Otros sistemas operativos UNIX (AIX, HPUX, Solaris y macOS) usan algo como '/dev/rdisk#' y '/dev/disk#' para dispositivos de almacenamiento.

Respuesta1

Creo que este artículo de Wikipediahttps://en.wikipedia.org/wiki/Raw_devicelo explica muy bien:

En informática, específicamente en Unix y sistemas operativos similares a Unix, un dispositivo sin formato es un tipo especial de dispositivo lógico asociado con un archivo de dispositivo de caracteres que permite acceder directamente a un dispositivo de almacenamiento, como una unidad de disco duro, sin pasar por las cachés del sistema operativo. y buffers (aunque es posible que aún se utilicen los cachés de hardware). Las aplicaciones, como un sistema de gestión de bases de datos, pueden utilizar dispositivos sin formato directamente, lo que les permite gestionar cómo se almacenan en caché los datos, en lugar de transferir esta tarea al sistema operativo.

En FreeBSD, todos los archivos de dispositivo son, de hecho, dispositivos sin formato. La compatibilidad con dispositivos sin formato se eliminó en FreeBSD 4.0 para simplificar la administración del búfer y aumentar la escalabilidad y el rendimiento.1

En el kernel de Linux, los dispositivos sin formato quedaron obsoletos y se programó su eliminación en un momento dado, porque en su lugar se puede utilizar el indicador O_DIRECT.

Respuesta2

La razón por la que uno podría querer utilizar la interfaz sin formato cuando la interfaz del dispositivo de bloque es que la interfaz sin formato suele ser más rápida. El sistema operativo realiza el almacenamiento en caché del búfer sólo para archivos especiales de bloque.

Cuando se lee o escribe un archivo muy grande en un medio como una cinta magnética, el almacenamiento en caché del búfer por parte del sistema operativo no proporciona ningún beneficio porque ningún bloque se leerá más de una vez. El uso de la interfaz del dispositivo sin formato evita este exceso de actividad del sistema.

Otra razón para utilizar la interfaz del dispositivo sin formato al procesar archivos continuos muy grandes en medios magnéticos es que la interfaz sin formato puede admitir tamaños de bloques muy grandes, lo que permite lograr velocidades de transferencia de datos muy altas. Cuando se accede a un dispositivo con la interfaz del dispositivo de bloque, todas las lecturas y escrituras deben pasar a través de los buffers del sistema y, por lo tanto, están limitadas al tamaño de bloque del sistema de archivos (normalmente 1K o 2K bytes). Cuando se utiliza el dispositivo sin formato, se pueden utilizar tamaños de bloque de 32 K o más. --John J. Valle,Referencia del programador de UNIX; Edición de 1991.

Aparte de las ganancias de rendimiento, existía (¿existe?) el requisito de que los sistemas de archivos a los que se accede a través de la interfaz de bloque se desmonten por razones de coherencia de la caché. Los bloques almacenados en caché por el sistema pueden obstaculizar los cambios realizados a través del dispositivo de bloque cuando se vuelven a escribir en el disco. Desmontar antes del fschk es una molestia menor; si la aplicación que necesita acceso directo es el uso principal del sistema, es mucho peor.

En respuesta a su pregunta original, muchas de las cuestiones son en gran medida históricas. Es poco común en los sistemas contemporáneos que los buffers del dispositivo sean más grandes que los buffers del sistema. (¿Cuándo fue la última vez que utilizó una estación de trabajo conectada a una impresora de alta velocidad con un búfer mayor que la memoria de la estación de trabajo?)

información relacionada