¿Cómo encuentra la CPU la información adecuada en un disco duro?

Hay un mapa Originalmente se llamaba Tabla de asignación de archivos, o FAT, pero cuando el tamaño de los discos duros creció inconvenientemente grande, la mayoría adoptó el Sistema de archivos NT (NTFS), que es similar pero más complejo. En cualquier sistema, cada sector individual (o bloque de sectores) en el disco está asociado con una entrada única específica en algún lugar de la tabla de asignación. (Los sistemas operativos que no son de Microsoft tienen sistemas de mapas diferentes, pero similares). En FAT32, cada entrada es un número de 32 bits.

Sobre el mapa está el directorio raíz , un área reservada del disco donde los nombres de archivos y otra información se almacenan en un formato fijo especial. Los nombres almacenados aquí pueden ser archivos o subdirectorios , que en realidad son solo archivos especiales que contienen nombres de archivos, etc., almacenados en el mismo formato que el directorio raíz. Cada nombre de archivo en un directorio está asociado con varias otras piezas de información, como la hora y la fecha, y la más importante de todas: la ubicación en el disco donde se almacena la primera parte del archivo. Esta ubicación, que es un número de clúster (ver más abajo), tiene una entrada en la tabla de asignación que especifica qué hacer a continuación. Una vez leídos los datos, la computadora busca en la tabla de asignación y puede encontrar el código del final del archivo, en cuyo caso está todo terminado, o el número de clúster de la siguiente parte del archivo, que a su vez tiene su propia entrada en la tabla de asignación para decir qué hacer después de leer esa parte.

En cuanto a cómo la computadora encuentra el mapa, el sector de arranque proporciona esa información. A diferencia de todo lo demás en el disco, el sector de arranque siempre está en la misma posición física: pista 0, sector 1. Esto lo dirige a la tabla de particiones, donde puede buscar la dirección de la partición primaria, y en la pista 0, sector 1 de esa partición se encuentra el sector de arranque de partición. A continuación se muestra el sector de arranque de la partición primaria de una unidad flash de 16 GB: las unidades flash casi siempre usan el sistema FAT, aunque pueden ser NTFS o cualquier otro. En días más simples, cuando este sistema fue diseñado, todo lo que teníamos eran disquetes y pequeños discos duros, y solo había una partición. Solo hay uno en esta unidad flash que estoy viendo aquí.


Para empezar, le dice que el disco está organizado en sectores de 512 bytes, y que hay 63 sectores por pista y 255 cabezas (superficies de disco). Como se trata de una unidad Flash, en realidad no hay sectores, pistas o cabezas, pero sigue el formato utilizado originalmente para discos giratorios, para lo cual todos estos números serían significativos.

Ahora le dice que hay 16 sectores por “cluster”. Esto es bastante importante, porque los punteros en la tabla de asignación se refieren a grupos, no a sectores. La razón de esto es que a medida que los discos duros crecen, el número de sectores de 512 bytes excede la capacidad de la FAT para señalarlos, por lo que se abordan en bloques. En esta unidad, que tiene más de 31 millones de sectores, el archivo más pequeño de un solo byte todavía ocupa 16 sectores u 8k. Los grupos están numerados en orden numérico y se nos dice que el primer grupo del directorio raíz es el número 2; sin embargo, el grupo 2 no tiene 32 sectores desde aquí. Cluster 2 es el inicio del área de datos del usuario y es especial. No hay clúster 1.

Se nos dice que hay dos copias de la tabla de asignación de archivos, esto es normal, y cada copia ocupa 15320 sectores. Ambos siempre se actualizan cuando se modifica un archivo. Si uno de ellos se corrompe, se puede corregir del otro. Si ambos se corrompen, se pierden todos los datos del disco.

