Google

   

Cómo se guarda un archivo en el disco duro

Esta es una pregunta importante para entender el funcionamiento del disco duro.

Vamos a estudiarlo en el sistema de archivos más simple que hay: el sistema FAT o FAT 32. Introduciremos un poco posteriormente el funcionamiento en el sistema NTFS.

Vamos a ceñirnos a un caso típico de un disco de 8 GB, formateado en FAT32. La estructura de un disco en FAT 32, consta de un directorio principal de tamaño fijo, por tanto limitado a un número máximo de archivos ya que un directorio o carpeta no es nada mas que un archivo.

Igualmente consta de dos tablas llamadas tablas FAT (File Access Table). Cada tabla, consta en el ejemplo de un disco de 8GB, de 1.048.000 elementos cada uno de 4 Bytes (FAT 32). Cada elemento de esta tabla referencia a un 'cluster' (agrupación de sectores) del disco. En un disco de 8GB, cada cluster es de 8192 bytes (es decir, de 16 sectores de 512 bytes).

Estas cifras pueden verse en el caso real de nuestro disco, si ejecutamos el comando chkdsk.

¿Qué hemos querido decir con las cifras anteriores?. Bien, pues que el primer elemento de esa tabla de 1.048.000 elementos, apunta (o referencia) al primer cluster de datos, el segundo elemento, al segundo cluster de datos, y así sucesivamente. Evidentemente hay unos elementos reservados al principio de dicha tabla para referencias a los clusters ocupados por el directorio raiz del disco.

Se define que si un elemento de la tabla contiene en binario una determinada marca (el hexadecimal xFFFFFFFF, es decir, todo a 'unos' binarios), esto indica al sistema operativo que ese cluster del disco está libre.

Veamos ahora como se guarda un archivo:

1) El sistema operativo calcula cuantos clusters va a ocupar. Para ello, divide el tamaño del archivo entre el tamaño del cluster, y al dato obtenido le redondea a la unidad superior. Por ejemplo, si tenemos un archivo de 20.000 bytes, en nuestro ejemplo el cálculo realizado es 20000 / 8192 = 2,4414. Redondeado a la unidad superior es un 3. Por tanto nuestro archivo va a ocupar tres clusters en el disco.

2) Una vez calculado el número de clusters a ocupar, el sistema operativo, lee la FAT, buscando un cluster libre. Es decir, lee cada elemento de la FAT hasta que encuentra la 'marca' xFFFFFFFF citada anteriormente. Imaginemos que lo encuentra en el elemento 537 de la FAT. Esto le indica que el cluster 537 del disco está libre.

3) En ese cluster graba los primeros 8192 bytes del archivo, y marca el elemento 537 de la FAT con un cero (en binario).

4) Como le queda todavía datos a grabar, vuelve a leer la FAT para localizar otro elemento con la marca xFFFFFFFF. Imaginemos que es el elemento numero 612. Por tanto, le indica que el cluster 612 del disco está libre. Ahora va a ese cluster, y graba los siguiente 8192 bytes del fichero. Igualmente ahora, va a la FAT, y en 612, graba un cero. Hasta aquí, todo es igual que cuando ha grabado el primer cluster del archivo. Pero en este caso, además de lo anterior, el sistema 'recuerda' cual es el elemento de la FAT ultimo grabado (el 537), y en ese elemento, le pone ahora el número 612 (del cluster actual).

5) Queda todavía por grabar un cluster. Bien, volvemos a repetir los cálculos: se vuelve a leer la FAT para localizar otro cluster libre (xFFFFFFFF). Imaginemos que es el elemento 1020.

6) En ese cluster graba por fin los últimos 8192 bytes del fichero, y marca el elemento 1020 de la FAT con un cero (en binario). Ahora va al elemento anterior (el 612) y allí graba el número 1020.

7) Por último, guarda en el directorio raiz del disco el nombre de archivo, y además allí se guarda la fecha, el tamaño, y lo que es más importante: el número del primer elemento de la FAT que apunta al archivo guardado, es decir: 537.

Bien, después de toda esta historia, veamos como está ahora nuestro archivo en disco:

· A nivel del directorio principal, tenemos su nombre, y un número mágico: 537. Esto indica que el archivo empieza en el cluster 537. Igualmente, el elemento de la FAT 537, contiene el segundo número mágico: 612. Esto indica que el siguiente cluster del archivo es el número 612. Y además, el elemento de la FAT 612, contiene el siguiente número mágico: 1020. Esto indica que el tercer cluster del archivo está en el cluster 1020. Y precisamente, el elemento 1020 de la FAT, si repasamos la secuencia anterior de grabación, vemos que contiene un cero: esto indica que ya no queda nada más que hacer. Es decir, acabamos de leer los tres clusters del disco que contienen los datos de nuestro archivo.

Sencillo ¿no?......

· Lo anterior, nos debe hacer meditar en un tema muy importante: Cualquier cosa que hagamos para leer o grabar un archivo, en principio implica una sucesión de lecturas en el disco. Además como la FAT está al principio del disco, esto implicará que la cabeza lectora tiene que dar muchos saltos entre la FAT y el cluster de datos a leer para ir trayéndose poco a poco los datos a memoria. Y estos "saltos" de la cabeza, son saltos relativamente 'caros' en tiempos de proceso. Esto explica la conveniencia de hacer defragmentaciones periódicas del disco.

Es verdad que los sistemas operativos, intentan tener la FAT en memoria para ahorrar accesos a disco. Pero en nuestro caso, la FAT es de 1.048.000 elementos de 4 bytes, es decir, la FAT ocupa 4 Megabytes. Como hay dos FAT y el sistema cuando grabamos un archivo utiliza las dos por motivos de seguridad (es decir, una de ellas, es backup de la otra), serían en total 8 Megabytes de memoria principal de nuestra maquina, utilizados únicamente para tener la FAT y por tanto ahorrar accesos a disco. Pensemos también, que en el caso de estar grabando un archivo, una vez modificada la FAT en memoria, el sistema la intentará grabar en disco rápidamente, ya que si se pierde la actualización de la FAT, es como si hubiésemos perdido el archivo.

Este consumo de memoria por intentar realizar los accesos lo más rápido posible, empieza a ser inconveniente cuando tenemos varios discos o particiones. Por ello, cuanto más discos o particiones tengamos y estemos trabajando con ellos, debemos tener más memoria física para poder ejecutar programas, o el rendimiento de la máquina decaerá.

· NTFS es un sistema de archivos que históricamente proviene del sistema de archivos nativo de la casa Digital. Los desarrolladores de Digital son los únicos desarrolladores en el mundo que tienen derecho a "sus" patentes de desarrollo. Por tanto, si un empleado de Digital se va de la Empresa, se va también con el derecho a usar sus conocimientos y sus patentes en otro sitio. Para el desarrollo del primer NT, Bill Gates consiguió que uno de los ingenieros de Digital, dejase su empresa y fichase por Microsoft. Este sistema de archivos, mucho más robusto que el sistema FAT y que además permite definir ACL (listas de control de acceso, para seguridad), está basado en i-nodos y se sale del alcance del presente documento.

Google