469 a la 478 - Gestión Almacenamiento Secundario

En memoria secundaria, un archivo consta de un conjunto de bloques. El sistema operativo o el sistema de gestión de archivos es responsable de la asignación de los bloques a archivos. Esto suscita dos cuestiones    sobre la gestión. En primer lugar, debe asignarse el espacio de memoria secundaria a los archivos y, en   segundo lugar, es necesario guardar constancia del espacio disponible para asignar. 

Esta sección va a comenzar observando las alternativas de asignación de archivos en un solo disco. La  gestión del espacio libre se abordará más tarde. Por último, se examinarán las técnicas de almacenamiento de archivos sencillos en varios discos.


Asignación de Archivos

En la asignación de archivos surgen varias cuestiones:

1.  Cuando se crea un nuevo archivo, ¿se asigna de una sola vez el máximo espacio que necesite?

2. El espacio se asigna a un archivo en forma de una o más unidades contiguas, que se llaman secciones. El tamaño de una sección puede variar desde un único bloque a un archivo entero. ¿.Qué tamaño de sección debería usarse para asignar archivos?

3. ¿Qué tipo de estructura de datos o tabla se usará para guardar constancia de las secciones asignadas a un archivo? Dicha tabla se conoce normalmente como tabla de asignación de archivos (FAT).

A continuación se examinan estas cuestiones:


Asignación Previa frente a Asignación Dinámica

Una política de asignación previa requeriría que el tamaño máximo de un archivo se declarase en el momento de crearlo. En algunos casos, como al compilar los programas, al crear archivos de datos de resumen  o  al transferir un archivo desde otro sistema por una red de comunicaciones, este valor puede estimarse. Sin embargo, para muchas aplicaciones es difícil, si no imposible, estimar de manera fiable el posible tamaño máximo del archivo. En esos casos, los usuarios y programadores de aplicaciones se inclinarían  por  sobrestimar el tamaño del archivo de forma que no se quedaran sin espacio.


Tamaño de Sección

La segunda cuestión de la lista anterior es la del tamaño de sección asignada a los archivos. En un extremo, se puede asignar una sección suficientemente grande para guardar el archivo entero. En el otro extremo, se    asigna el espacio en disco de bloque en bloque. Al elegir el tamaño de sección, debe haber un compromiso relativo a la eficiencia desde el punto de vista de un solo archivo trente al del sistema global. [WEID87] considera los siguientes cuatro elementos en esta elección:

1.       La    contigüidad   del   espacio    aumenta    el    rendimiento, especialmente para las operaciones de  Recuperar Siguiente y. sobremanera, para ejecutar las transacciones de un sistema orientado a transacciones.

2.  Disponer de un gran número de secciones pequeñas aumenta el tamaño de las tablas necesarias para gestionar la asignación de información.

3.  Disponer de secciones de tamaño fijo —por ejemplo, bloques— simplifica la reasignación del espacio.

4.  Disponer de secciones de tamaño variable o secciones pequeñas de tamaño fijo minimiza la pérdida de espacio no usado provocada por la sobreasignación.

Por supuesto, estos elementos interactúan entre sí y deben considerarse en conjunto. Como resultado se tienen  dos opciones principales:

   Secciones contiguas variables y grandes: Esta opción ofrecerá un rendimiento mejor. El tamaño variable  evitará la pérdida y las tablas de asignación de archivos serán pequeñas. Sin embargo, el espacio es difícil de reutilizar.

  Bloques: Las secciones fijas y pequeñas ofrecen una flexibilidad mayor. Se pueden necesitar tablas grandes o estructuras complejas para su asignación. La contigüidad se abandona; los bloques se asignan a medida que se necesiten.

Cualquier opción es compatible con la asignación previa o con la asignación dinámica. En el primer caso, se asigna previamente a los archivos un grupo contiguo de bloques. Esto elimina la necesidad de una tabla de asignación de archivos; todo lo que se necesita es un puntero al primer bloque y el número de bloques asignados.  En el segundo caso, todas las secciones necesarias son asignadas de una vez. 


