Mantenimiento al sistema de archivos

Con las limitaciones que existen en el espacio de los discos duros es necesario reutilizar este espacio para que sea utilizado por nuevos archivos, existen dispositivos que solo permiten una escritura en cualquier sector, por lo que no es posible su reutilización. En los discos duros el sistema mantiene una lista de espacio libre en la que registra todos los bloques del disco que están libres (no asignados a algún archivo o directorio).

Para crear un archivo buscamos en la lista de espacio libre la cantidad de espacio requerido, y asignamos dicho espacio al nuevo archivo. Este espacio se remueve después de la lista de espacio libre.

Cuando se borra un archivo, su espacio en disco se agrega a la lista de espacio libre. La lista de espacio libre, a pesar de su nombre, podría no estar implementada como una lista. La lista de espacio libre se implementa de la siguiente forma:

1. Vector de bits. Cada bloque se representa mediante 1 bit. Si el bloque está libre, el bit es 1; si el bloque está asignado, el bit es 0. La principal ventaja de este enfoque es que es sencillo y eficiente encontrar el primer bloque libre, o n bloques libres consecutivos en el disco, muchas computadoras incluyen instrucciones para la manipulación de bits que pueden usarse eficazmente para este fin. Por ejemplo la familia Intel, a partir del procesador 80386, y la familia Motorola, desde el procesador 68020.

2. Lista enlazada. Consiste en enlazar todos los bloques libres del disco, manteniendo un apuntador al primer bloque libre en una localidad especial en el disco y colocándolo en caché en memoria. Este primer bloque contiene un apuntador en el siguiente bloque libre en el disco, y así sucesivamente.

Sin embargo, este esquema no es eficiente; para recorrer la lista, ya que se debe leer cada bloque, lo cual requiere una cantidad considerable de tiempo de E/S. Por lo general, el sistema operativo necesita sólo un bloque libre para poder asignar dicho bloque a un archivo, por lo que se utiliza el primer bloque en la lista de bloques libres.

3. Agrupación. Una modificación del enfoque de la lista de bloques libres consiste en almacenar las direcciones de n bloques libres en el primer bloque libre. Los primeros n 1 de estos bloques están efectivamente libres. El bloque final contiene las direcciones de otros n bloques libres, y así sucesivamente.

La importancia de esta implementación es que se pueden encontrar rápidamente las direcciones de un gran número de bloques libres, a diferencia del enfoque estándar de lista enlazada.

4. Conteo. Consiste en aprovechar el hecho de que, generalmente, varios bloques contiguos pueden ser asignados o liberados de manera simultánea, particularmente cuando se asigna espacio con el algoritmo de asignación contigua o mediante agrupamientos.

Así, en lugar de mantener una lista de n direcciones de disco libres, puede mantener la dirección del primer bloque libre y el número n de bloques contiguos libres que siguen al primer bloque. Cada entrada en la lista de espacio libre consiste entonces en una dirección de disco y una cuenta.

Aunque cada entrada requiere más espacio del que utilizaría una dirección de disco sencilla, la lista global será más corta, siembre y cuando la cuenta sea generalmente mayor que 1.

Se deben de considerar también los siguientes aspectos:

– La forma de almacenamiento de archivos y directorios.
– La administración del espacio en disco.
– La forma de hacerlo de manera eficiente y confiable.

Se deben tener presentes los siguientes problemas que ocasiona la “fragmentación” creciente del espacio en el disco duro:

Ocasiona problemas de performance al hacer que los archivos se desperdiguen a través de bloques muy dispersos.

Una técnica para aliviar el problema de la “fragmentación” consiste en realizar periódicamente:

Condensación”: se pueden “reorganizar” los archivos expresamente o automáticamente según algún criterio predefinido.

Recolección de basura o residuos”: se puede hacer fuera de línea o en línea, con el sistema activo.

Fuente: Apuntes de la materia Sistemas Operativos Multiusuario de la FCA – UNAM