ASIGNACION DE ESPACIO
Ant: Planificación
Arriba: Sistema de Archivos
Sig: Métodos de acceso
El subsistema de archivos se debe encargar de localizar espacio libre en los medios de almacenamiento para guardar archivos y para después borrarlos, renombrarlos o agrandarlos. Para ello se vale de localidades especiales que contienen la lista de archivos creados y por cada archivo una serie de direcciones que contienen los datos de los mismos. Esas localidades especiales se llaman directorios. Podemos modelar el disco duro como una secuencia de bloques, de 0 a N-1, de tamaño fijo (usualmente, de 512 bytes), a los cuales tenemos acceso directo,
pero, por el movimiento del brazo es más caro leer dos bloques separados que dos
bloques contiguos.Para asignarle espacio a los archivos existen ciertos criterios generales que se describen enseguida.
* Asignación contigua: Cada directorio contiene la los nombres de archivos y la dirección del bloque inicial de cada archivo, así como el tamaño total de los mismos. Por ejemplo, si un archivo comienza en el sector 17 y mide 10 bloques, cuando el archivo sea accesado, el brazo se moverá inicialmente al bloque 1 7 y de ahí hasta el 27 Si el archivo es borrado y luego creado otro más pequeño, quedarán huecos inútiles entre archivos útiles, lo cual se llama fragmentación externa.
* Asignación encadenada: Con este criterio los directorios contienen los nombres de archivos y por cada uno de ellos la dirección del bloque inicial que compone al archivo. Cuando un archivo es leído, el brazo va a esa dirección inicial y encuentra los datos
iniciales junto con la dirección del siguiente bloque y así sucesivamente. Con este criterio no es necesario que los bloques estén contiguos y no existe la fragmentación externa pero en cada "eslabón' de la cadena se desperdicia espacio con las direcciones mismas. En otras palabras, lo que se crea en el disco es una lista ligada.
* Asignación con índices (indexada): En este esquema se guarda en el directorio un bloque de índices para cada archivo, con apuntadores hacia todos sus bloques constituyentes, de mabnera que el acceso directo se agiliza notablemente, a cambio de sacrificar varios bloques para almacenar dichos apuntadores. Cuando se quiere leer un archivo o cualquiera de sus partes, se hacen dos accesos: uno al bloque de índices y otro a la dirección deseada. Este es un esquema excelente para archivos grandes pero no para pequeños, porque la relación entre bloques destinados para índices respecto a los asignados para datos es incosteable.
* Nodos-I. El último método consiste en mantener jutos los punteros de cada archivo, en
una tabla, asociada al archivo, y que se guarda en un bloque como cualquiera
(esta tabla es análoga a la tabla de páginas). Además, en ese bloque se puede
guardar información de los otros atributos del archivo. El directorio sólo
contiene un puntero al bloque que contiene la tabla.
Problema: ¿y si el archivo es grande y su tabla no cabe en un solo bloque?
Soluciones: lista ligada de bloques, índice multinivel (como en las tablas de
páginas), o un esquema combinado, que es lo que se usa en Unix:
Supongamos que en un bloque, aparte del espacio para los atributos, queda
espacio para 32 punteros a otros bloques. Entonces los 29 primeros se usan como
se ha dicho, es decir, apuntan a bloques que contienen datos del archivo. Pero
los tres últimos apuntan a bloques indirectos. El antepenúltimo apunta a
un bloque indirecto simple, es decir a un bloque que contiene punteros a
bloques con datos. El penúltimo apunta a un bloque indirecto doble, es
decir a un bloque que contiene punteros a bloques con punteros a bloques con
datos. El último apunta a un bloque indirecto triple, es decir...
adivinen. ¿Hasta qué tamaño de archivo soporta este sistema?
Ventajas.
Prácticamente lo único que hay que registrar en
el directorio es un puntero al nodo-i. Acceso aleatorio rápido para archivos
pequeños. Bajo sobrecosto fijo (no hay FAT, entradas en directorios pequeñas).
Desventajas.
Relativamente complejo. Mayor sobrecosto
variable: cada archivo, por pequeño que sea, necesita al menos dos bloques.
Acceso aleatorio más complicado para archivos grandes (en todo caso, los bloques
con índices pueden guardarse en memoria para agilizar el acceso).
Cada uno de estos método tiene ventajas y desventajas. Por eso, algunos
sistemas (como RDOS de Data General), ofrecen varios (se escoge uno al crear el
archivo). Otra posibilidad es usar asignación contigua para archivos pequeños, e
indexada para grandes. Lo usual es, en todo caso, uno sólo para todos los
archivos.
En general, se usan métodos mucho más complejos que los que hemos visto. La
enorme disparidad en velocidad entre la CPU y el disco justifica usar algoritmos
complejos (incluso inteligencia artificial), que utilicen mucha CPU para ahorrar
un par de movimientos del brazo.
Windows NT administra el contenido del disco a través de una base de datos
relacional, y utiliza el modelo de transacciones para asegurarse que las
modificaciones son atómicas y no se produzcan inconsistencias.
Ant: Planificación
Arriba: Sistema de Archivos
Sig: Métodos de acceso