Con secciones de tamaño variable, hay que preocuparse de la fragmentación del espacio libre. Esta cuestión  surgió cuando se estudiaba la memoria principal particionada en el capítulo 6. Las siguientes son algunas  estrategias alternativas posibles:

  Primer hueco (first fit): Elegir el primer grupo de bloques contiguo sin usar de tamaño suficiente.

  Mejor hueco (best fit): Elegir el grupo más pequeño sin usar que tenga tamaño suficiente.

  Hueco mas cercano (nearest fit): Elegir el grupo sin usar de tamaño suficiente que este más cercano al asignado previamente al archivo para aumentar la cercanía.

No está claro qué estrategia es la mejor. La dificultad de modelar estrategias alternativas está en que intervienen muchos factores, incluyendo los tipos de archivo, la pauta de los accesos a archivo, el  grado  de  multiprogramación, otros factores de rendimiento, la cache de disco, la planificación del disco, etc.


Métodos de Asignación de Archivos

Después de ver la discusión entre asignación previa y dinámica y el tamaño de sección, se está en posición de considerar métodos específicos de asignación de archivos. Son de uso común 3 métodos: contiguo, encadenado e indexado. 




Con asignación contigua, cuando se crea un archivo se le asigna un único conjunto contiguo de bloques, ésta es una estrategia de asignación previa que emplea secciones de tamaño variable. La tabla de asignación de archivos necesita sólo una entrada por cada archivo, que muestre el bloque de comienzo  y  la longitud del archivo. La  asignación contigua es la mejor desde el punto de vista de un archivo secuencial individual. Se pueden traer múltiples bloques de una vez para mejorar el rendimiento en los tratamientos secuenciales. 



En el extremo opuesto a la asignación contigua está la asignación encadenada  Normalmente, la asignación se hace con bloques individuales. Cada bloque contendrá un puntero al siguiente bloque de la  cadena.  La tabla de asignación de archivos necesita de nuevo una sola entrada por cada archivo que muestre el bloque de comienzo y la longitud del archivo. 



La asignación indexada trata muchos de los problemas de las asignaciones contigua y encadenada. En este    caso, la tabla de asignación de archivos contiene un índice separado de un nivel para cada archivo; el índice posee una entrada para cada sección asignada al archivo. Normalmente, los índices no están almacenados físicamente como parte de la tabla de asignación de archivos. 

 


Gestión del Espacio Libre

Al igual que el espacio asignado a los archivos, se debe gestionar el espacio que no queda asignado actualmente a ningún archivo. Para llevar a cabo cualquiera de las técnicas de asignación que se han descrito, es necesario saber qué bloques del disco están disponibles. Por tanto, hace falta una tabla de asignación de disco además de una tabla de asignación de archivos. Tres técnicas son de uso común: las tablas de bits, las secciones libres encadenadas y la indexación.


Tablas de Bits 
El método de las tablas de bits utiliza un vector que contiene un bit por cada bloque del disco. Cada entrada igual a O corresponde a un bloque libre y cada uno corresponde a un bloque en uso.  también tienen la ventaja de que es relativamente fácil encontrar un bloqueo un grupo contiguo de bloques libres. Las tablas de bits trabajan bien con cualquiera de los métodos de asignación de archivos discutidos. Otra ventaja es que puede ser tan pequeña como sea posible y puede mantenerse en memoria principal. Esto evita la necesidad de traer la tabla de asignación de disco a memoria cada vez que se realice una asignación.


Secciones libres encadenadas
Las secciones libres pueden encadenarse juntas mediante un puntero y un valor de longitud en cada sección libre. Este método tiene un gasto insignificante porque no hay necesidad de tabla de asignación de disco, sino simplemente un puntero al comienzo de la cadena y la longitud de la primera sección. Este método sirve para todas las técnicas de asignación de archivos. Si la asignación se realiza por bloques, solamente hay que elegir  el bloque libre del principio de la cadena y  retocar el primer puntero o el valor de longitud. 


Indexación
El método de indexación trata el espacio libre como si fuera un archivo y utiliza una tabla  índice como la descrita en el apartado "Métodos de Asignación de Archivos". Por rayones de eficiencia, el índice debe trabajar con secciones de tamaño variable  mejor que  con bloques.  De este modo, habrá una entrada en la tabla para cada sección libre del disco. Este procedimiento ofrece un soporte eficaz para todos los métodos de asignación de archivos.

 


Comentarios