6
ADMINISTRACION DE DISCO
6.1
CARACTERISTICAS FISICAS DE LOS DISCOS
Cada unidad de disco, puede tener varios platos de
aluminio rígido con ambas superficies recubiertas de material magnético (similar
al de las cintas).
Los discos son impulsados por un solo motor a una
velocidad de alrededor de 3600 RPMS.
Existe una cabeza de lectura/escritura muy cercana
a cada superficie de cada plato (del orden de micrones).
Cada disco se divide en pistas concéntricas y éstas
a su vez en bloques llamados sectores.
La información es grabada magnéticamente sobre la
pista que esté bajo la cabeza de lectura/escritura.
Existen unidades de discos de cabezas fijas y de
cabezas móviles.
Una unidad de cabezas fijas, tiene una cabeza por
cada pista (de cada lado de cada disco). Esto permite a la computadora cambiar
de pista a pista rápidamente; sin embargo, es muy costosa por requerir gran
número de cabezas.
Las unidades de cabezas móviles, tienen una sola
cabeza por cada superficie de los discos. Se requiere hardware para mover las
cabezas pero resulta en una unidad de más bajo costo aunque más lenta que las
de cabezas fijas.
Todas las pistas de una unidad que pueden ser accesadas
sin mover las cabezas son llamadas cilindros. Básicamente un cilindro está constituido
por la misma pista de todas las superficies de los platos. Por ejemplo, cilindro
cero puede ser todas las pistas cero de todas las superficies. (Normalmente,
todas las cabezas se mueven al mismo tiempo y a la misma posición).
El tiempo de acceso requerido para dar servicio a
una lectura/escritura es la suma de los siguientes tres tiempos:
TIEMPO DE BÚSQUEDA (Seek time). Es el tiempo requerido para que la cabeza se posicione en la
pista o cilindro apropiado. En las unidades de cabezas fijas, este tiempo se
considera cero. Algunos tiempos de discos típicos para PC’s andan alrededor
de 40 a 10 mili segundos.
TIEMPO DE LATENCIA o TARDANZA (Latency time). Una
vez posicionada la cabeza en la pista o cilindro correcto, debe esperarse hasta
que el bloque deseado rote bajo la cabeza de lectura/escritura. Es del orden
de 5 mili segundos.
TIEMPO DE TRANSFERENCIA (Transfer time). Es el tiempo
que se requiere para transferir la información entre el disco y la memoria.
Es del orden de 1 mili segundos.
DISKETTES
Los discos floppy o diskettes, son diferentes en
construcción respecto a los discos rígidos.
En un floppy, la superficie es recubierta con un material magnético duro,
tal que la cabeza de lectura/escritura pueda estar siempre haciendo contacto
con la superficie sin destruir la información.
El diskette es mucho más barato pero después de mucho
uso, el recubierto de la superficie y la cabeza se desgastan y deben ser reemplazados.
Su tiempo de acceso es mayor que el de los discos rígidos, ya que no pueden
rotar a velocidades muy altas por la fricción entre la cabeza y el disco.
Su capacidad de almacenamiento va de 100K a 1.2Mbytes
o más.
Mientras que los discos rígidos van de 5 Mbytes a
varios Gigabytes. Sus tamaños varían de 8, 5 1/4 y 3 1/2 pulgadas.
Pueden ser de uno o ambos lados, y de simple, doble
o cuádruple densidad de escritura.
TAMAÑOS TÏPICOS DE DISKETTES
·
5 ¼
2S2D Baja Densidad -
360 Kb., 40 pistas, 9 sectores.
·
5 ¼
2SHD
Alta Densidad - 1.2 Mb., 80 pistas, 15 sectores.
·
3 ½
2S2D Baja Densidad -
720 Kb., 80 pistas, 9 sectores.
·
3 ½
2SHD Alta Densidad -
1.44 Mb., 80 pistas, 21 sectores.
PASOS PARA FORMATEAR UN DISCO DURO en MSDOS / Windows.
1.- Recabar la información correspondiente a la geometría
del disco, por ejemplo, número de cabezas (platos), cilindros, sectores, capacidad
total, etc. Esto puede hacerse en la carátula del disco o en su manual correspondiente.
2.- Instalarlo físicamente (cable de control y datos,
cable de fuentes, tornillos, etc.).
Si el disco no es un maestro sino un esclavo, hay
que modificar los “jumpers” del disco (o en algunos casos de ambos) para indicar
que se trata de un esclavo.
3.- Dar de alta el disco en el set-up de la computadora
utilizando la información recabada en el paso 1. Si el disco tiene auto-identificación,
ponerlo en auto.
4.- Formatear el disco a bajo nivel. Este paso se
omite en discos duros nuevos, y solamente se da para discos con algún tipo de
problema, tal como sector de arranque dañado, demasiados sectores dañados, etc.
que no puedan ser reparados con alguna utilería de disco. El formato a bajo
nivel se hace con utilerías como el diskmanager o algunas que vienen integradas
en el set-up de la máquina. Antes de dar el formato a bajo nivel se deben especificar
algunos parámetros como el interleave (distribución de los sectores; contiguos,
1:1; terciados, 1:3; etc.), los sectores dañados (Cyl, Hd, BFI), y otros parámetros
opcionales tales como bytes /sectores, etc. Con esta información se procede
a formatear el disco, creando los sectores del disco , numerándolos y verificando
su integridad.
Nota.- Debe tenerse cuidado de que la geometría escogida
en el set-up sea exactamente la marcada en la carátula o manual del disco, pues
si se escoge una geometría de emulación (misma capacidad pero con diferente
número de cabezas, cilindros y
sectores) el disco puede dañarse.
5.- Crear las particiones del disco duro y su tabla
de particiones. Se utiliza el comando
del sistema operativo Fdisk o la utilería diskmanager. En esta etapa se especifica
si el disco duro se dividirá en varias particiones lógicas (por ejemplo una
parte para C:, otra para D:, otra para E:, etc., o incluso una parte para instalar
otro tipo de sistema operativo). Por omisión se toma todo el espacio disponible
del disco duro para una sola partición, a la cual se le asigna la letra C:.
A la partición C: se le denomina “primaria” y debe especificarse como activa
(para arranque). Para crear particiones lógicas D:, E:, etc., primero hay que
crear una partición extendida con el espacio sobrante de la partición primaria,
y después crear cada una de las particiones lógicas, especificando el espacio
que se destinará a cada una de ellas. Las particiones lógicas (D:, E:, etc.),
son tomadas por el sistema de archivos como si fueran discos duros físicos independientes.
6.- Formatear el disco a alto nivel. Esto se hace
con el comando del sistema operativo Format C: /S /V para la partición primaria,
o Format Drive: /V en caso de que sea una
partición adicional; donde “drive” corresponde a la letra asignada en
el paso anterior (D:, E:, etc.). Este procedimiento crea la FAT (tabla de asignación
de archivos) y la estructura del directorio. Para el caso de la partición primaria
(C:) también copia el sistema operativo
y lo hace “arrancable”.
6.2
PLANIFICACION DE DISCO
En los sistemas multiprogramados, los procesos generan
peticiones de lectura o escritura mucho más rápido de lo que pueden ser atendidas
por los dispositivos de almacenamiento de disco. Por esta razón, es necesario
generar colas de espera o servicio para cada dispositivo.
Muchos sistemas atienden estas peticiones en la forma
"primero en llegar, primero en ser servido" o FCFS (first comes, firt
served). Este sistema da buenos resultados cuando las peticiones no alcanzan
un volumen muy grande, además de ser una forma justa de prestar servicio. Sin
embargo, cuando el volumen de peticiones se sobrecarga, el método FCFS puede
dar como resultado tiempos de espera muy largos. Esto es debido a que varias
peticiones sucesivas pueden requerir búsquedas de cilindros no contiguos o incluso
opuestos, por ejemplo ir de un cilindro interior a uno exterior, ocasionando
búsquedas muy largas en discos de cabezas móviles.
Cuando se tienen altos volúmenes de peticiones, es
conveniente tratar de reducir los tiempos de acceso tal que pueda prestarse
un servicio más eficiente. Para esto, es necesario reordenar la cola de servicio
de acuerdo a parámetros diferentes que a los del FCFS. A estas técnicas se les
llama "planificación de disco.
Un planificador de disco, examina las direcciones de los sectores que tiene cada petición pendiente en la cola de servicio, y las reordena de tal manera que éstas puedan ser servidas con un mínimo de movimientos mecánicos.
La planificación de disco, debe intentar maximizar el número de peticiones servidas por unidad de tiempo, y minimizar el tiempo de respuesta promedio, eliminando desperdicios de tiempo al efectuar largas búsquedas.
Los dos tipos más comunes de planificación de disco
son la optimización de búsqueda y la optimización rotacional.
Debido a que los tiempos de búsqueda son mayores
que los tiempos de latencia, la mayoría de los algoritmos de planificación se
centran en optimizar el tiempo de búsqueda.
La optimización rotacional solo se utiliza bajo condiciones
de carga muy pesada, y puede ser aplicada tanto en discos de cabezas móviles
como de cabezas fijas.
6.3
OPTIMIZACION DE BUSQUEDA.
A continuación se describen los principales algoritmos
utilizados en la optimización de búsqueda:
PRIMERO EN LLEGAR, PRIMERO EN SER SERVIDO. (First
comes first served). FCFS. La primera
petición que llega es la primera en ser servida. Una petición no puede ser desplazada
por la llegada de otra petición con prioridad más alta.
Este algoritmo da un patrón de búsqueda al azar si
las peticiones se encuentran uniformemente distribuidas en el disco.
FCFS produce tiempos de respuesta aceptables cuando
se tiene una carga de peticiones ligera; es decir, que la cola de servicio no
es muy larga. Sin embargo, cuando la cola aumenta considerablemente, el dispositivo
se satura y el brazo del disco tiende a viajar frenéticamente de un extremo
al otro, dando como resultado tiempos de respuesta largos.
MENOR TIEMPO DE BUSQUEDA PRIMERO. (Shortestseek time first).
SSTF. Este algoritmo sirve la petición que produzca
el menor tiempo de búsqueda; es decir, aquella petición que da por resultado
el movimiento del brazo más corto con respecto a la posición actual del mismo.
Por lo tanto, el orden en que llegan no es respetado.
Este tipo de algoritmo presenta un patrón de búsqueda
muy concentrado en una sola región, principalmente las pistas medias; por lo
que las pistas internas y externas reciben una atención pobre.
Tiene la ventaja de que da un buen número de peticiones
servidas por unidad de tiempo, y una media de tiempo de respuesta baja para
cargas moderadas, por lo que es muy recomendable para procesamiento por lotes
(batch).
Sin embargo, para sistemas de tiempo compartido no
es recomendable debido a que causa tiempo de respuestas largos para las peticiones
que están en las pistas de los extremos.
BARRIDO (SCAN). En este algoritmo, la cabeza empieza
en uno de los extremos del disco (por ejemplo el exterior), y empieza a moverse
hacia el extremo opuesto (el interior), dando servicio a las peticiones que
se encuentran en cada pista que va encontrando en su camino. Al llegar el extremo
opuesto, la cabeza invierte el sentido de dirección y emprende el viaje de regreso,
sirviendo todas las peticiones que se encuentran en esa trayectoria. Así por
ejemplo, si una petición llega a la cola de servicio en el instante en que la
cabeza pasa delante de la pista requerida por esa petición, será servida casi
inmediatamente; mientras que si la petición llega justo detrás de la cabeza,
entonces tendrá que esperar hasta que la cabeza emprenda el viaje de retorno
y pase por la pista solicitada. El viaje de regreso puede ser iniciado no solamente
cuando se alcanza el extremo del disco, sino también cuando ya no haya más peticiones
en esa dirección.
Este algoritmo produce un buen número de peticiones
servidas por unidad de tiempo, así como una buena medida de tiempos de respuesta.
Su característica principal es que evita las discriminaciones
que se tienen en el algoritmo SSTF, por lo que sí es recomendable para sistemas
de tiempo compartido. Tiene la desventaja de que los cilindros de los extremos
son visitados con menos frecuencia, pero esto no es tan notorio como en el algoritmo
SSTF.
BARRIDO DE N PASOS. (N STEP SCAN). Es una variante del algoritmo anterior. La diferencia
estriba en que solamente se sirven las peticiones que hayan llegado hasta el
momento en que el brazo inicia el movimiento hacia alguno de los extremos, por
lo que las peticiones que llegan después y que aún podrían ser servidas por encontrarse en la trayectoria, son diferidas para
el viaje de retorno.
Este algoritmo disminuye aún más la discriminación
a ciertas peticiones.
BARRIDO CIRCULAR. (CIRCULAR SCAN). C-SCAN. Este algoritmo
es otra variante más del algoritmo SCAN.
C-SCAN mueve el brazo de un extremo a otro igual
que SCAN, sirviendo las peticiones que encuentra en su trayectoria.
Al llegar al extremo opuesto, el brazo regresa rápidamente
al extremo del que partió, sin servir ninguna petición en su regreso. Por lo
tanto C-SCAN trata el disco como si éste fuera circular; es decir, con la última
pista adyacente a la primera.
C-SCAN elimina completamente la discriminación de
los cilindros de los extremos, y proporciona un tiempo de respuesta más parejo
para todas las peticiones.
Una variante de este algoritmo es el C-LOOK, el cual
se comporta igual que el C-SCAN excepto que al irse moviendo hacia el extremo
opuesto, si ya no hay más peticiones que servir en el resto de las pistas, entonces
emprende el regreso.
En general, la planificación de disco mejora mucho
la eficiencia del sistema; sin embargo, existen ciertos casos particulares en
los que es más adecuado aplicar simplemente un algoritmo FCFS. Por ejemplo cuando
no se tienen distribuciones uniformes como en los casos de archivos secuenciales
muy largos, ya que los registros están todos contiguos y agrupados en una cierta
zona del disco. Esto hace innecesario el algoritmo, ya que sólo existe una sola
petición a través de un gran número de cilindros contiguos.
Otro caso problemático para aplicar la planificación
de disco son los archivos secuenciales indexados tales como KSAM o ISAM, ya
que el archivo de datos puede estar almacenado en cilindros diferentes a los
de los índices. Esto hace que se tengan que realizar búsquedas de un extremo
a otro, rompiendo con el algoritmo de planificación. Una solución para evitar
romper con la planificación de disco es diferir el acceso al archivo de datos
hasta que se pase por los cilindros correspondientes.
Cuando se tienen condiciones de carga muy pesada,
la cola de servicio se hace muy larga, por lo que es necesario considerar la
optimización rotacional para que junto con la optimización de búsqueda puedan
manejar adecuadamente las peticiones.
La optimización rotacional se basa en el hecho de
que bajo condiciones de carga muy
pesada, la probabilidad de que ocurran referencias al mismo cilindro aumentan,
por lo que se puede utilizar un algoritmo que optimice esas peticiones.
ALGORITMO TIEMPO DE TARDANZA MAS CORTO PRIMERO. Shortest
latency time first). SLTF. En este
algoritmo cuando el brazo llega a un cilindro en particular (usando cualquier
algoritmo de optimización de búsqueda), se examinan todas las peticiones pendientes
para ese cilindro y se sirve primero aquella que tiene el tiempo de tardanza
más pequeño. Esta estrategia se ha usado por muchos años en discos de cabezas
fijas ya que estos tienen un tiempo de búsqueda despreciable. Además es fácil
de implementar.
En resumen, en base a experiencias obtenidas, se puede decir que la mejor política de planificación de discos se puede manejar en tres etapas: para carga baja, la planificación SCAN es la mejor; mientras que para cargas medias y pesadas C-SCAN produce los mejores resultados. Para cargas muy pesadas, el algoritmo C-SCAN con optimización rotacional produce resultados efectivos.
6.5
METODOS DE ASIGNACION DE ARCHIVOS
Desde el punto de vista del usuario, un archivo es
un tipo de dato abstracto. Puede ser creado, abierto, escrito, cerrado, etc.,
sin preocuparse por su implementación. Esto es trabajo del sistema operativo.
El problema principal es cómo asignar espacio a los
archivos tal que el espacio del disco sea eficientemente utilizado y los archivos
sean accesados rápidamente.
Existen 3 métodos de asignación de espacio que son
los más usados: asignación contigua, asignación encadenada y asignación indexada.
Cada método tiene sus ventajas y desventajas.
MANEJO DE ESPACIO LIBRE.
Antes de proceder a revisar estos métodos, veremos
cómo se maneja el espacio disponible en un disco. Durante la operación de un
sistema de cómputo, los archivos son creados y eliminados con frecuencia. Dado
que el espacio en disco es limitado, es necesario reusarlo para colocar nuevos
archivos.
Para mantener la huella del espacio libre en disco,
el sistema de archivos mantiene una estructura de datos llamada "Lista
de espacio libre", en la cual se almacena el número de los sectores del
disco que están disponibles.
Cuando se desea crear un archivo, se recorre esta
lista en busca de la cantidad requerida y se le otorga al nuevo archivo.
El espacio es entonces removido de la lista de espacio
libre.
Esta lista es muy importante y existen varias maneras
de implementarlas: una de ellas es por medio de un vector que contiene un bit
por cada sector del disco. Si el
sector correspondiente está disponible el bit se pone a cero; si no, se pone
a uno. Como ejemplo, considere un
disco donde los sectores
2,3,4,5,8,9,10,11,12,13,17,18,25,26 y 27 están libres. Entonces el vector que
compone la lista de espacio libre nos queda:
110000110000001110011111100011111....
Otro método es encadenar todos los sectores libres del disco, manteniendo un apuntador al primer sector libre. Este sector tiene un apuntador al siguiente sector libre, y así sucesivamente. Ejemplo.
Este sistema no es muy rápido ya que para saber si
habrá espacio suficiente, hay que recorrer la lista y leer cada sector.
Una modificación a este método consiste en encadenar
bloques de sectores libres; por ejemplo si se tienen n sectores libres, en el
primer sector se escriben todas las direcciones del resto de las n-1 sectores
libres. En el último sector se
escribe la dirección de otro sector que contiene las direcciones de otro bloque
de n sectores libres.
La importancia de este método, es que se puede saber
inmediatamente cuántos sectores libres se tienen en un bloque y si serán suficientes
para almacenar un cierto archivo.
Otro método consiste en mantener la dirección del
primer sector libre y el número de sectores contiguos libres que siguen a ese
sector. Por lo tanto, en este caso la lista de espacio libre consiste de una
dirección del disco y una cuenta.
ASIGNACION CONTIGUA
El método de asignación contigua, requiere que cada
archivo ocupe un conjunto de direcciones contiguas en el disco. (Las direcciones
en el disco generalmente están ordenadas en una forma lineal). Típicamente,
las direcciones se incrementan a través de todos los sectores en una pista,
después a través de todas las pistas de un cilindro, y finalmente del cilindro
cero al cilindro m (donde m es el número de cilindros en el disco). En un floppy
sería igual, sólo que cada cilindro tiene únicamente dos pistas.
Este tipo de
asignación puede soportar tanto
acceso secuencial como directo.
La dificultad con la asignación contigua, es encontrar
espacio para la creación de un archivo. Una vez que la lista de espacio libre
ha sido definida, podemos definir cómo encontrar espacio para una asignación
contigua. Si el archivo a ser creado es de n sectores de longitud, debemos buscar
en la "lista de espacio libre" n sectores contiguos.
En una lista de espacio libre del tipo vector, necesitamos
encontrar n bits en cero en fila. En una "lista de espacio libre"
del tipo de direcciones y cuentas, necesitamos una cuenta de al menos n sectores.
Para el tipo
de asignación contigua, se
tienen dos algoritmos:
"PRIMERO EN AJUSTAR" (first fit). Busca
el primer hueco de sectores contiguos en el que pueda caber el archivo.
"MEJOR EN AJUSTAR" (best fit). Busca el
hueco de sectores contiguos más pequen~o
en el que pueda caber el archivo.
Actualmente no se sabe cuál es mejor, pero el algoritmo
primero en ajustar es el más rápido.
Ambos algoritmos sufren de fragmentación externa,
la cual sucede cuando después de asignar
y desasignar archivos exhaustivamente, el espacio en disco queda reducido
a muchos pedazos pequeños que no son contiguos por lo que llega el momento en
que un archivo no puede ser colocado en ninguno de ellos.
Una solución al problema de fragmentación externa
es aplicar técnicas de compactación (por ejemplo, mensualmente reempacar el
disco).
Otro problema con asignación contigua es que cuando
se crea un archivo, puede no saberse el tamaño de éste, una solución es que
el usuario lo estime o el sistema le de un "default", pero si esta
estimación resulta ser muy grande, se desperdiciará espacio.
Por oto lado, si resulta muy baja, no se podrá agregar más registros cuando se llegue al límite, por lo que habría que abortar la operación para que el usuario genere en archivo mayor, o bien el S.O. puede buscar un hueco mayor a donde trasladar todo el archivo. Ejemplo de asignación contigua.
ASIGNACION ENCADENADA
En el método de asignación encadenada, los archivos
no tienen la restricción de que deban ocupar sectores contiguos. En este método,
cada archivo es formado por una lista encadenada de sectores del disco.
El directorio tiene un apuntador al primero y último
sector del archivo. A su vez, cada
sector contiene un apuntador al siguiente sector. Por ejemplo, un archivo de
5 sectores de longitud, puede comenzar en el sector 9, y continuar en el sector
16, después en el sector 1, sector 10 y finalmente sector 25.
El archivo queda disperso por todo el disco. Los apuntadores no están accesibles al usuario. Esto se ilustra en la siguiente figura.
Si cada sector es de 512 palabras, y el apuntador
requiere de dos palabras para almacenar una dirección del disco, entonces desde
el punto de vista del usuario, los sectores quedan de 510 palabras.
Crear archivos es fácil en este método. Inicialmente
se da de alta el nombre del archivo en el directorio, y se le asigna un sector
de inicio. Este sector se inicializa a nil o nulo para indicar un archivo vacío.
Cuando se hace una operación de escritura, se remueve
un sector de la "lista de sectores libres" y se escribe en él. En
seguida ese sector es encadenado al final del archivo y el apuntador de final
es actualizado en el directorio.
Una operación
de lectura de
este archivo consiste simplemente en leer los sectores siguiendo los
apuntadores en cada sector.
No existe fragmentación externa en este método, ya
que cualquier sector en la lista de sectores libres puede ser usado para encadenarlo
a un archivo.
Note también que no es necesario declarar el tamaño
del archivo cuando éste es creado. Su longitud puede continuar creciendo mientras
haya sectores disponibles en la lista de sectores libres. Por lo tanto, nunca
se requiere compactar el disco.
Sin embargo,
la asignación
encadenada también tiene desventajas. La mayor de ellas es que solo puede
ser usada con eficiencia con archivos de acceso secuencial; ya que para posicionar
el apuntador de archivo en cierta posición requeriría viajar secuencialmente
a través de los sectores encadenados del archivo leyendo cada uno de ellos hasta
encontrar el buscado.
Como consecuencia, algunos sistemas soportan acceso
directo utilizando asignación contigua y acceso secuencial con asignación encadenada.
Esto obliga a declarar inicialmente el tipo de acceso.
Un archivo declarado inicialmente como secuencial,
no podrá ser utilizado en forma directa pues habrá sido encadenado; mientras
que un archivo declarado inicialmente como directo, sí podrá ser utilizado en
ambos tipos de acceso ya que habrá sido
colocado en asignación contigua.
Una manera de convertir de un tipo de asignación
a otro sería copiar un archivo de forma secuencial a otro definido como de acceso
directo.
Otras desventajas son el espacio que ocupan los apuntadores,
y la posibilidad de la pérdida de un apuntador al momento de leer, lo cual resultaría
en una lectura a un archivo equivocado.
Esto último puede resolverse con un doble encadenamiento,
pero requeriría un apuntador más y por lo tanto deja menos espacio útil.
ASIGNACION INDEXADA
La asignación
encadenada resuelve
los problemas de fragmentación externa y declaración de tamaño en la asignación
contigua. Sin embargo, la asignación encadenada no soporta acceso directo
debido a que sus bloques y más
importante sus apuntadores, están dispersos por todo el disco.
La asignación indexada resuelve este problema, colocando
todos los apuntadores juntos en un solo bloque, el bloque de índices.
Cada archivo tiene su propio bloque de índices, el
cual es un arreglo de direcciones de sectores del disco. El primer apuntador
del bloque de índices, apunta al primer sector del archivo, el segundo apuntador
al segundo sector, y así sucesivamente.
En general, el i-ésimo apuntador del bloque de índices apunta al i-ésimo sector
del archivo. (Así, cuando deseamos leer la i-ésima componente, utilizamos el
i-ésimo apuntador). Esto se ilustra en la siguiente figura.
Cuando el archivo
es inicialmente creado, todos los
apuntadores son puestos a nil ó nulo (en este caso -1). Cuando una escritura
es requerida, un sector es removido de la lista de sectores libres y la información
es escrita en él. A continuación su dirección por ejemplo la 9 es escrita en
el bloque de índices; en este caso en la primera posición ya que es el primer
bloque del archivo. El proceso se repite para cada nuevo bloque del archivo.
La asignación indexada soporta acceso directo sin
sufrir de fragmentación externa. Cualquier sector libre en cualquier lugar del
disco puede ser usado para satisfacer una nueva escritura.
Sin embargo, la asignación indexada sufre de pérdida
de espacio ya que requiere de todo un bloque (un sector) por archivo para almacenar
los apuntadores, aún cuando el archivo sea pequeño.
Normalmente el bloque de índices es de un sector,
lo cual es suficiente para archivos de tamaño medio.
Para archivos de gran tamaño, varios bloques de índices
pueden ser encadenados. En este caso, el último apuntador del primer bloque
de índices apunta al segundo bloque de índices y así sucesivamente.
Nótese que esta representación utiliza asignación
encadenada para los bloques de índices.
Otra variante de este método es usar un índice de
bloques en el cual cada apuntador apunta a un índice de bloques que a su vez
apunta a los sectores que componen el archivo.
Este método se puede llevar hasta un nivel de 4,
pero generalmente es suficiente dos niveles. Tiene la desventaja de requerir
varias lecturas según el número de niveles.