ASIGNACIÓN ENLAZADA
Cada archivo es una lista ligada de bloques de
disco, en cada bloque existe un puntero que direcciona hacia el bloque
siguiente, el resto del bloque es usado para almacenar datos, de esta forma,
todos los bloques del disco pueden ser usados.
Ventajas:
Al ser una lista enlazada, sólo se necesita la
dirección del bloque inicial, los demás bloques pueden ser encontrados a partir
del primero.
No desperdicia espacio, pues no requiere dejar
espacios vacíos para ubicación, re-ubicación o el crecimiento de archivos, lo
que conlleva a un buen manejo del espacio libre.
No Produce Fragmentación externa.
Desventajas:
Solo es eficiente para archivos de acceso
secuencial, el acceso a archivo de forma aleatoria o directa es bastante lenta,
pues para leer el bloque n, se deben leer n-1 bloques antes de poder acceder al
bloque deseado, lo que conlleva muchas lecturas y por consiguiente mucho
tiempo.
Si se pierde un puntero al siguiente bloque, se
pierde acceso al resto del archivo.
Perdida de espacio en los bloques, debido a los
punteros.
Perdida de eficiencia, en la lectura datos en
múltiplos del tamaño del bloque, pues la cantidad de datos guardados ya no será
una potencia de 2 debido a los punteros, por ende la cantidad de datos que
caben en un bloque completo se deben distribuir entre 2, lo que requiere una
posterior concatenación generando un overhead debido a la copia necesaria en la
operación.
Soluciónes:
En los casos de perdida de algún puntero al bloque
siguiente, es útil implementar los bloques como listas doblemente enlazadas,
para saber en dónde se encuentran los bloques faltantes que no se pueden
encontrar.
Asignación Enlazada usando una tabla en memoria
Los problemas de este método, pueden mejorarse,
sacando los punteros de los bloques de disco y poniéndolos en una tabla ubicada
en memoria. Aquí es donde nacen los sistemas "FAT" o por sus siglas
en ingles "File Allocation Table" (Tabla de Asignación de Archivos),
usados en sistemas MS/DOS, OS2, windows 9x entre otras implementaciones en
sistemas más actuales.
Con esta organización, los bloques están
disponibles para datos por completo, el acceso aleatorio es más fácil y rápido,
pues si bien la lista aún debe ser seguida para llegar al bloque, eso se hace
en memoria y por ende no requiere lecturas adicionales de disco. Aún es posible
encontrar un archivo completo solo con la dirección del bloque inicial.
Su
principal desventaja que la tabla debe estar en memoria todo el tiempo, por
consiguiente con una cantidad grande de bloques, se requiere una tabla
proporcionalmente grande también, por lo que el uso de memoria es considerable.
Por ejemplo: con un disco de 20-GB, bloques de 1-KB, la tabla necesita 20
millones de entradas; considerando cada una de estas entre 3 a 4 bytes, la
tabla en memoria puede ocupar entre 60 a 80 MB todo el tiempo. Se podría poner
la tabla en memoria paginada, pero significaría lidiar con los problemas de la
memoria virtual además de generar tráfico de paginación.
No hay comentarios:
Publicar un comentario