Download Gestión de E/S y los Sistemas de Archivos

Document related concepts

Desfragmentación wikipedia , lookup

TestDisk wikipedia , lookup

Hierarchical File System wikipedia , lookup

Formato de disco wikipedia , lookup

Dd (Unix) wikipedia , lookup

Transcript
Gestión de E/S y los
Sistemas de Archivos
Este capítulo trata sobre la gestión de los dispositivos de entrada y
salida, centrándonos en los dispositivos de almacenamiento.
Comenzaremos describiendo el hardware de E/S y las técnicas para
transferir datos desde los dispositivos. Posteriormente nos
centraremos en los dispositivos de almacenamiento, su estructura y
organización en sistemas de archivos por parte del SO para abstraer
al usuario de las complejidades hardware de la amplia variedad
tecnológica en la que están basados estos dispositivos. Además, se
verán las estrategias más habituales en la planificación de los
dispositivos de E/S.
Gestión de E/S y los Sistemas de Archivos by Rafael Lozano is licensed under a Creative Commons
Reconocimiento-NoComercial-CompartirIgual 3.0 España License.
Tabla de contenidos
Tabla de contenido
1 Introducción........................................................................................................................................ 1
2 Hardware de E/S................................................................................................................................. 1
2.1 Tipos de dispositivos...................................................................................................................................1
2.2 Controladora.................................................................................................................................................2
3 El SO en la E/S..................................................................................................................................... 2
3.1 E/S programada...........................................................................................................................................3
3.2 E/S controlada por interrupciones..........................................................................................................4
3.3 E/S mediante el uso de DMA....................................................................................................................4
3.4 Políticas de planificación de discos.........................................................................................................5
3.4.1 Planificación FCFS....................................................................................................................................... 6
3.4.2 Planificación SSF......................................................................................................................................... 6
3.4.3 Algoritmo del ascensor............................................................................................................................. 7
4 El sistema de archivos.......................................................................................................................8
4.1 Necesidad de los sistemas de archivos.................................................................................................9
4.2 Sistemas de archivos transaccional........................................................................................................9
4.3 Fragmentación...........................................................................................................................................11
4.3.1 Fragmentación interna........................................................................................................................... 11
4.3.2 Fragmentación externa.......................................................................................................................... 12
4.4 Estructura lógica de un disco duro.......................................................................................................12
4.4.1 MBR............................................................................................................................................................. 12
4.4.2 GPT.............................................................................................................................................................. 13
4.5 Gestión del espacio libre.........................................................................................................................14
4.5.1 Vector de bits............................................................................................................................................ 14
4.5.2 Lista enlazada........................................................................................................................................... 15
4.5.3 Agrupamiento........................................................................................................................................... 15
4.5.4 Recuento.................................................................................................................................................... 15
4.6 Asignación de archivos.............................................................................................................................15
4.6.1 Asignación contigua................................................................................................................................ 15
4.6.2 Asignación enlazada................................................................................................................................ 16
4.6.3 Asignación enlazada usando una tabla en memoria......................................................................18
4.6.4 Asignación indexada............................................................................................................................... 18
5 Sistemas de archivos más conocidos..........................................................................................19
5.1 Sistema de archivos FAT..........................................................................................................................19
5.1.1 La tabla FAT............................................................................................................................................... 20
5.1.2 El directorio raíz....................................................................................................................................... 21
5.1.3 El área de datos........................................................................................................................................ 21
5.2 Sistemas de archivos NTFS.....................................................................................................................22
5.2.1 MFT.............................................................................................................................................................. 23
5.2.2 Los archivos del sistema........................................................................................................................ 26
5.3 Sistema de archivos ext2, ext3 y ext4..................................................................................................26
5.3.1 Grupos de bloques.................................................................................................................................. 27
Índice I
5.3.2 El superbloque......................................................................................................................................... 27
5.3.3 Descriptores de grupo............................................................................................................................ 28
5.3.4 Inodo........................................................................................................................................................... 28
5.3.5 Área de datos............................................................................................................................................ 29
6 Bibliografía......................................................................................................................................... 31
Índice II
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
Gestión de E/S y
los Sistemas de Archivos
1 Introducción
Quizás el aspecto más confuso en el diseño de los sistemas operativos sea la Entrada/Salida
(E/S). Dada la amplia variedad de dispositivos y aplicaciones de esos dispositivos, resulta difícil
desarrollar una solución general y consistente.
Un sistema operativo también controla todos los dispositivos de E/S del ordenador. Debe emitir
comandos para los dispositivos, captar interrupciones y manejar errores. Además, debe proporcionar
una interfaz, simple y fácil de usar, entre los dispositivos y el resto del sistema. Hasta donde sea
posible, la interfaz debe ser igual para todos los dispositivos (independencia de dispositivos). El código
de E/S representa una fracción considerable del sistema operativo total.
Además, una parte fundamental del sistema operativo es el sistema de archivos, el cual se
encarga de administrar y facilitar el uso de los dispositivos del almacenamiento. Sus principales
funciones son la asignación de espacio a los archivos, la administración del espacio libre y del acceso a
los datos guardados.
2 Hardware de E/S
En este apartado vamos a describir aspectos hardware relacionados con los dispositivos de E/S.
2.1 Tipos de dispositivos
Los dispositivos de E/S se pueden dividir básicamente en dos categorías:
✔
Dispositivo de bloque.- Almacena información en bloques de tamaño fijo, cada uno con su
propia dirección. Los tamaños de bloque comunes varían desde 512 bytes hasta 32,768 bytes.
Todas las transferencias se realizan en unidades de uno o más bloques completos
Página 1
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
consecutivos. La propiedad esencial de un dispositivo de bloque es que es posible leer o
escribir cada bloque de manera independiente de los demás. Los discos duros, CD-ROMs y
memorias USB son dispositivos de bloque comunes.
✔
Dispositivos de carácter.- Acepta un flujo de caracteres, sin importar la estructura del bloque.
No es direccionable y no tiene ninguna operación de búsqueda. Las impresoras, las interfaces
de red, ratón, teclado y la mayoría de los demás dispositivos que no son parecidos al disco se
pueden considerar como dispositivos de carácter.
2.2 Controladora
Por lo general, las unidades de E/S consisten en un componente mecánico y un componente
electrónico. El componente electrónico se llama tarjeta controladora o adaptador. En los ordenadores
personales, comúnmente tiene la forma de un chip en la placa base o una tarjeta de expansión que se
puede insertar en una ranura PCI. El componente mecánico es el dispositivo en sí.
El trabajo de la controladora es convertir el flujo de bits en serie en un bloque de bytes y realizar
cualquier corrección de errores necesaria. Por lo general, primero se ensambla el bloque de bytes, bit
por bit, en un búfer dentro de la controladora. Después de haber verificado su suma de
comprobación y de que el bloque se haya declarado libre de errores, puede copiarse a la memoria
principal.
Cada controladora tiene:
✔
Registros de control.- Unos cuantos registros que se utilizan para comunicarse con la CPU. Al
escribir en ellos, el sistema operativo puede hacer que el dispositivo envíe o acepte datos, se
encienda o se apague, o realice cualquier otra acción. Al leer estos registros, el sistema
operativo puede conocer el estado del dispositivo, si está preparado o no para aceptar un
nuevo comando, etc.
✔
Búfer.- Además de los registros de control, muchos dispositivos tienen un búfer de datos que
el sistema operativo puede leer y escribir.
3 El SO en la E/S
A la hora de desarrollar un SO hay que tener en cuenta una serie de cuestiones relacionadas
con la E/S que se describen a continuación.
✔
Independencia de dispositivos.- Un concepto clave en el diseño del software de E/S se conoce
como independencia de dispositivos. Lo que significa es que debe ser posible escribir
programas que puedan acceder a cualquier dispositivo de E/S sin tener que especificar el
dispositivo por adelantado. Por ejemplo, un programa que lee un archivo debe tener la
capacidad de hacerlo en el disco duro, un CD-ROM, un DVD o una memoria USB sin tener que
modificar el programa para cada dispositivo distinto.
✔
Denominación uniforme.- Un objetivo muy relacionado con la independencia de los
dispositivos es la denominación uniforme. El nombre de un archivo o dispositivo simplemente
debe ser una cadena o un entero sin depender del dispositivo de ninguna forma.
✔
Manejo de errores.- Otra cuestión importante relacionada con el software de E/S es el manejo
Página 2
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
de errores. En general, los errores se deben manejar lo más cerca del hardware que sea
posible. Si el controlador hardware descubre un error de lectura, debe tratar de corregir el
error por sí mismo. Si no puede, entonces el software controlador del dispositivo debe
manejarlo. Sólo si los niveles inferiores no pueden solucionar el problema, los niveles
superiores deben tratarlos.
✔
Modo de transferencia.- Otra cuestión clave es la de las transferencias síncronas (de bloqueo)
contra las asíncronas (controladas por interrupciones). La mayoría de las operaciones de E/S
son asíncronas: la CPU inicia la transferencia y se va a hacer algo más hasta que llega la
interrupción avisando de que ha finalizado. Los programas de usuario son mucho más fáciles
de escribir si las operaciones de E/S son de bloqueo: después de iniciar una operación de
lectura, el programa se suspende de manera automática hasta que haya datos disponibles en
el búfer. Depende del sistema operativo hacer que las operaciones sean síncronas o
asíncronas.
✔
Uso de búfer.- A menudo los datos que provienen de un dispositivo no se pueden almacenar
directamente en su destino final. Por ejemplo, cuando un paquete llega de la red, el sistema
operativo no sabe dónde colocarlo hasta que ha almacenado el paquete en alguna parte y lo
examina. Además, algunos dispositivos tienen severas restricciones en tiempo real (por
ejemplo, los dispositivos de audio digital), por lo que los datos se deben colocar en un búfer
de salida por adelantado para desacoplar la velocidad a la que se llena el búfer, de la velocidad
a la que se vacía, de manera que se eviten desbordamientos de búfer. El uso de búfer
involucra una cantidad considerable de copiado y a menudo tiene un importante impacto en
el rendimiento de la E/S.
✔
Interbloqueos.- Algunos dispositivos de E/S, como los discos, pueden ser utilizados por
muchos usuarios a la vez. No se producen problemas debido a que varios usuarios tengan
archivos abiertos en el mismo disco al mismo tiempo. Otros dispositivos tienen que estar
dedicados a un solo usuario hasta que éste termine. Si dos o más usuarios escriben bloques
entremezclados al azar en el mismo dispositivo, definitivamente no funcionará. Al introducir
los dispositivos dedicados (no compartidos) también se introduce una variedad de problemas,
como los interbloqueos. De nuevo, el sistema operativo debe ser capaz de manejar los
dispositivos compartidos y dedicados de una manera que evite problemas.
Para las operaciones de E/S son posibles las tres técnicas siguientes:
3.1 E/S programada
Cuando el procesador está ejecutando un programa y encuentra una instrucción de E/S, ejecuta
dicha instrucción, enviando una orden al dispositivo. Con E/S programada, el dispositivo llevará a cabo
la acción requerida y luego activará los bits apropiados en el registro del dispositivo. El dispositivo no
lleva a cabo ninguna otra acción para avisar al procesador, de hecho, ni lo interrumpe. Así pues, es
responsabilidad del procesador comprobar periódicamente el estado del dispositivo hasta saber que
se ha completado la operación.
Con esta técnica, el procesador es responsable de extraer los datos de la memoria principal
cuando va a realizar una salida o almacenar los datos en la memoria principal cuando se realiza una
entrada. El procesador ejecuta unas instrucciones del sistema operativo que le otorgan el control
directo sobre la operación de E/S, incluyendo la comprobación del estado de los dispositivos, el envío
Página 3
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
de órdenes de lectura o escritura y la transferencia de datos.
Esta técnica consume tiempo y mantiene al procesador ocupado de forma innecesaria.
3.2 E/S controlada por interrupciones
El problema de la E/S programada es que el procesador tiene que esperar un largo rato a que el
dispositivo de E/S en cuestión esté listo para recibir o transmitir más datos. El procesador, mientras
está esperando, debe interrogar repetidamente por el estado del dispositivo de E/S. Como resultado,
el nivel de rendimiento del sistema en conjunto se degrada fuertemente.
Una alternativa es que el procesador envíe una orden de E/S al dispositivo y se dedique a hacer
alguna otra tarea útil. El dispositivo de E/S interrumpirá entonces al procesador para requerir sus
servicios cuando esté listo para intercambiar los datos. El procesador ejecuta entonces la
transferencia de los datos y reanuda el procesamiento anterior.
Desde el punto de vista del dispositivo de E/S la secuencia de operaciones sería:
1. El dispositivo de E/S recibe una orden de lectura desde la CPU.
2. El dispositivo de E/S procede a leer los datos.
3. Una vez que los datos están en el registro de datos del dispositivo, éste envía una señal de
interrupción al procesador.
4. El dispositivo espera entonces a que los datos sean solicitados por el procesador. Cuando se
realice esta solicitud, el módulo situará los datos en el bus de datos y estará listo para otra
operación de E/S.
Desde el punto de vista del procesador la secuencia de operaciones sería:
1. El procesador envía una orden de lectura, salva el contexto (contador de programa y los
registros del procesador) del proceso en curso, se sale del mismo y se dedica a hacer otra
cosa (puede ejecutar otro proceso).
2. Cuando se produce una interrupción desde el dispositivo de E/S, el procesador salva el
contexto del proceso que está ejecutando en ese momento y comienza la ejecución de la
rutina de tratamiento de la interrupción. En este caso, el procesador lee los datos del
dispositivo de E/S y la almacena en la memoria.
3. Luego restaura el contexto del proceso que emitió la orden de E/S y reanuda la ejecución.
La E/S por interrupciones es más eficiente que la E/S programada porque elimina las esperas
innecesarias. Sin embargo, la E/S por interrupciones sigue consumiendo una gran cantidad de tiempo
del procesador, debido a que cada palabra de datos que va de la memoria al dispositivo de E/S o
viceversa debe pasar a través del procesador.
3.3 E/S mediante el uso de DMA
La E/S dirigida por interrupciones, aunque es más eficiente que la simple E/S programada,
todavía requiere de la intervención activa del procesador para transferir los datos entre la memoria y
un dispositivo de E/S y además cualquier transferencia de datos debe recorrer un camino que pasa
Página 4
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
por el procesador. Así pues, ambas formas de E/S adolecen de dos desventajas inherentes:
1. La velocidad de transferencia de E/S está limitada por la velocidad con la que el procesador
puede comprobar y dar servicio a un dispositivo.
2. El procesador participa en la gestión de la transferencia de E/S; debe ejecutarse una serie de
instrucciones en cada transferencia de E/S.
Cuando se tienen que mover grandes volúmenes de datos, se necesita una técnica más
eficiente: el acceso directo a memoria (DMA). La función de DMA se puede llevar a cabo por medio de
un controlador separado sobre el bus del sistema o puede estar incorporada dentro de un dispositivo
de E/S. En cualquier caso, la técnica funciona como sigue. Cuando el procesador desea leer o escribir
un bloque de datos, emite una orden hacia el módulo de DMA, enviándole la información siguiente:
1. Si lo que solicita es una lectura o una escritura.
2. La dirección del dispositivo de E/S involucrado.
3. La dirección inicial de la memoria desde la que se va a leer o a la que se va a escribir.
4. El número de palabras a leer o escribir.
El procesador continúa entonces con otro trabajo. Habrá delegado la operación de E/S en el
controlador DMA y dicho módulo es el que tendrá que encargarse de ésta. El controlador DMA
transfiere los datos directamente hacia o desde la memoria, sin pasar por el procesador. Cuando se
completa la transferencia, el controlador DMA envía una señal de interrupción al procesador. De esta
manera, el procesador se ve involucrado sólo al inicio y al final de la transferencia.
El controlador de DMA necesita tomar el control del bus para transferir los datos con la
memoria. Debido a la competencia por la utilización del bus, puede ocurrir que el procesador necesite
el bus pero tiene que esperar por el módulo de DMA. Este fenómeno se conoce como robo de ciclo.
Nótese que esto no es una interrupción; el procesador no salva el contexto y se dedica a hacer otra
cosa. En su lugar, el procesador hace una pausa durante un ciclo del bus. El efecto general es hacer
que el procesador ejecute con más lentitud durante una transferencia de DMA. No obstante, para una
transferencia de E/S de varias palabras, el DMA es bastante más eficiente que la E/S programada o
dirigida por interrupciones.
3.4 Políticas de planificación de discos
Puesto que la mayoría de los procesos dependen en gran medida del disco para la carga en
memoria, y para los archivos de entrada y salida, es importante que el servicio del disco sea lo más
rápido posible. El sistema operativo puede mejorar el tiempo promedio de servicio del disco
planificando las solicitudes de acceso.
La velocidad del disco se compone de tres partes:
1. Para acceder a un bloque en el disco, el sistema primero debe mover la cabeza a la pista o
cilindro correspondiente. A este movimiento se le denomina posicionamiento, y al tiempo
para concluirlo se le conoce como tiempo de posicionamiento.
2. Una vez que la cabeza se encuentra en la pista correcta debe esperar a que el bloque
deseado pase por debajo de la cabeza de lectura y escritura; a esta demora se le denomina
Página 5
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
tiempo de latencia rotacional.
3. Por último, puede efectuarse la transferencia real de datos entre el disco y la memoria
principal. Esta última parte es el tiempo de transferencia de bloque.
El tiempo total para servir una solicitud del disco es la suma de los tiempos de posicionamiento,
latencia rotacional y transferencia de bloque.
Cada dispositivo de E/S, incluyendo cada unidad de disco, tiene una cola de procesos
pendientes. Cada vez que un proceso necesita E/S del disco, emite una llamada al sistema operativo.
Esta solicitud necesita varias informaciones necesarias:
✔
Si se trata de una operación de entrada o de salida.
✔
Cuál es la dirección en disco (unidad, cilindro, bloque).
✔
Cuál es la dirección en memoria.
✔
Cuánta información se transferirá (número de bytes o palabras).
Si la unidad y el controlador del disco deseado están disponibles, es posible servir de inmediato
la solicitud. Sin embargo, si la unidad o el controlador están sirviendo una solicitud, será necesario
colocar en una cola todas las solicitudes adicionales, que generalmente provienen de otros procesos.
En un sistema de multiprogramación con varios procesos, con frecuencia no estará vacía la cola
del disco, por lo que, al concluir una solicitud, debemos seleccionar una nueva de la cola y servirla. Un
servicio de disco requiere el movimiento de la cabeza a la pista deseada, esperar el tiempo de latencia
rotacional y finalmente transferir los datos.
3.4.1 Planificación FCFS
La forma más sencilla para planificar un disco es la planificación servicio por orden de llegada
(FCFS, first come, first served). Este algoritmo es fácil de programar e intrínsecamente justo, pero es
probable que no ofrezca el mejor tiempo de servicio promedio. Consideremos como ejemplo una cola
de disco ordenada por el orden de llegada de las solicitudes que afectan a los siguientes cilindros: 98,
183, 37, 122, 14, 124, 65 y 67
Si en un principio la cabeza de lectura y escritura está en el cilindro 53, se moverá primero del
53 al 98, luego al 183, 37, 122, 14, 124, 65 y por último al 67, lo que da un movimiento total de la
cabeza de 640 cilindros.
El problema de esta planificación se ilustra con el violento movimiento del 122 al 14 y de vuelta
al 124. Si pudieran servirse juntas las solicitudes de los cilindros 37 y 14, antes o después de las
solicitudes 122 y 124, se reduciría considerablemente el movimiento total de la cabeza y también el
tiempo para servir cada solicitud, mejorando la productividad del disco.
3.4.2 Planificación SSF
Parece razonable servir juntas todas las solicitudes próximas a la posición actual del disco, antes
de desplazar la cabeza a un punto lejano para servir otra solicitud. Esta suposición es la base del
algoritmo primero la de menor tiempo de posicionamiento (SSF, Shortest Seek First) para la
planificación del disco. El algoritmo SSF selecciona la solicitud con menor tiempo de posicionamiento
Página 6
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
a partir de la posición actual de la cabeza. Como el tiempo de posicionamiento normalmente es
proporcional a la diferencia entre las solicitudes medida en cilindros, implementamos esta estrategia
moviendo la cabeza al cilindro más próxima de la cola de solicitudes.
En el ejemplo anterior, el más próximo a la posición inicial de la cabeza (53) es el cilindro 65.
Una vez ubicados en el cilindro 65, la siguiente solicitud más cercana está el cilindro 67. En este punto,
la distancia al cilindro 37 es 30, mientras que al 98 es 31; por tanto, está más cerca la solicitud del
cilindro 37 y se sirve a continuación. Luego servimos la solicitud del cilindro 14, después la 98, 122,
124 y por último la 183. Este método de planificación da como resultado un movimiento total de la
cabeza de sólo 236 cilindros, poco más de la tercera parte de la distancia necesaria para la
planificación FCFS. Este algoritmo mejoraría considerablemente el promedio del servicio del disco.
La planificación SSF puede causar el bloqueo indefinido de algunas solicitudes. Recuerde que,
en un sistema real, las solicitudes pueden llegar en cualquier momento. Supongamos que tenemos
dos solicitudes en la cola, una para el cilindro 14 y otra para el 186. Si llega una solicitud próxima al 14
mientras servimos esta solicitud será la siguiente en atenderse, por lo que la solicitud del 186 tendría
que esperar. Mientras se sirve la nueva solicitud, puede llegar otra próxima a la 14. En teoría, podría
llegar una serie continua de solicitudes próximas entre sí, ocasionando que la solicitud del cilindro 186
espere indefinidamente.
El algoritmo SSF, aunque representa una considerable mejora con respecto al algoritmo FCFS,
no es óptimo. Por ejemplo, si movemos la cabeza del 53 al 37, aunque ésta no sea la pista más
próxima, y luego a la 14, antes de regresar y servir a la 65, 67, 98, 122, 124 y 183 podemos reducir el
movimiento total de la cabeza a 208 pistas.
3.4.3 Algoritmo del ascensor
Previamente hemos visto que la cola de solicitudes de E/S al disco es dinámica, es decir,
mientras se atiende una petición pueden llegar más peticiones. Una política que mantiene los
requisitos de eficiencia (menor tiempo de respuesta) y equidad (que se atiendan todas las peticiones)
es el algoritmo del ascensor.
Los ascensores en los edificios altos pueden recibir peticiones mientras están recogiendo
clientes en un piso. Sin embargo, en lugar de atender las peticiones más próximas hacen un recorrido
completo de abajo a arriba y atienden las peticiones más próximas en ese sentido. Cuando llegan a la
última petición en una dirección, invierten su sentido (de arriba a abajo) y atienden las peticiones
pendientes en ese orden.
Con el disco se puede establecer una similitud. La cabeza de lectura y escritura está atendiendo
una solicitud en un cilindro y luego atenderá la solicitud más próxima en la dirección actual. Después
de atender la última solicitud en una dirección, invertirá el movimiento de la cabeza y continuará el
servicio de solicitudes en la dirección contraria.
Usamos de nuevo nuestro ejemplo de la cola de solicitudes 98, 183, 37, 122, 14, 124, 65 y 67.
Antes de aplicar la planificación necesitamos conocer la dirección del movimiento de la cabeza, así
como su posición más reciente. Si se movía hacia el cilindro 0, el movimiento de la cabeza atendería
las solicitudes del cilindro 37 y 14. Al atender la solicitud del cilindro 14 y no haber más peticiones en
esa dirección, se invertiría el movimiento de la cabeza y se desplazaría hacia el extremo opuesto,
sirviendo las solicitudes en los cilindros 65, 67, 98, 122, 124 y 183 durante el movimiento. Si una
Página 7
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
solicitud llega a la cola justo delante de la cabeza, se servirá casi de inmediato, mientras que una
solicitud correspondiente a una posición inmediatamente detrás de la cabeza tendrá que esperar a
que la cabeza invierta su dirección de movimiento y regrese, antes de ser servida.
Esta planificación de disco tiene un problema. Supongamos que las peticiones que llegan están
uniformemente distribuidas a lo largo del disco. Normalmente, cuando la cabeza invierta la dirección
se va a encontrar pocas solicitudes ya que acaba de pasar por esa zona del disco y hará poco tiempo
que han sido atendidas. Lo más lógico es que haya un gran número de solicitudes en el extremo
opuesto del disco. Así mismo, estas solicitudes son las que más han esperado.
Una ligera modificación de este algoritmo que resuelve este inconveniente es atender
solicitudes siempre en la misma dirección. Cuando se ha atendido la última petición en una dirección,
el brazo se mueve de inmediato hasta la petición que está más cercana al extremo opuesto del disco
y después continúa desplazándose en esa dirección. En la práctica estamos considerando que el
cilindro más bajo está justo por encima del cilindro más alto.
4 El sistema de archivos
El sistema de archivos es el componente del sistema operativo encargado de administrar y
facilitar el uso de los dispositivos de almacenamiento. Estructuran la información guardada en un
dispositivo de almacenamiento, que luego será representada ya sea textual o gráficamente utilizando
un gestor de archivos. Sus principales funciones son:
✔
La asignación de espacio de almacenamiento a los archivos
✔
La administración del espacio libre de la partición.
✔
La administración del acceso a los datos guardados.
✔
Seguridad o permisos: listas de control de acceso (ACLs) por usuarios y grupos.
✔
Asignación de los atributos extendidos (ej.: archivos de solo lectura, etc.)
✔
Mecanismo para evitar la fragmentación.
✔
Integridad del sistema de archivos (Journaling)
✔
Soporte para cuotas de discos
El elemento principal en un sistema de archivos es el archivo, o conjunto de información
relacionada que se almacena como flujo de bits y es tratada como entidad única. Para que las
aplicaciones puedan acceder a la información almacenada en los dispositivos de almacenamiento
utilizan generalmente un nombre simbólico para acceder a un archivo. Como una partición puede
almacenar miles de archivos, estos necesitan estructurarse para su rápida localización. De todo esto
se encarga el sistema de archivos para lo que debe definir lo siguiente:
✔
La estructura del almacenamiento, generalmente en forma de árbol con carpetas y
subcarpetas.
✔
La nomenclatura de los archivos. Caracteres que se admiten en el nombre de los archivos,
lóngitud máxima, etc.
Página 8
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
La mayoría de los sistemas operativos manejan su propio sistema de archivos. Generalmente,
cada sistema de archivos ha sido diseñado para obtener el mejor rendimiento con un sistema
operativo concreto, sin embargo, es usual que el mismo sistema operativo sea capaz de reconocer
múltiples sistemas de archivos.
Para que sea posible almacenar información en una partición es necesario asignarle
previamente un sistema de archivos. Esta operación se denomina dar formato o formatear una
partición. Por norma general, cada sistema de archivos se instala sobre una única partición, aunque es
posible instalar un sistema de ficheros utilizando varias particiones.
4.1 Necesidad de los sistemas de archivos
Una necesidad evidente de casi cualquier aplicación informática es la del almacenamiento y
posterior recuperación de información. Los medios de almacenamiento masivo (disco duro, CD-ROM,
memorias flash, ...) posibilitan su almacenamiento y recuperación.
El uso de estos medios de almacenamiento introduce un nuevo problema. El manejo de estas
memorias secundarias es muy diferente del manejo que se hace de la memoria principal. Y no sólo
eso: entre diferentes medios de almacenamiento masivo, el acceso y manipulación de los datos en
ellos almacenados puede ser muy distinto. A nivel interno, no es lo mismo acceder a la información
almacenada en un disco duro que a la almacenada en un CD-ROM.
Resulta imprescindible introducir algo que permita abstraer las propiedades físicas y
tecnológicas de los dispositivos de almacenamiento, es decir, algo que permita manipular la
información de la misma forma, independientemente del medio en que ésta esté almacenada.
La solución se encuentra en los controladores software del dispositivo, que hacen posible
olvidar los complejos detalles a niveles lógico y físico de la implementación de los dispositivos. El
controlador software se encarga de atender las solicitudes que haga el sistema al dispositivo
correspondiente, actuando como capa colchón entre ambos. Así, el sistema operativo puede olvidarse
de conceptos como pistas, sectores, cilindros, etc... y centrarse en lo que realmente interesa,
almacenar y acceder a la información.
Mediante las capacidades de los dispositivos de almacenamiento y, gracias, a los controladores
de dispositivo que los manipulan se logra el almacenamiento y recuperación de la información. Pero
esta información debe estar estructurada para su fácil manipulación. De esta idea surgen los sistemas
de archivos, como mecanismo o herramienta de gestión de la información sobre los dispositivos de
almacenamiento.
La gestión de la información la realiza, el sistema de archivos a nivel lógico, el disco duro a nivel
físico, y los drivers como elemento intermedio entre ellos.
4.2 Sistemas de archivos transaccional
Además de alojar los datos de los archivos, el sistema de archivo también almacena y manipula
información muy importante sobre los archivos y el propio sistema de archivo, como por ejemplo las
marcas de fecha y hora, el propietario del archivo, los permisos de acceso, el tamaño de los archivos y
la localización del archivo en el disco, entre otras cosas. Esta información constituye lo que
comúnmente denominamos metadatos.
Página 9
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
Al trabajar con un ordenador, para mejorar el rendimiento de las operaciones de E/S, los datos
del disco son temporalmente almacenados en la memoria RAM. Los problemas surgen si hay un corte
de suministro eléctrico antes que los datos modificados en la memoria sean grabados nuevamente al
disco. Se generaría una inconsistencia en el estado global del sistema de ficheros.
Puesto que el sistema de archivos procura trabajar de manera asíncrona tanto como le sea
posible a fin de evitar el embotellamiento del disco duro, una interrupción intempestiva de su trabajo
podría dar lugar a la pérdida de los datos. Como ejemplo, consideremos el escenario siguiente: ¿qué
sucede si su máquina se cuelga cuando se está trabajando en un documento? Son varias las
respuestas:
✔
La caída de la máquina ocurre después de que se haya guardado el archivo. Éste es el mejor
de los escenarios: no pierde casi nada. Se reinicia la máquina y el documento está tal y como
se guardó.
✔
La máquina se cuelga antes de que haya guardado el archivo. Se pierde seguramente todos
los cambios más recientes, pero su versión anterior sigue siendo aceptable.
✔
La caída de la máquina ocurre justo cuando el archivo estaba siendo escrito en el disco. Éste
es el peor de los casos: la nueva versión del archivo estaba sobreescribiéndose físicamente
sobre la vieja. Se acaba con un archivo parcialmente nuevo y parcialmente viejo. Si el archivo
es escrito en forma binaria, ya no se puede reabrir debido a que el formato interno de sus
datos resulta inconsistente con lo que la aplicación espera.
Si la caída del sistema toma al controlador escribiendo en un área de los metadatos, tal como el
directorio, por ejemplo, entonces en el último de los escenarios las cosas resultan aún peores. Ahora
en vez de un archivo dañado, habrá un sistema de archivo corrupto, y podría perder el directorio
completo y todos los datos de una partición del disco.
El sistema de archivos estándar procura prevenir y recuperarse de una corrupción de los
metadatos mediante el análisis exhaustivo del sistema de archivo durante el arranque de la máquina.
Dado que el sistema de archivos mantiene copias redundantes de los metadatos críticos, es
extremadamente improbable que estos datos se pierdan totalmente. El sistema evalúa dónde se
hayan los metadatos corruptos, y luego repara el daño, ya sea copiando de la versión redundante o
simplemente borrando el archivo o los archivos cuyos metadatos hayan sido estropeados.
Obviamente, cuanto más grande es el sistema de archivos a verificar, tanto más prolongado
será el proceso de revisión. En una partición de varios gigabytes esta revisión de los metadatos
durante el arranque puede tardar muchísimo tiempo.
Como las aplicaciones son cada vez más complejas, tanto en grandes servidores como en
requisitos de disponibilidad mayores, existe la necesidad de un sistema de archivos más sofisticado
que haga aún mejor la tarea de proteger los datos y los metadatos. Los sistemas de archivo
transaccionales son una respuesta a esta necesidad.
Los sistemas de archivos más modernos han tomado prestadas del ámbito de las bases de
datos las técnicas transaccionales, a fin de mejorar la recuperación de los datos tras una eventual
caída. En estos sistemas de archivos las transacciones en disco se escriben de manera secuencial en
un área llamada journal o log, antes de ser escritas en sus localizaciones finales dentro del sistema de
archivo. Las distintas variantes de sistema de archivo transaccional difieren en términos de los datos
Página 10
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
que se escriben en el log. Algunas sólo escriben los metadatos del sistema de archivo; mientras que
otras lo registran todo en el journal.
Ahora, si la caída del sistema ocurriera antes de que la entrada en el log hubiese sido efectuada
con éxito, los datos originales todavía aparecerían intactos en el disco, y solamente se perderían los
cambios más recientes. Si la caída se diera justo durante la actualización real del disco (es decir,
después de que la entrada en el log se hubiera dado), la entrada en el journal mostraría lo qué
supuestamente debió de haber ocurrido. De tal suerte que cuando el sistema arranque de nuevo,
pueda simplemente rehacer las entradas en el journal y completar la actualización que fue
interrumpida.
En cualquier caso, se obtienen datos válidos y no una partición completa estropeada. Y como el
tiempo de recuperación asociado con este sistema basado en log es muchísimo más corto, la
máquina estará en línea en unos cuantos segundos.
Es importante observar también que el empleo de un sistema de archivo transaccional no
vuelve obsoleto, ni mucho menos, el uso de los programas que sirven para revisar el sistema de
archivo. Los errores de hardware y software que al azar llegan a corromper algunos bloques del
sistema de archivo, generalmente no se pueden recuperar con el simple log de la transacciones en
disco.
4.3 Fragmentación
Prácticamente, todos los sistemas de archivos introducen el concepto de grupo, cluster, bloque
lógico o unidad de asignación. Hace referencia a la unidad mínima de almacenamiento de un archivo
en una partición y está formada por uno o varios sectores contiguos del disco. Esto quiere decir que
el espacio real ocupado por un archivo en disco será siempre múltiplo del tamaño del grupo. Además,
cada grupo puede almacenar información de un sólo archivo, aunque un archivo puede ocupar varios
grupos, los cuales no están necesariamente contiguos. Estas características provocan el problema de
la fragmentación. Hay dos tipos de fragmentación que veremos a continuación.
4.3.1 Fragmentación interna
La fragmentación interna consiste en el desaprovechamiento del espacio en disco. Ocurren
cuando un archivo tiene un tamaño que no es múltiplo del tamaño de bloque, lo que significa que el
último bloque no estará totalmente ocupado por el archivo y se desperdicia parte del espacio del
bloque.
Este problema se agudiza cuanto mayor sea el tamaño del bloque. Por ejemplo, si
consideramos un archivo con un tamaño de 10 bytes y un sistema de archivos que considere un
tamaño de bloque de 4 Kb (4096 bytes). El bloque donde se encuentre el archivo sólo podrá contener
a éste y, de esta forma, se está utilizando únicamente un 0,25% de la longitud del bloque. Dicho de
otro modo, un bloque que puede albergar hasta 4096 bytes de información se está utilizando para
guardar sólo 10 bytes útiles.
El problema no afecta únicamente a los ficheros pequeños, con el tamaño de bloque anterior (4
KB) un fichero de 4097 bytes de longitud ocupará todo un bloque y un único byte de otro. Como, en
general, la longitud de un fichero no es múltiplo entero de la longitud del bloque, resulta que la
mayoría de los archivos consumen más espacio del que realmente necesitan.
Página 11
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
4.3.2 Fragmentación externa
La fragmentación externa depende del método de asignación de bloques a los archivos.
Cuando se crea un archivo se asignan bloques libres a éste. Estos bloques asignados pueden estar
desperdigados por todo el área de datos del disco duro. Normalmente, el sistema de archivos
buscará bloques contiguos y dependiendo del tamaño del archivo lo encontrará más o menos que
estén contiguos. Conforme se añaden nuevos archivos los fragmentos de bloques contiguos se harán
más pequeños hasta que alcanzan un tamaño que no permiten ser asignados más que a archivos
pequeños. Si un archivo es muy grande y no puede ser colocado de forma contigua ocupará bloques
discontinuos desperdigados por todo el disco. Esto implica una ralentización a la hora de leer los
datos del archivo ya que obligará al cabezal de lectura y escritura a moverse con más frecuencia para
reunir los fragmentos desperdigados a los largo del disco.
Este problema lo sufre especialmente NTFS y FAT, y en menor medida ext2,3,4. Algunos
sistemas operativos incluyen herramientas para desfragmentar el disco duro, que intenta compactar
los archivos de forma que ocupen espacio contiguo. Sin embargo, esta operación supone la
paralización del sistema mientras se realiza y poco después el disco volverá a estar fragmentado.
4.4 Estructura lógica de un disco duro
La estructura lógica de un disco duro indica la forma en que se organiza su espacio de
almacenamiento. Todos los discos duros pueden dividirse en particiones. Una partición es un
espacio de almacenamiento contiguo del disco duro con un sistema de archivos y donde puede
residir un sistema operativo. El número y tamaño de las particiones varía, ya que es a elección del
usuario, pero el tamaño siempre se define como un número de cilindros. El número y el espacio que
ocupa cada partición se almacenan en la tabla de particiones.
En principio, cada disco duro está formado por:
✔
Registro Maestro de Arranque (MBR Master Boot Record).- Es el primer sector del disco duro o
sector 0. Contiene información
✔
Espacio particionado.- Espacio del disco duro que está asignado a las particiones.
✔
Espacio sin particionar.- Espacio libre que no ha sido asignado a ninguna partición y que se
pueden utilizar para definir nuevas particiones.
Una de las particiones en la tabla se marca como activa. Cuando el ordenador arranca, la BIOS
lee y ejecuta el MBR. Lo primero que hace el programa MBR es localizar la partición activa, leer su
primer bloque, conocido como bloque de arranque, y ejecutarlo. El programa en el bloque de
arranque carga el sistema operativo contenido en la partición. Por cuestión de uniformidad, cada
partición comienza con un bloque de arranque, aunque no contenga un sistema operativo que se
pueda arrancar, ya que podría contener uno en el futuro.
Existen dos esquemas de particionamiento de un disco duro las cuales se verán a continuación.
4.4.1 MBR
Con este esquema, en el MBR se almacena el cargador de arranque del sistema operativo y la
tabla de particiones. El cargador de arranque es una pequeña aplicación que ocupa los primeros 446
bytes y que se encarga de buscar la partición activa para posteriormente cargar y ejecutar el arranque
Página 12
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
del sistema operativo instalado en dicha partición y que reside en el primer bloque de la partición.
La tabla de particiones ocupa los últimos 64 bytes y solo almacena las 4 particiones primarias
(16 bytes por cada una) que este esquema contempla. En cada entrada de la tabla almacenará el tipo
y los límites de la partición. Los límites se almacenan en dos formas, el primer y último sector de la
partición en formato CHS y el primer sector LBA con el número de sectores de la partición.
Como podemos ver hay una limitación. La tabla de particiones solamente puede almacenar 4
particiones. Para superar este límite se puede definir una partición extendida, la cual solo se usa para
almacenamiento. En este caso podemos tener tres particiones primarias y una extendida. La partición
extendida puede dividirse en unidades lógicas sin límite.
Figura 1.- Particiones MBR
El único inconveniente es que no se puede instalar un sistema operativo en una unidad lógica,
ya que no es arrancable.
Para llevar un registro de las particiones o unidades lógicas se emplea la entrada en la tabla de
particiones correspondiente a la partición extendida. Esta entrada apunta a una nueva tabla de
particiones similar a la ya estudiada, de la que sólo se utilizan sus dos primeras entradas. La primera
entrada corresponde a la primera partición lógica; la segunda, apuntará a una nueva tabla de
particiones. Esta nueva tabla contendrá en su primera entrada la segunda partición lógica y en su
segunda, una nueva referencia a otra tabla. De esta manera, se va creando una cadena de tablas de
particiones hasta llegar a la última, identificada por tener su segunda entrada en blanco.
4.4.2 GPT
La tabla de partición GUID (GPT) es el esquema de particiones en sistemas que disponen de EFI,
propuesto por Intel para reemplazar a la BIOS. La GPT sustituye al MBR usado con el BIOS. En la figura
siguiente se describe el esquema GPT en un disco duro el cual tiene los siguientes componentes.
✔
MBR.- El primer sector del disco sigue siendo el MBR. El principal propósito de este sector al
principio del disco es evitar que utilidades de disco basadas en MBR no reconozcan o
estropeen discos basados en GPT.
✔
La cabecera de la tabla de particiones.- Define los bloques de disco que pueden ser utilizados
por el usuario. También define el número y tamaño de las entradas de partición que
conforman la tabla de particiones. La cabecera contiene el GUID del disco (Globally Unique
Identifier, Identificador Global Único). Registra su propio tamaño y localización (siempre LBA 1),
y el tamaño y la localización de la cabecera y tabla de la GPT secundarias (siempre en el último
sector del disco). Es importante que también contiene una suma de comprobación CRC32
para sí mismo y para la tabla de partición, que se verifica por los procesos EFI durante el
arranque.
✔
Entradas de partición.- Las entradas de partición almacenan la información de cada partición.
Los primeros 16 bytes designan el tipo de partición GUID. Los siguientes 16 bytes contienen
Página 13
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
otro GUID único para la partición. Los bloques LBA de comienzo y final que delimitan la
partición en el disco también se registran aquí, codificados como enteros de 64 bits. También
se reserva un espacio para los nombres de las particiones y otros atributos.
Figura 2.- Esquema GPT
4.5 Gestión del espacio libre
El espacio en disco es limitada, por tanto es necesario reutilizar el espacio usado por los
archivos eliminados para los nuevos archivos. Para controlar el espacio libre en disco, el sistema
mantiene una lista de espacio libre, que registra todos los bloques del disco que están libres, es decir,
que no están asignados a un archivo. Para crear un archivo, se recorre la lista de espacio libre hasta
encontrar espacio suficiente, y lo asignamos al nuevo archivo; luego se elimina este espacio de la lista.
Al eliminar un archivo se agrega su espacio en disco a la lista de espacio libre.
4.5.1 Vector de bits
En muchos casos la lista se espacio libre se implementa como un mapa de bits o un vector de
bits, donde cada bloque se representa con un bit. El bit es 0 si el bloque está libre, si está ocupado, el
bit es 1.
La principal ventaja de esta estrategia es que resulta bastante sencillo y eficiente encontrar n
bloques libres consecutivos en el disco. Es más, muchos ordenadores ofrecen instrucciones de
manipulación de bits que pueden usarse eficazmente para ese fin. Por desgracia, los vectores de bits
no son eficientes si no se conserva todo el vector en memoria principal. Es posible conservarlo en
Página 14
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
memoria si se trata de discos pequeños, pero no para los de mayor tamaño.
4.5.2 Lista enlazada
Otra estrategia consiste en enlazar todos los bloques libres del disco, manteniendo un puntero
al primer bloque libre, el cual contiene otro puntero al siguiente bloque libre, etc. Este esquema no es
eficiente, ya que para recorrer la lista tenemos que leer cada uno de los bloques, lo que representa
un tiempo considerable de E/S.
4.5.3 Agrupamiento
Una variante de la estrategia de la lista enlazada es almacenar en el primer bloque las
direcciones de n bloques libres. Los primeros n-1 bloques están libres y el último contiene la dirección
en disco de otro bloque que contiene las direcciones de otros n bloques libres. Lo importante de este
método es que pueden encontrase con rapidez las direcciones de una gran cantidad de bloques
libres.
4.5.4 Recuento
Otra estrategia consiste en aprovechar que, generalmente, varios bloques contiguos se pueden
asignar o liberar simultáneamente, en especial cuando se utiliza la asignación contigua. En esta forma,
en vez de mantener una lista de n direcciones libres en disco podemos tener la dirección del primer
bloque libre y los n bloques libres contiguos que le siguen. Así, cada entrada de la lista de espacio libre
consiste en una dirección en disco y un recuento o contador. Aunque cada entrada requiere más
espacio del que necesitaría una simple dirección de disco, la lista será más pequeña, siempre y
cuando el recuento sea generalmente mayor que uno.
4.6 Asignación de archivos
Una de las aspectos más cruciales en la gestión de los discos es asignar bloques a un archivo. El
problema consiste en cómo asignar espacio a estos archivos para que se utilice eficazmente el
espacio en disco y se pueda acceder a los archivos con rapidez. Existen tres métodos de uso común
para asignar el espacio en disco: contiguo, enlazado e indexado, cada uno con sus ventajas y
desventajas. Por eso, algunos sistemas permiten los tres métodos, aunque es más normal que un
sistema emplee un método concreto para todos los archivos.
4.6.1 Asignación contigua
El método de asignación contigua requiere que cada archivo se almacene como un bloques
contiguos en disco. Para leer el archivo se leen bloques uno detrás de otro. Solo es necesario mover
la cabeza cuando se pasa del último sector de un cilindro al primer sector del siguiente, y en este caso
sólo hay que desplazarla una pista. De esta manera, el número de posicionamientos en disco para
lograr el acceso a archivos asignados contiguamente es mínimo, al igual que el tiempo de
posicionamiento cuando éste se requiere.
Página 15
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
Figura 3.- Asignación contigua
La entrada del directorio para cada archivo indica la dirección del bloque inicial y el número de
bloques ocupados por el archivo. El problema con la asignación contigua consiste en encontrar
espacio para un nuevo archivo. Si el archivo que hay que crear tiene una longitud de n bloques,
debemos recorrer la lista de espacio libre hasta encontrar n bloques libres contiguos. Si se trata de un
vector de bits, necesitamos encontrar n bits seguidos con valor 0; en una lista de direcciones y
recuentos, se requiere un recuento de por lo menos n.
A la hora de asignar espacio en disco a un nuevo archivo a partir de una lista de huecos libres
hay tres estrategias:
✔
Primer ajuste.- Se asigna el primer espacio libre contiguo encontrado que puede albergar al
nuevo archivo.
✔
Mejor ajuste.- Se asigna el espacio libre contiguo más pequeño que puede albergar al nuevo
archivo.
✔
Peor ajuste.- Se asigna el espacio libre contiguo más grande que puede albergar al nuevo
archivo.
Las simulaciones han mostrado que el primer ajuste y el mejor ajuste son mejores que el peor
ajuste en cuanto al tiempo y la utilización del almacenamiento. Del primer ajuste y el mejor ajuste,
ninguno es definitivamente superior al otro en términos de utilización del almacenamiento, aunque
por lo general el primer ajuste es más rápido.
Estos algoritmos presentan problemas de fragmentación externa. Al asignar y eliminar archivos,
el espacio libre en disco se divide en pequeños pedazos. La fragmentación externa surge cuando el
espacio total en disco es suficiente para atender una solicitud, pero este espacio no es contiguo, ya
que el almacenamiento está dividido en muchos huecos pequeños.
Con la asignación contigua se presentan otros problemas; uno de los principales consiste en
determinar cuánto espacio se necesita para el archivo. Al crear un archivo, hay que encontrar y
asignar todo el espacio que necesitará. En algunos casos es fácil determinarlo, por ejemplo al copiar
un archivo, pero casi siempre será difícil estimar el tamaño de un archivo de salida.
Otro problema se presenta a la hora de añadir información al archivo. Si a ambos extremos del
archivo no hay espacio libre no puede extenderse este, lo que obliga a reservar espacio para un
archivo, implicando un desperdicio en el almacenamiento.
4.6.2 Asignación enlazada
La asignación enlazada resuelve los problemas que se presentaban en el apartado anterior, ya
Página 16
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
que cada archivo es una lista enlazada de bloques de disco que pueden encontrarse en cualquier
parte del disco. El directorio contiene un puntero al primer y último bloque del archivo. Cada bloque
del archivo contiene un puntero al siguiente.
Figura 4.- Asignación enlazada
Es fácil crear un archivo. Simplemente creamos una nueva entrada en el directorio del
dispositivo. Con la asignación enlazada, cada entrada del directorio tiene un puntero al primer bloque
del archivo en el disco. En un principio se asigna el valor NULO para representar un archivo vacío, y
también se asigna cero al campo tamaño. Una escritura a un archivo quita el primer bloque disponible
de la lista de espacio libre y escribe en él; luego se enlaza el nuevo bloque al final de archivo. Para leer
un archivo, basta con leer los bloques siguiendo los punteros.
Con la asignación enlazada no hay fragmentación externa, puesto que como todos los bloques
están enlazados, cualquiera de la lista de espacio libre puede utilizarse para satisfacer una solicitud.
Observe que tampoco es necesario declarar el tamaño del archivo durante su creación. El archivo
puede continuar su crecimiento mientras queden bloques libres.
No obstante, la asignación enlazada tiene desventajas. El mayor problema es que sólo puede
aplicarse eficazmente con archivos de acceso secuencial. Para encontrar el bloque i de un archivo
tenemos que comenzar en el principio del archivo y seguir los punteros hasta llegar al bloque. Cada
acceso a un puntero implica una lectura del disco, por lo que es poco eficiente en archivos de acceso
directo.
Otro problema es el espacio que ocupan los punteros, pero el mayor problema es la
confiabilidad. Como los archivos están enlazados por punteros dispersos por todo el disco, considere
lo que puede suceder si se pierde o daña un puntero. Un error en el software del sistema operativo o
una avería en el hardware del disco pueden provocar que se elija el puntero incorrecto, enlazando el
archivo a la lista de espacio libre o a otro archivo diferente.
Página 17
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
4.6.3 Asignación enlazada usando una tabla en memoria
Consiste en mantener en memoria una tabla con un elemento por cada bloque del disco. El
elemento i contiene el índice del siguiente bloque del archivo. El elemento del último bloque del
archivo contiene -1 o un marcador especial. A esta tabla se le conoce como FAT (File Allocation Table).
Utilizando esta organización, el bloque completo está disponible para los datos. Además, el
acceso aleatorio es mucho más sencillo. Aunque aún se debe seguir la cadena para encontrar un
desplazamiento dado dentro del archivo, la cadena está completamente en memoria y se puede
seguir sin necesidad de hacer referencias al disco. Al igual que el método anterior, la entrada de
directorio necesita mantener sólo un entero (el número de bloque inicial) y aún así puede localizar
todos los bloques, sin importar lo grande sea el archivo.
La principal desventaja de este método es que toda la tabla debe estar en memoria todo el
tiempo para que funcione. Con un disco de 200 GB y un tamaño de bloque de 1 KB, la tabla necesita
200 millones de entradas, una para cada uno de los 200 millones de bloques de disco. Cada entrada
debe tener un mínimo de 3 bytes. Para que la búsqueda sea rápida, deben tener 4 bytes. Así, la tabla
ocupará 600 MB u 800 MB de memoria principal todo el tiempo, dependiendo de si el sistema está
optimizado para espacio o tiempo. Esto no es muy práctico. Es claro que la idea de la FAT no es
adecuada en los discos grandes.
4.6.4 Asignación indexada
La asignación enlazada resuelve todos los problemas de fragmentación externa y declaración
de tamaño de la asignación contigua, pero no ayuda al acceso directo, pues los bloques están
dispersos por todo el disco, al igual que los punteros a los bloques. La asignación indexada resuelve
este problema reuniendo todos los punteros en un solo lugar: el bloque de índices.
Cada archivo tiene su propio bloque de índices, el cual es un vector de direcciones de bloques
en disco. La entrada i en el bloque de índices apunta al bloque i del archivo. El directorio contiene la
dirección del bloque de índices. Para leer el bloque i, usamos el puntero de la entrada i del bloque de
índices para localizar y leer el bloque deseado.
Al crear el archivo, se asigna NULO a todos los punteros del bloque de índices. Cuando el
bloque i se escribe por primera vez se saca un bloque de la lista de espacio libre y se coloca su
dirección en la entrada i del bloque de índices.
La asignación indexada permite el acceso directo, sin problemas de fragmentación externa, ya
que puede usarse cualquier bloque del disco para atender una solicitud de espacio adicional.
La asignación indexada presenta un problema de desperdicio de espacio. La mayoría de los
archivos son pequeños. Supongamos que tenemos un archivo de sólo uno o dos bloques. Con la
asignación indexada hay que asignar todo el bloque de índices, aunque sólo uno o dos apuntadores
no serán nulos.
Al llegar a este punto surge la duda sobre el tamaño del bloque de índices. Cada archivo debe
tener un bloque de índices, por lo que queremos que éste sea lo más pequeño posible. Sin embargo,
si es demasiado pequeño, no podrá almacenar todos los punteros para un archivo grande, por lo que
es necesario un mecanismo para tratar con esta situación:
✔
Esquema enlazado. Un bloque de índices normalmente es un bloque en disco; por
Página 18
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
consiguiente, puede leerse y escribirse directamente. Para permitir archivos de gran tamaño,
podemos enlazar varios bloques de índices. Por ejemplo, un bloque de índices puede
contener un pequeño encabezado con el nombre del archivo y un conjunto de los primeros
cien punteros de bloques en el disco. El siguiente puntero, el último en el bloque de índices, es
NULO, si se trata de un archivo pequeño, o un puntero a otro bloque de índices, si el archivo
es grande.
✔
Índice multinivel. Una variante de la representación enlazada consiste en emplear un bloque
de índices separado que apunte a los bloques de índices, que a su vez apunta a los bloques
del archivo. Para lograr el acceso a un bloque, el sistema operativo utiliza el índice del primer
nivel para encontrar el de segundo nivel, y así localizar el bloque de datos. Este procedimiento
puede continuar a un tercer o cuarto nivel, pero generalmente bastan dos niveles. Si podemos
almacenar 256 punteros en un bloque de índices, con dos niveles se permiten 65.536
bloques, que representan a 1.024 bytes por bloque un archivo de 67.108.864 bytes, un
tamaño bastante considerable.
✔
Esquema combinado. Otra alternativa que se usa en el sistema UNIX es conservar, digamos
los primeros 15 punteros del bloque de índices en el directorio del dispositivo. Los primeros
12 apuntan a bloques directos; es decir, contienen las direcciones de bloques que almacenan
datos del archivo. De esta manera no es necesario un bloque de índices aparte para archivos
pequeños (máximo 12 bloques). Los otros tres punteros hacen referencia a bloques
indirectos. El primer puntero del bloque indirecto es la dirección de un bloque indirecto
sencillo, un bloque de índices que no contiene datos, sino las direcciones de bloques que sí
los contiene. Luego está el puntero del bloque indirecto doble, que contiene la dirección de un
bloque que almacena las direcciones de otros bloques que apuntan a los bloques de datos. El
último apuntador contendría la dirección de un bloque indirecto triple.
5 Sistemas de archivos más conocidos
A continuación se describen los sistemas de archivos más conocidos. El sistema FAT y sus
variantes se han empleado en sistemas MS-DOS y Windows, hasta su reemplazo por NTFS. Los
sistemas de archivos ext2,3 y 4 son los habituales en los sistemas GNU/Linux.
5.1 Sistema de archivos FAT
Este sistema de ficheros se basa en una tabla de asignación de archivos (FAT File Allocation Table)
que actúa de índice para localizar un archivo en el dispositivo de almacenamiento. En ella se
almacenan los grupos o cluster utilizados por cada archivo, los grupos libres y los defectuosos.
No hace falta decir que en unidades de gran capacidad, la tabla es necesariamente muy grande.
Generalmente se carga en memoria para agilizar los procesos, ya que es de uso constante y cualquier
operación de lectura/escritura tiene que utilizarla.
Existen varios tipos de este sistema de ficheros dado que ha ido evolucionando y adaptándose.
Primero surgió la FAT de 12 bits, posteriormente la de 16 bits y finalmente la de 32 bits. Estos tres
tipos de sistemas de ficheros poseen la misma estructura lógica y su funcionamiento es, en esencia, el
mismo.
Página 19
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
Figura 5.- Estructura del sistema de archivos FAT
La estructura del sistema de ficheros FAT está formada por:
✔
El sector de arranque.- Siempre es el primer sector de la partición (volumen) e incluye
información básica, punteros a las demás secciones, y la dirección de la rutina de arranque del
sistema operativo.
✔
Área FAT.- Contiene dos copias de la tabla de asignación de archivos (por motivos de
seguridad). Estos son mapas de la partición, indicando qué clusters están ocupados por los
archivos.
✔
Directorio raíz.- Es el índice principal de carpetas y archivos.
✔
Área de datos.- Es el lugar donde se almacena el contenido de archivos y carpetas.
5.1.1 La tabla FAT
La tabla FAT es un índice de todos los clusters existentes en el sistema de archivos. Mediante
este índice se tiene información del estado de cada cluster y de los clusters ocupados por cada
archivo. Esta tabla se encuentra a continuación del sector de arranque y su copia inmediatamente
adyacente.
En la tabla FAT existe un campo o celda (de 12, 16 o 32 bits, según la versión de FAT) por cada
cluster de la partición denominado entrada. El campo n de la FAT representa el cluster n de la
partición.
El sistema FAT de 32 bits tiene las entradas de 32 bits, aunque los 4 primeros están reservados
y no se utilizan, por lo que su capacidad de gestión es de 2 28 = 268.435.456 clusters distintos. Esto
implica que, su máxima capacidad es de 8 TB, considerando un grupo de tamaño máximo teórico de
32 KB. Sin embargo, en la práctica FAT32 solamente permite particiones de 2 TB como máximo.
Cada entrada de la FAT puede indicar:
✔
Si el cluster correspondiente está disponible.
✔
Si el cluster correspondiente está en uso.
✔
Si el cluster correspondiente está dañado.
✔
Si es el último cluster de un archivo.
✔
Si es el número del siguiente cluster de un fichero.
Hay que darse cuenta de la importancia de esta tabla, ya que su pérdida significa la pérdida de
todos los datos del sistema de ficheros. Por ello esta tabla se encuentra duplicada, a continuación de
la tabla original, para intentar asegurar su integridad. Todas las operaciones sobre ficheros que
Página 20
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
impliquen la modificación de la tabla original provocan la misma modificación en la tabla copia. Tan
sólo en el caso en que se descubran defectos en la tabla original se procederá a sustituirlos, si es
posible, por los datos guardados en la tabla copia.
5.1.2 El directorio raíz
El directorio raíz es un índice con información de los archivos y directorios del volumen. Se
encuentra a continuación de la copia de la tabla FAT. Además en el directorio raíz se almacena
también la etiqueta del disco. Cada entrada en un directorio es de 47 bytes en FAT32 y contiene
información como el nombre y extensión del archivo, sus atributos, el espacio reservado, fecha y hora
de la última modificación, el tamaño y el número del primer cluster. Para el tamaño se reservan 4
bytes (32 bits), de ahí que el tamaño máximo de archivo sea de 2 32 = 4GB.
El número del primer cluster de cada archivo, junto con otros datos del mismo, se anota como
entrada en el directorio, como mencionamos anteriormente. A su vez, la entrada correspondiente a
dicho primer cluster en la tabla FAT, contiene el número de segundo cluster del fichero, cuya entrada
contiene el número del tercero, etc. El proceso se repite sucesivamente con todos los cluster del
fichero hasta llegar al último, cuya entrada no puede contener el número del siguiente, porque no
existe, de forma que contiene una marca especial EOF (End of file) de final de fichero.
Hay que darse cuenta de que es en la entrada de directorio dónde se encuentra el primer
clúster dónde se encuentran los datos del fichero. Por lo que una modificación o pérdida de este
campo o de la entrada en sí provoca la pérdida de los datos del fichero.
5.1.3 El área de datos
El área de datos almacena todos los subdirectorios y ficheros de los usuarios. Ocupa
aproximadamente, el 98 % del espacio del sistema. Tamaño de bloque lo escoge el sistema operativo
en función del tamaño a direccionar.
Tamaño de la partición
< 128 Mb
Tamaño de Cluster
512 bytes
128 Mb – 256 Mb
256 Mb – 512 Mb
4 Kb
512 Mb – 1 Gb
1 Gb – 2 Gb
2 Gb – 8 Gb
8 Gb – 16 Gb
8 Kb
16 Gb – 32 Gb
16 Kb
32 Gb – 2 Tb
32 Kb
Página 21
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
5.2 Sistemas de archivos NTFS
NTFS (New Technology File System) es un sistema de archivos de Microsoft incluido en todas las
versiones de Windows desde 2000 y XP. Reemplaza al sistema de archivos FAT en sistemas Windows
con el objetivo de crear un sistema de archivos eficiente, robusto y con seguridad incorporada desde
su base. Entre sus características están:
✔
NTFS permite definir el tamaño del clúster de forma independiente al tamaño de la partición.
✔
El tamaño mínimo del bloque es de 512 bytes.
✔
Este sistema también admite compresión nativa de archivos y encriptación.
✔
Permite el uso de nombres extensos, aunque, a diferencia de FAT32, distingue entre
mayúsculas y minúsculas.
✔
Es un sistema ideal para particiones de gran tamaño. El tamaño mínimo de la partición es de
10 GB y el máximo recomendado en la práctica es 2 TB.
✔
Puede manejar volúmenes de hasta 16 TB usando clústeres de 4 KiB.
✔
Utiliza una estructura de datos avanzadas (árboles-B) para optimizar el rendimiento, ofrecer
mejor estabilidad y aprovechamiento del espacio en disco.
✔
Contempla el uso de las listas de control de acceso para garantizar la seguridad de los
archivos.
✔
Realiza registro de transacciones (Journaling). El concepto de journaling se refiere a que si se
arranca el sistema sin haberlo cerrado correctamente no es necesario hacer un chequeo ya
que la recuperación sucede de forma automática a partir de su último estado. NTFS es un
sistema seguro ante fallos que puede auto corregirse en casi todas las situaciones.
Su principal inconveniente es que necesita para sí mismo una buena cantidad de espacio en
disco duro, por lo que no es recomendable su uso en discos con menos de 400 MB. La estructura de
una partición con el sistema de archivos NTFS es la siguiente:
✔
Boot Partition Record.- En los primeros 8Kb se almacena la información sobre el volumen (tipo
de partición, capacidad, etc.), junto con el bloque del código básico para iniciar al sistema
operativo.
✔
Área MFT (Metadata File Table). La tabla maestra contiene el donde y el como están
almacenados los archivos junto con todos los atributos asociados a estos.
✔
Archivos del Sistema.- Contiene la información sobre los datos y operaciones que se realizan
sobre el sistema de archivos: espacio libre, log de transaccionalidad, etc.
✔
Área de archivos.- Donde realmente se almacenan los datos del usuario.
En NTFS puede tenerse tamaño de cluster desde 512 bytes hasta 64 KBytes. Los discos NTFS se
Página 22
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
dividen, simbólicamente, en dos partes:
1. El primer 12% del disco se asigna al área MFT, un espacio en el cual crecen los metafile.
2. El resto es el área de datos. No obstante lo dicho anteriormente cualquier informe del SO
acerca del espacio libre en el disco incluye el área MFT. El mecanismo del área MFT es el
siguiente: cuando no haya espacio para almacenar mas archivos se toma espacio del área MFT
y se reduce su longitud una vez que vuelve a existir espacio el área MFT vuelve a crecer.
5.2.1 MFT
La MFT se describe como una base de datos relacional compuesta de filas (los registros) y
columnas (los atributos). Habrá un registro (entrada en la tabla) por cada archivo que exista en el
sistema de archivos. Ahora bien, el concepto de archivo es bastante amplio: toda entidad almacenada
individualmente es considerada un archivo. La propia MFT es considerada un archivo y tiene su propia
entrada en la MFT. Las primeras 16 entradas de la MFT están reservadas para almacenar archivos del
sistema, es decir, información sobre el propio sistema de archivos. El resto de entradas se
corresponden con los archivos y carpetas de datos.
La MFT es un directorio centralizado que contiene información de todos los archivos del disco
incluyéndolo a él mismo. Este archivo se divide en registros de longitud fija (usualmente un 1 KByte) y
cada registro corresponde a algún archivo. También se le denomina descriptor y una copia suya se
almacena en el segundo registro. El tercer registro contiene el archivo de registro. Este es un archivo
que contiene todas las acciones llevadas a cabo en la partición para el caso de necesitar hacer una
recuperación si ocurre un fallo.
A continuación se muestran los registros correspondientes a los archivos del sistema.
Página 23
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
Figura 6.- Metafiles en NTFS
Los siguientes registros, que constituyen lo que se conoce como el núcleo, hacen referencia a
cada archivo y directorio de la partición en la forma de objetos con atributos. Esto implica que la
información que concierne a cada archivo se almacena en un archivo y éste se registra dentro de la
MFT.
Toda la información acerca de los archivos (todo menos los datos) se almacena en registros
Página 24
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
MFT: su nombre, longitud, posición en el disco, etc., para lo cual se pueden usar uno o varios registros
MFT que no tienen que estar contiguos. Los datos del archivo pueden estar en un registro MFT, por
ejemplo un archivo sin datos o un archivo pequeño que pudiera estar dentro del límite de registros
MFT.
5.2.2 Los archivos del sistema
Hemos visto que los 16 primeros archivos en la MFT son archivos del sistema, cada uno de ellos
es responsable de algún aspecto del SO y contienen información del sistema de archivos, no siendo
accesibles para el SO. Estos archivos se denominan metafiles y sus nombres comienzan por $. El
primero y más importante es el $MTF que hace referencia al área MFT que está situado en ésta. Estos
primeros 16 elementos de la MFT constituyen la única parte del disco que tiene una posición fija.
Resulta interesante notar que existe una segunda copia de los tres archivos registros y está
almacenada exactamente en la mitad del disco, el resto de los metafiles se pueden almacenar en
cualquier otro archivo que resida en cualquier parte del disco.
5.3 Sistema de archivos ext2, ext3 y ext4
Los sistemas de archivos ext2 (second extended filesystem), ext3 (third extended filesystem) y ext4
(fourth extended filesystem) son los sistemas de archivos que se han utilizado por el kernel de Linux.
Estos sistema de ficheros se basa, principalmente, en el concepto de inodos y en la utilización de
mapas de bits para la gestión del espacio libre.
Son de los sistemas de ficheros más completos y más eficientes, en cuanto a los objetivos a
conseguir. Por el contrario, también son bastante más complejo en cuanto a su estructura y a su
funcionamiento. Su estructura es la siguiente:
Figura 7.- Estructura del sistema de archivos ext2,3 y 4
Las diferencias entre ext2, ext3 y ext4 con las siguientes.
Sistema de archivos
Características
ext2
✔
✔
✔
No contempla journaling.
Tamaño máximo de partición es de 32 Terabytes.
Tamaño máximo de archivo es de 2 TB.
ext3
✔
✔
Permite journaling, por tanto más seguro y fiable.
Tamaño máximo de partición y archivo igual que ext2.
ext4
✔
✔
✔
Permite journaling.
Tamaño máximo de partición de 1EB.
Tamaño máximo de archivo de 16 TB.
Página 25
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
✔
Permite escritura retrasada.
Ahora veremos los elementos de su estructura.
5.3.1 Grupos de bloques
El primer bloque (bloque de arranque) nunca es manejado por el sistema de archivos, dado que
esta reservado para el sector de arranque. El resto de la partición se divide en grupos de bloques,
reducen la fragmentación, dado que el kernel intenta mantener los bloques de datos de un archivo en
el mismo grupo de bloques, si es posible. Cada bloque en el grupo contiene algunas de las siguientes
piezas de información:
✔
Una copia del superbloque del sistema de archivos.
✔
Una copia del grupo de descriptores de grupos de bloques.
✔
Un mapa de bits de bloque.
✔
Un grupo de inodos.
✔
Un mapa de bits de inodos.
✔
Área de datos
Tanto el superbloque como los descriptores de grupo están duplicados en cada grupo de
bloques. Sólo el superbloque y los descriptores de grupos incluidos en el grupo de bloques 0 son
utilizados por el kernel, mientras que las demás copias se dejan sin modificar; de hecho, nunca las
mira.
Cuando se realiza una comprobación de consistencia del sistema de archivos, referencia el
superbloque y los descriptores de grupos de bloques de grupo 0 copiándolos en el resto de grupos
de bloques. Si se produce una corrupción de datos, y el superbloque y los descriptores de grupos del
grupo 0 se hacen inválidos, se puede referenciar las copias de otros grupos diferentes del 0.
Usualmente, las copias redundantes tienen suficiente información para permitir al programa de
comprobación retornar la partición a un estado consistente.
5.3.2 El superbloque
El superbloque forma base del sistema de ficheros, la información contenida aquí permite al
administrador del sistema de ficheros usar y mantener el sistema. Normalmente sólo se lee el
superbloque del grupo de bloque 0 cuando se monta el sistema de ficheros pero cada grupo de
bloque contiene una copia duplicada en caso de que se corrompa sistema de ficheros.
Fundamentalmente tiene la siguiente información:
✔
Tamaño total del sistema de archivos, en bloques o nodos-i.
✔
Número de bloques libres del sistema.
✔
Número de bloques reservados a nodos-I.
✔
Número de nodos-I libres.
✔
Dirección del primer bloque de datos.
Página 26
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
✔
Tamaño de un bloque de datos.
✔
Tamaño de un bloque parcial de datos.
✔
Hora de la última modificación sistema archivos.
✔
Hora integración (montaje) del sistema.
✔
Número de versión del sistema.
✔
Hora de la última verificación del sistema.
5.3.3 Descriptores de grupo
Cada grupo de bloque tiene una estructura de datos que lo describe denominada descriptores
de grupos. Como el superbloque, todos los descriptores de grupo se duplican en cada grupo de
bloque en caso de corrupción del sistema de fichero. Cada descriptor de grupo contiene la siguiente
información:
✔
Mapa de bits de los inodos y los bloques de datos.
✔
Tabla de inodos.- Contiene el número del primer bloque de la tabla de inodos.
✔
Área de datos.- Contiene los bloques de datos de los archivos.
Los mapas de bits sirven para determinar el estado, libre o usado, de una parte del sistema de
ficheros. En este sistema de ficheros existen dos mapas de bits:
✔
El mapa de bits de inodos.
✔
El mapa de bits de bloques de datos
Existe una relación entre cada bit del mapa de bits y cada bloque o inodo. De esta forma, si el
bit 305 del mapa de bits está marcado como usado, quiere decir que el bloque de datos o el inodo
305 está usado. Así, se consigue localizar bloques o inodos libres, de forma rápida y eficiente, cuando
sean necesarios.
5.3.4 Inodo
El inodo o nodo índice es la estructura de datos básica empleada por este sistema de ficheros
para localizar la información relativa a cada fichero. Este sistema de ficheros mantiene en cada grupo
descriptor todos los inodos en una tabla conocida como tabla de inodos situada a continuación del
mapa de bits.
Un inodo contiene toda la información acerca del fichero que representa y tiene acceso, en
mayor o menor medida, a los bloques usados por el fichero. Cada fichero guarda su información en
un inodo, por lo que el número máximo de ficheros está limitado por el número de inodos existentes,
aunque existan muchos bloques libres en el sistema.
La estructura de un inodo es fija y ocupa 128 bytes. Los principales campos de un inodo son:
Campo
Tipo y protección
Tamaño
2 bytes
Página 27
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
Identificador de usuario
2 bytes
Tamaño del fichero (en bytes)
4 bytes
Fecha último acceso
4 bytes
Fecha última modificación inodo
4 bytes
Fecha última modificación datos
4 bytes
Identificador del grupo de usuario
2 bytes
Número de enlaces
2 bytes
Punteros a bloques
52 bytes
Nótese que el nombre del fichero no se encuentra en el inodo correspondiente, sino que sólo
se encuentra en las entradas de directorio.
Los punteros a bloques indican los números de bloque dónde se encuentran los datos del
fichero. Estos punteros tienen la siguiente organización:
✔
10 punteros a bloques de datos, llamados punteros directos.
✔
1 puntero a un bloque con punteros directos a datos, llamado puntero simple.
✔
1 puntero a un bloque con punteros simples apuntando cada uno de ellos a bloques con
punteros directos, llamado puntero doble.
✔
1 puntero a un bloque de datos con punteros dobles apuntando a bloques con punteros
simples, que a su vez, apuntan a bloques con punteros directos, llamado puntero triple.
Los tres punteros indirectos dependen del tamaño de bloque para su funcionamiento. Dado
que, cada uno de ellos apunta a un bloque que contiene punteros, hay que saber cuántos caben en
un bloque, y para ello es necesario saber cuál es el tamaño de bloque del sistema. Una vez conocido,
supongamos 4 KB, se divide éste por el tamaño de un puntero (4 bytes) y se obtiene el número de
punteros por bloque, en este caso 1024 punteros.
5.3.5 Área de datos
El área de datos es la parte del sistema de ficheros destinada a almacenar los datos de los
ficheros. Se encuentra a continuación de los inodos y ocupa la mayor parte del sistema de ficheros,
cerca del 90%. En esta área se encuentra tanto los datos de los ficheros (definidos por el usuario)
como los bloques de punteros usados por los inodos.
Un directorio se comporta, como ya hemos visto anteriormente como un archivo. El contenido
de los directorios no apunta directamente a bloques de datos de los ficheros, sino a un inodo dónde
se encuentra la información del fichero.
El número de bytes por entrada del directorio depende de la versión, ya que hay versiones en
los que la longitud del nombre de un archivo puede llegar a 255 bytes y otras en las que sólo llega a
14. Pero, todas las entradas contienen:
✔
El número de inodo dónde se encuentran los datos del fichero, situado en los dos primeros
bytes.
Página 28
Rafael Lozano
✔
Gestión de E/S y los Sistemas de Archivos
El nombre del archivo situado en el resto de la entrada.
Además, cualquier directorio contiene un mínimo de dos entradas:
✔
Una referencia a si mismo (.).
✔
Una referencia al directorio de que depende o directorio padre (..), salvo en el directorio raíz,
que al ser el comienzo de la estructura, esta referencia también es sobre sí mismo.
Página 29
Rafael Lozano
Gestión de E/S y los Sistemas de Archivos
6 Bibliografía
WIKIPEDIA,
Hilo
de
ejecución
[acceso
septiembre
<http://es.wikipedia.org/wiki/Hilo_de_ejecuci%C3%B3n>
2014].
Disponible
en
TANENBAUM, A. T., Sistemas Operativos Modernos – 3ª Edición. 2009 Pearson Prentice Hall, ISBN 978607-442-046-3
Página 31