En Linux (y en los Unixes de la década de 1980), un dispositivo de almacenamiento (a menudo una partición de disco en algún disco duro o en algún SSD ) es un dispositivo de bloque (vea esto ), así que es una [sub] secuencia de bloques (que es el unidad básica de E / S física ). El tamaño del bloque físico depende del hardware (los discos IDE antiguos tenían un tamaño de bloque de 512 bytes, los discos SATA grandes nuevos tienen un tamaño de bloque de 4Kbytes, lea el wikipage de formato avanzado), y cuando cree un sistema de archivos (con mkfs
, por ejemplo , mke2fs (8)) puede especificar un tamaño de bloque lógico que es un múltiplo (a menudo una potencia pequeña de dos, incluido 1) de ese tamaño de bloque físico. Lea también sobre direccionamiento de bloque lógico .
En el pasado (piense en las estaciones de trabajo Sun3 de la década de 1990) el disco estaba hecho de cilindros con cabezales organizados en sectores (lea el wikipage de CHS ), con un sector que contiene un bloque. Hoy en día, estos aún permanecen, pero son un artefacto artificial proporcionado por el controlador del disco duro (el circuito en el propio disco). En algunos sistemas operativos, el controlador del dispositivo de bloque reprogramaba y reordenaba las solicitudes de E / S para minimizar el movimiento del cabezal del disco y la latencia rotacional .
De esta forma, un sistema de archivos puede funcionar con cualquier tipo de dispositivo de almacenamiento (disco duro tradicional, SSD, unidad flash USB, etc.), y solo se cambia el controlador del dispositivo de almacenamiento.
Sí, pero lo malo está en los detalles (p. Ej., Leer sobre TRIM y Amplificación de escritura , específicos para SSD). Y los detalles son importantes, por lo que la implementación real es menos simple que su figura. Lea más sobre sistemas de archivos (y piense en sistemas de archivos remotos y en clúster , incluidos SMB y NFS ; lea también sobre Logical Volume Manager ).
Lea los sistemas operativos: tres piezas fáciles (y su parte de persistencia ).
Tenga en cuenta que los dispositivos de bloque se han ido en FreeBSD (en realidad, proporcionan una abstracción común para los dispositivos de caracteres y bloques). Sospecho que incluso en Windows el sistema operativo sabe sobre particiones, tamaño de bloque, etc. (pero debe verificar).
Todo lo que dice Basile Starynkevitch es correcto. Agregaré un poco más. De hecho, las unidades de disco eran unidades de "bloque", pero los dispositivos de bloque (y muchos otros dispositivos) se presentaron en dos formas: "sin procesar" y "cocidos". Los dispositivos sin formato solo se podían abordar en fragmentos que eran múltiplos de su tamaño de fragmento de almacenamiento nativo. Por lo tanto, un dispositivo de disco sin formato solo puede leerse o escribirse uno o varios bloques a la vez, no solo un byte o dos. Los dispositivos cocinados agregaron una capa que permitiría operaciones tan pequeñas, así como varias otras características.
Los sistemas de archivos trabajaron con dispositivos sin formato y, por lo tanto, no los vieron como una gran variedad de bytes, sino más bien como una gran variedad de bloques, como explicó BS.
fuente