martes, 4 de febrero de 2014

Asignación Enlazada



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