CLASIFICACIÓN DE LA ASIGNACIÓN INDEXADA
Esquema Enlazado:
Un bloque índice normalmente ocupa un bloque
de disco; por tanto, se puede leer y escribir directamente por sí solo. Para
manejar archivos grandes, podríamos enlazar varios bloques índices. Por
ejemplo, un bloque índice podría contener una cabecera pequeña con el nombre
del archivo y las primeras 100 direcciones de bloques de disco. La siguiente
dirección (la última palabra del bloque índice) es mil (si el archivo es
pequeño) o un puntero a otro bloque índice (si el archivo es grande).
Índice Multinivel:
Una variante de la representación enlazada es
usar un bloque índice de primer nivel que apunte a un conjunto de bloques
índice de segundo nivel, que a su vez apuntan a los bloques de disco. Para
acceder a un bloque, el sistema operativo usa el índice de primer nivel para
encontrar un bloque índice de segundo nivel, y ese bloque para hallar el bloque
de datos deseado. Este enfoque podría extenderse a un tercer o cuarto nivel,
dependiendo del tamaño máximo de archivo deseado. Con bloques de 4096 bytes,
podríamos guardar 1024 punteros de cuatro bytes en un bloque índice. Dos
niveles de índices permitirían apuntar a 1,048/576 bloques de datos, con lo que
un archivo podría tener hasta cuatro gigabytes.
Esquema Combinado:
Otra alternativa, que se usa en el sistema BSD
UNIX, es guardar los primeros, digamos, 15 punteros del bloque índice en el
bloque índice (o i-nodo) del archivo. (La entrada de directorio apunta al
i-nodo). Los primeros 12 de estos punteros apuntan a bloques directos; es
decir, contienen direcciones de bloques que contienen datos del archivo. Así,
los datos de archivos pequeños (de no más de 12 bloques) no necesitan un bloque
índice aparte. Si el tamaño de bloque es de 4K, es posible acceder directamente
a hasta 48K de datos. Los siguientes tres punteros apuntan a bloques
indirectos. El primer puntero de bloque indirecto es la dirección de un bloque
indirecto simple: un bloque índice que no contiene datos, sino las direcciones
de bloques que sí contienen datos. Luego viene un puntero a un bloque indirecto
doble, que contiene la dirección de un bloque que contiene las direcciones de
bloques que contienen punteros a los bloques de datos reales. El último puntero
contendría la dirección de un bloque indirecto triple. Con este método, el
número de bloques que es posible asignar a un archivo excede la cantidad de
espacio que puede direccionarse con los punteros de archivo de cuatro bytes que
usan muchos sistemas operativos.
Un puntero de archivo de 32 bits sólo alcanza para 2
Exp.32 bytes, o 4 gigabytes.
En la figura se muestra una i-nodo.
Los esquemas de asignación indexada exhiben algunos
de los mismos problemas de desempeño que la asignación enlazada. En términos
específicos, los bloques índice se pueden colocar en un caché en la memoria,
pero los bloques de datos podrían estar dispersos por toda una partición.
No hay comentarios:
Publicar un comentario