Introducción: – Dado que el espacio en disco es limitado, debemos reutilizar el espacio de los archivos eliminados para archivos nuevos. Para realizar un seguimiento del espacio libre en disco, el sistema mantiene una lista de espacio libre. La lista de espacio libre registra todos los bloques de disco libres que no están asignados a algún archivo o directorio. Esta lista de espacios libres se puede implementar como una de las siguientes:
a) La lista de espacios libres de vectores de bits se implementa como un mapa de bits o un vector de bits. Cada bloque está representado por un 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 su relativa simplicidad y su eficiencia para encontrar el primer bloque libre o n bloques libres consecutivos en el disco. El cálculo del número de bloque es (Número de bits por palabra) * (número de palabras de valor 0) desplazamiento del primer 1 bit
b) Lista vinculada-Otro enfoque para la administración de espacio libre es vincular todos los bloques de disco libres manteniendo un puntero al primer bloque libre en una ubicación especial en el disco y almacenándolo en memoria caché. El primer bloque contiene un puntero al siguiente bloque de disco.
c) Agrupación: Una modificación del enfoque de lista libre consiste en almacenar las direcciones de n bloques libres en el primer bloque libre.
d) Conteo: Otro enfoque es aprovechar el hecho de que varios bloques contiguos pueden asignarse o liberarse simultáneamente cuando el espacio se asigna con el algoritmo de asignación contigua o la agrupación en clústeres.
Eficiencia y rendimiento
Los discos tienden a representar un cuello de botella importante en el rendimiento del sistema, ya que son el componente principal de la computadora más lento. Eficiencia:-El uso eficiente del espacio en disco depende en gran medida de la asignación de discos y los algoritmos de directorio en uso.
Rendimiento: – La mayoría de los controladores de disco incluyen memoria local para formar un caché integrado que es lo suficientemente grande como para almacenar pistas enteras a la vez. Una vez que se realiza una búsqueda, la pista se lee en la caché del disco comenzando en el sector debajo del cabezal del disco. El controlador de disco luego transfiere cualquier solicitud de sector al sistema operativo. Algunos sistemas mantienen una sección separada de la memoria principal para una caché de búfer donde los bloques se mantienen bajo el supuesto de que se utilizarán de nuevo. Otros sistemas almacenan en caché los datos de los archivos utilizando una caché de página. La caché de páginas utiliza técnicas de memoria virtual para almacenar en caché los datos de los archivos como páginas en lugar de como bloques orientados al sistema de archivos. El almacenamiento en caché de datos de archivos utilizando direcciones virtuales es más eficiente que el almacenamiento en caché a través de bloques de disco físicos como interfaz de acceso con memoria virtual en lugar del sistema de archivos. Varios sistemas utilizan el almacenamiento en caché de páginas para almacenar en caché tanto las páginas de proceso como los datos de los archivos. Esto se conoce como caché de búfer unificado.
Hay otros problemas que pueden afectar el rendimiento de las E/S, como si las escrituras en el sistema de archivos se producen de forma sincrónica o asincrónica. Las escrituras síncronas se producen en el orden en que el subsistema de disco las recibe y las escrituras no se almacenan en búfer. Las escrituras asíncronas se realizan la mayoría de las veces. Algunos sistemas optimizan su caché de páginas utilizando diferentes algoritmos de reemplazo dependiendo del tipo de acceso del archivo. El acceso secuencial se puede optimizar mediante técnicas conocidas como free behind y read ahead. Detrás libre elimina una página del búfer tan pronto como se solicita la siguiente página. Con read ahead, se leen y almacenan en caché una página solicitada y varias páginas posteriores.