Nos dicen que hay 2128 “sectores reservados”: no pregunte para qué están reservados, aunque este sector que estamos leyendo es uno de ellos. El área FAT sigue inmediatamente a los sectores reservados, por lo que ahora sabemos dónde está. Al sumar todo esto, sectores reservados, más dos veces los sectores gordos, llega al número de sector para el Cluster 2 (no hay Cluster 1, no pregunte). En este caso, es 32768, lo cual no creo que sea una coincidencia: el número de sectores ocultos probablemente fue elegido para producir este bonito número redondo. De todos modos, ahí es donde encontramos el directorio raíz. En el directorio raíz encontramos el archivo que queremos cargar o encontramos un subdirectorio (parte de la ruta) que tenemos que abrir como archivo y buscar el nombre del archivo u otro subdirectorio si la ruta es larga. puede ver que esto puede ser un proceso muy complicado, hasta que finalmente lleguemos a la entrada del directorio que contiene el primer número de clúster, que usamos para recuperar los datos.

Así es como se ve parte de la tabla FAT. Tenga en cuenta la secuencia ascendente de números de 32 bits (little-endian, hexdecimal): esta es una secuencia de números de clúster utilizados por un solo archivo grande.

La CPU no hace tal cosa. La mayoría de los BIOS siguen el perfil UEFI ‘heredado’ y buscan un sector de arranque en el sector 0, pero no solo la HD es más sofisticada que las bobinas llenas de bloques, sino también los primitivos PCIe R3.x, MPCIx, SCSI, SATA y otros modelos de controladores . Es posible que desee considerar estándares de disco, por ejemplo, mirando los estándares de Amazon S3 y los estándares de Fibre Channel e Infiniband para varios tipos de almacenamiento y esquemas. Para validar los controladores primitivos, el bloque SATA y de lo contrario, tiene algunas construcciones de sistema operativo y sus API (systemd et al.) Y, como mínimo, los sistemas de archivos que toma el sistema operativo, por ejemplo, NTFS, XFS, etc. más cualquier extensión como RTOS o SELinux eso puede aplicarse; ese sistema de archivos probablemente contenga gran parte de su respuesta en sí mismo, pero debe esperar que el sistema de archivos haga parte de la información adecuada correspondiente para el acceso al disco o las devoluciones de llamada QT u OMB, y la aplicación que usa los datos para hacer el resto.

Por ejemplo; un programa puede desear leer / etc / hosts y solicitar una transmisión de 8 bits.
El sistema operativo puede responder que tiene un flujo de formato SPDY muy agradable con ese nombre y señalar algunos metadatos sobre el chino tradicional que está viendo allí.
El programa probablemente debería rechazarlo (porque SPDY se está volviendo obsoleto) y verificar cualquier indicador de excepción de seguridad devuelto, luego volver a intentarlo en cualquier otra línea lógica (preguntando por UTF8 y así sucesivamente) un número finito de veces, y aceptar lo que le gusta y aún Todavía lanzamos excepciones a cosas como tamaños de archivo ridículos, tipos mixtos en los que no está planeando, etc.

Los discos duros se abordan por sector, no por byte. Un sector tiene 512 bytes en modo heredado y 4096 bytes si el modo heredado está deshabilitado. En un DVD, 1 sector tiene 2048 bytes.

El HDD está realmente fragmentado, por lo que cuando accede a un archivo, en realidad se encuentra dentro de un archivo muy pequeño que contiene un árbol completo donde se almacena toda la información.

Entonces, cuando hace clic en un determinado archivo y le pide que se abra, la CPU navegará a ese árbol de HDD y enviará una solicitud para ese archivo. El HDD luego encontrará la ubicación donde almacenó todas esas partes fragmentadas y lo envió de vuelta a la CPU.

Cuando formatea su HDD, ese archivo se descarta. Todos los datos aún están intactos en su disco. Todo está revuelto y fragmentado sin una forma fácil de volver a armarlo.

Creo que quien encuentra la información del disco duro es el sistema operativo, no la CPU.

El fabricante incrusta la información del disco duro en el firmware.