educación, informática y demás

Clases de informática, Sistemas de ficheros, Sistemas operativos

Sistemas de ficheros. FAT32

Los sistemas operativos implementan los directorios como ficheros especiales. Se trata de un tipo de fichero que contiene información acerca de los ficheros y directorio que contiene. Además, almacena información sobre sí mismo y sobre su directorio padre.

En los casos prácticos de simulación de sistemas de ficheros FAT32 vamos a representar los directorios de la siguiente forma:

Sabemos que todo sistema de ficheros jerárquico tiene al menos un directorio raíz. Este ser´`a el punto de partida que utilice el sistema operativo para poder navegar por todos los ficheros almecanados en este sistema de ficheros.

Si los ficheros se van creando en el directorio raíz, se añade una entrada para cada fichero en el directorio raíz, junto con el bloque inicial, el primer bloque. El resto de bloques en orden de cada fichero estará almacenado en la FAT.

De esta forma, gracias al fichero que contiene el directorio raíz tenemos acceso al resto de ficheros y directorios en la jerarquía de directorios del sistema de ficheros en el que nos encontramos.

Ejercicio 1

Dada la siguiente FAT trata de determinar en orden los bloques asignados a cada uno de los ficheros almacenados en el directorio raíz.

Solución

Tenemos la información en el directorio raíz, recuerda no es más que un fichero especial que almacena información sobre los ficheros que contiene. Este directorio aparece en todos los sistemas de ficheros como el primer directorio, por eso siempre podemos acceder a él directamente.

Consultamos la información del directorio ra´íz. Si miramos la entrada . que hace referencia a él mismo apunta al bloque 0. Si vamos a la FAT el bloque 0 no tiene bloque siguiente. Por tanto, el directorio raíz tan solo ocupa el bloque 0.

Hay una entrada para el directorio padre, como en todos los directorio, del directorio raíz. El directorio raíz es el único directorio en la jerarquía de directorios que no tiene directorio padre. Su directorio padre es él mismo. Por eso, el bloque asociado a .. es 0.

El fichero F1 comienza en el bloque 1. Esto lo leemos en el directorio que lo contiene. Ahora nos vamos a la FAT y consultamos cuál es el bloque siguiente del bloque 1. El 5 es el siguiente. Consultamos el siguiente del 5 que es el 7 y consultamos el siguiente del bloque 7, que es NULL. Esto significa que no hay bloque siguiente, que el bloque 7 es el último bloque asignado a este fichero. De esta forma el fichero \F1 tiene los bloques 1, 5 y 7 en este orden.

Si continuamos así con todos los ficheros obtenemos la siguiente información:

  • Directorio \ – 0
  • Fichero \F1: 1,5,7
  • Fichero \F2: 2,3,6
  • Fichero \F3: 4
  • Fichero \Leeme.txt: 8 y 9

De esta forma utilizamos la información del directorio para saber cuál es el bloque inicial de cada fichero y la FAT para saber qué bloques y en qué orden componen al fichero.

Ejercicio 2

Dada la siguiente información sobre un sistema de ficheros de tipo FAT, trata de determinar en orden los bloques asignados a cada uno de los ficheros y directorios mostrados.

Ejemplo de sistema de ficheros de tipo FAT con directorios y ficheros.

Solución

Resultado de los bloques de cada fichero.

Si seguimos la información del primer bloque de cada fichero, que está almacenado en el directorio junto con el nombre del fichero, en la FAT podemos obtener la información completa de los bloques que tiene asignado cada fichero del sistema de ficheros.

Ejercicio 3

Dada la siguiente información sobre un sistema de ficheros de tipo FAT, vamos a realizar las siguientes operaciones en orden:

  1. Borramos el fichero \educatica\apuntes.pdf
  2. Añadimos al fichero \web.html un nuevo bloque
  3. Añadimos al fichero \educatica\hola.bat un nuevo bloque
  4. Creamos un nuevo fichero llamado leeme.txt con un bloque el directorio raíz.
Ejemplo de sistema de ficheros de tipo FAT con directorios y ficheros.

Para borrar el fichero apuntes.pdf tendremos que limpiar la entrada del fichero en el directorio en el que esté, en este caso en el directorio \educatica. Además, tendremos que marcar como libres los bloques ocupados por dicho fichero en la FAT.

Ahora el primer bloque libre será el 2.

«Añadimos al fichero \web.html un nuevo bloque». El primer bloque libre será el bloque 2.

«Añadimos al fichero \educatica\hola.bat un nuevo bloque»

«Creamos un nuevo fichero llamado leeme.txt con un bloque el directorio raíz.»

Así quedaría la FAT en este sistema de ficheros.

Ejercicio 4

Dada la siguiente información sobre un sistema de ficheros de tipo FAT.

  1. Determina qué bloques pertenecen a cada fichero.
  2. Soluciona los ??? en los directorios.
  3. Borramos el fichero \autoexec.bat
  4. El fichero \users\marinapg\hola.bat crece dos bloques
  5. Creamos un fichero con dos bloques en \users\marinapg\index.html.
  6. El fichero \users\marinapg\hola.bat crece dos bloques

Solución

Determina qué bloques pertenecen a cada fichero

Para determinar que bloques pertenecen a cada fichero y directorio necesitamos contar con la información almacenada en cada directorio del sistema.

En un sistema real, el sistema operativo parte del directorio raíz. A partir de la información almacenada en el directorio ra´íz podemos obtener información de todos los ficheros guardados en ese sistema de ficheros.

Comencemos por el directorio raíz.

Según esta información, sabemos que el propio directorio raíz comienza en el bloque 0. Si nos vamos a la tabla FAT podremos ver que el bloque 0 no tiene bloque siguiente, puesto que el apuntador a siguiente bloque en la tabla para el bloque 0 apunta a NULL.

Por tanto el directorio \ tan solo tiene el bloque 0.

El fichero o directorio \Windows comienza por el bloque 1

Siguiente fichero o directorio \users.

Está compuesto solo por el bloque 2.

Vamos a analizar el fichero \autoexec.bat.

Ya hemos terminado con los bloques de cada fichero o directorio que están dentro del directorio \. Ahora continuamos analizando el directorio \Windows.

Primero vamos a resolver los ???. Sabemos que la entrada . debería indicar el primer bloque del propio directorio. El caracter . hace referencia al propio directorio. ¿Cuál es el primer bloque de este directorio? La información la tenemos en el directorio raíz que es su directorio padre.

Ahora solucionamos el directorio padre, que es el directorio raíz, cuyo bloque es el 0.

Segumimos con el directorio \users y todo su contenido

Borramos el fichero \autoexec.bat

Para borrar un fichero, primero tenemos que limpiar los bloques que ocupa el fichero en la FAT marcándolos como bloques libres. Después borramos la entrada del fichero en el directorio que lo contiene.

¿Qué bloques tiene asignados \autoexec.bat? Los bloques 3, 4, 10, 5. En la FAT marcamos estos bloques como libre. El sistema operativo comenzará a recorrer los bloques comenzando por el primero gracias a la información almacenada en el directorio marcándolos como libres.

El fichero \users\marinapg\hola.bat crece dos bloques

Analizamos los bloques asitgnados a hola.bat, porque necesitamos conocer cuál es el último bloque de dicho fichero. Va a crecer en dos bloques buscamos los dos primeros bloques libres: 3 y 4.

Ahora, lo que tenemos que hacer es escribir como siguiente bloque del bloque 19 el bloque 3 y siguiente del 3 el 4. Por último, ponemos como siguiente del bloque 4, NULL, porque no hay más bloques.

Creamos un fichero con dos bloques en \users\marinapg\index.html.

Los dos primeros bloques libres son el 5 y el 10. El primer bloque libre era el cinco, así que se lo asignamos al fichero en la entrada del directorio \users\marinapg. Después en la tabla, actualizamos la información de los bloques asignados, primero el bloque 5 y después el bloque 10.

El fichero \users\marinapg\hola.bat crece dos bloques

Como crece dos bloques, tenemos que buscar los dos primeros bloques libres que serán: 21 y 22. Ahora actualizamos la información de bloques siguientes en la tabla FAT. Tenemos que buscar el último bloque asignado al fichero hola.bat y hacer que apunte al bloque 21.

Actualizamos la información…

Resumen

Si nos fijamos esta información es con la que trabaja el sistema operativo para saber qué bloques tiene asignado cada fichero y en qué orden. La información del sistema de ficheros, que se almacena en la partición que sea, entre la que está la FAT nos indica los bloques siguientes de un fichero en orden. El primer bloque de cada fichero nos lo da el directorio en el que está almacenado el fichero.

El sistema de ficheros sabe dónde está el directorio ráiz, a partir de este directorio podemos llegar a todos los ficheros y directorios almacenados en ese sistema de ficheros.

Dejar una respuesta