Está en la página 1de 29

Sistemas operativos

Tema 10: Sistemas de ficheros


Sistemas de ficheros
► El sistema de ficheros suele ser el aspecto más
visible de un SO para los usuarios.
► Objetivos:
ƒ Ofrecer una visión uniforme del almacenamiento de
información en memoria secundaria.
► ElSO oculta las propiedades físicas de los discos, y define
una unidad lógica de almacenamiento: el fichero.
ƒ Gestionar el espacio de almacenamiento y el acceso a la
información.
Sistemas de ficheros
► Los primeros SO soportaban tipos de ficheros,
incorporando código para interpretar su estructura
y contenido.
► Actualmente, se tiende a ver los ficheros como
secuencias no interpretadas de bytes.
ƒ Máxima flexibilidad, pero mínimo soporte: queda todo
en manos de las aplicaciones.
ƒ Todo lo más, el SO distingue ficheros ejecutables, y
tipos de documentos según el programa con que se
crean o editan.
Métodos de acceso a ficheros
► Acceso secuencial: se accede a las distintas partes de un
fichero una tras otra, en un orden predeterminado.
ƒ Al abrir un fichero, el puntero de L/E se sitúa al principio del
mismo.
ƒ Cada operación de L/E accede a la posición apuntada y hace que el
puntero avance a la posición siguiente.
► Acceso directo: se puede acceder a las distintas partes de
un fichero en cualquier orden.
ƒ Los ficheros se ven como secuencias de bloques de longitud fija.
ƒ Las operaciones de L/E indican un número de bloque relativo al
comienzo del fichero.
► Se puede simular de manera eficiente el acceso secuencial
sobre dispositivos de acceso directo, pero no viceversa.
Estructura física y lógica
Estructuras de sistemas de ficheros
► Muchos sistemas de ficheros combinan dos
estructuras distintas:
ƒ Directorio de dispositivo.
► Contiene información sobre las propiedades físicas de cada
fichero: localización en el dispositivo de almacenamiento,
tamaño, etc.
ƒ Directorio de ficheros.
► Contiene información sobre las propiedades lógicas de cada
fichero: nombre, tipo, propietario, permisos, etc.
► Lavinculación entre ambas estructuras se hace a
través de un identificador unívoco de fichero.
Directorio de nivel único
► Todas las entradas en el mismo nivel.

directorio

ficheros

► Solución adoptada en los directorios de dispositivo.


► No se utiliza en directorios de ficheros, por dos motivos
principales:
ƒ Falta de organización lógica.
ƒ Limitaciones al nombramiento: no podría haber dos ficheros con el
mismo nombre, aunque pertenecieran a distintos usuarios.
Directorio de dos niveles
► Un directorio por cada usuario.

so1 so2 so3 directorio raíz

directorios
p1.c p2.c func.h func.c p1.tgz notas p1.c p1b.c core
de usuario

ficheros

► Sólo se requiere unicidad de nombres dentro de cada


directorio.
► Un usuario puede acceder a los ficheros de otro indicando
caminos de búsqueda.
Estructura de árbol
► Generalización del directorio de dos niveles.
ƒ Los usuarios pueden crear subdirectorios.
home bin opt

so1 p1.pdf so2 bash gcc info share

prac1.c p1.pdf func.h func.c p1.tgz p1b.tgz p1.c texinfo web2c


Estructura de árbol
► Dos tipos de caminos:
ƒ Absolutos: desde el directorio raíz.
ƒ Relativos: desde el directorio actual.
► Existe
un único camino para cada fichero o
subdirectorio desde el directorio raíz.
Estructura de grafo acíclico
► Ficheros y subdirectorios pueden tener varios caminos
desde el directorio raíz (y, por extensión, varios nombres).

dict spell

list all w count count words list

list radc w7
Estructura de grafo acíclico
► El grafo acíclico facilita la compartición de ficheros y
subdirectorios entre usuarios.
ƒ Sin embargo, complica los mecanismos de generación de
estadísticas de disco, copia de seguridad, etc.
► Implementaciones:
ƒ Información replicada.
► Almodificar un fichero, por consistencia, hay que modificar igualmente
todas sus réplicas.
ƒ Una única copia, y enlaces a los ficheros o subdirectorios
compartidos.
► Al borrar un fichero o subdirectorio, se elimina un enlace.
► El fichero o subdirectorio se borra cuando no quedan enlaces a él (se
necesita un contador de referencias).
Estructura de grafo general
► Se permite la aparición de ciclos, enlazando subdirectorios
de nivel superior.
dict spell

list old count words list

list radc ipc w7


Estructura de grafo general
► La existencia de bucles complica la generación de
estadísticas y los mecanismos de copia de seguridad.
► Problemas con el borrado: pueden existir subdirectorios
con el contador de referencias a un valor distinto de cero,
y que sin embargo no son alcanzables desde el directorio
raíz.
ƒ Información inaccesible.
ƒ Se necesita un recolector de basura.
► Pocas ventajas con respecto al grafo acíclico Æ la
estructura de grafo general apenas se utiliza.
Asignación de espacio
Asignación de espacio
► Objetivos análogos a la gestión de memoria
principal:
ƒ Aprovechamiento de espacio.
ƒ Acceso eficiente a los ficheros.
► Compromiso común a todas las formas de
asignación:
ƒ Como el almacenamiento se realiza por bloques,
aparece una fragmentación interna media de ½ bloque
por fichero.
► ¿Mejor bloques pequeños?
ƒ Para reducir los accesos a disco, debería maximizarse la
cantidad de información leída en cada operación de E/S.
► ¿Mejor bloques grandes?
Asignación contigua
► A cada fichero se le asigna un conjunto de
bloques contiguos en disco.
0 1 2 ƒ Estrategias first-fit, best-fit o
worst-fit.
3 4 5 ƒ El directorio de dispositivo almacena la
dirección del primer bloque y el número de
bloques que le siguen.
6 7 8 ► Soporte eficiente para acceso secuencial y
para acceso directo.
9 10 11 ► Fragmentación externa.
ƒ Se requieren mecanismos de compactación.
► Otras cuestiones:
12 13 14 ƒ ¿Cómo saber cuánto espacio necesitará un
fichero?
15 16 17 ƒ ¿Qué hacer si un fichero crece y no hay
bloques libres después del último?

18 19 20
Asignación enlazada
► Se ve cada fichero como una
lista enlazada de bloques.
0 1 2 ƒ El directorio de dispositivo
almacena la dirección del
primer bloque.
3 4 5 ƒ Cada bloque almacena un
puntero al siguiente.
6 7 8 ► No hay fragmentación externa.
ƒ Aún así, la compactación puede
mejorar el rendimiento de la
9 10 11 E/S.
► Soporte eficiente sólo para
12 13 14 acceso secuencial.
► El espacio ocupado en punteros
se hace notorio con bloques
15 16 17 pequeños.
► La pérdida de un puntero hace
18 19 20 inaccesible el resto del fichero.
Asignación indexada
► Cada fichero tiene un bloque índice
(BI), con punteros a los bloques
BI 1 2 que almacenan sus datos.
ƒ El directorio de dispositivo almacena
la dirección del BI.
3 4 5 ► Soporte eficiente para acceso
secuencial y para acceso directo.
► No hay fragmentación externa.
6 7 8 ► Ficheros pequeños desaprovechan
gran parte de su BI Æ despilfarro
9 10 BI de espacio.
ƒ ¿Bloques pequeños?
► En el BI caben un determinado
12 13 14 número de punteros Æ tamaño
máximo de los ficheros limitado.
ƒ ¿Bloques grandes?
15 16 17

18 19 20
Bloques índice enlazados
► El último puntero de un
BI 1 2 bloque índice puede
apuntar a otro bloque
3 BI 5 índice.
ƒ No hay limitación de
6 7 8 tamaño.

9 10 11 ► Acceso más lento al final


de los ficheros.
BI 13 14

15 16 17

18 19 20
Bloques índice multinivel
► Los bloques índice de
BI1 BI2 BI2 primer apuntan a bloques
índice de segundo nivel, y
BI2 4 5 así sucesivamente.
6 7 8 ► Sólo apuntan a bloques de
datos los bloques índice de
9 10 11 nivel más bajo.
ƒ Sigue habiendo limitación de
12 13 14 tamaño.
► Se accede por igual a
15 16 17 cualquier parte de los
ficheros.
18 19 20
Gestión del espacio libre
Gestión de espacio libre
► La gestión del espacio libre implica:
ƒ Buscar y asignar espacio libre cuando se crea un fichero.
ƒ Registrar como libre el espacio que ocupaba un fichero que se
borra.
ƒ Actualizar el mapa del espacio libre cuando un fichero crece o se
trunca.
► Consideraciones importantes:
ƒ Espacio en disco necesario para almacenar el propio mapa de
espacio libre.
ƒ Facilidad para encontrar 1 bloque libre o n bloques libres contiguos.
ƒ Facilidad para actualizar el mapa de espacio libre.
Vector de bits
► Un bit por cada bloque de disco.
0 1 2
ƒ 0 Æ bloque libre
3 4 5 ƒ 1 Æ bloque asignado

6 7 8
101000011101001100000
9 10 11
► Porcuestiones de eficiencia, el
12 13 14
vector se suele cargar en
15 16 17 memoria.
18 19 20
Vector de bits
► Ventajas:
ƒ Fácil de implementar y usar con cualquier método de asignación.
ƒ Facilidad para encontrar un bloque libre o un conjunto de bloques
contiguos libres.
ƒ Actualización sencilla.

101000011101001100000

► Inconveniente: tamaño excesivo con discos grandes.


ƒ Ejemplo: disco de 16 GB y bloques de 512 bytes Æ vector de 8MB.
► Reservar 8 MB de memoria, o recorrer hasta 16384 bloques de disco.
ƒ Solución: usar bloques libres para gestionar el espacio libre.
Lista enlazada de bloques libres
► Mínimo desperdicio de
0 1 2 espacio: sólo se necesita
almacenar la dirección del
3 4 5 primer bloque libre.
► Con asignación no
6 7 8 contigua, para buscar n
bloques libres hay que leer
9 10 11 n-1 bloques.
► Con asignación contigua,
12 13 14 por lo general, hay que
leer muchos más.
15 16 17

18 19 20
Lista enlazada de secciones libres
0 ► Cada bloque de la lista
0 1 2 enlazada indica
3
cuántos bloques libres
3 4 5 le siguen.
6 7 8 ƒ Mayor eficiencia para la
0 asignación contigua.
9 10 11
1
12 13 14
4
15 16 17

18 19 20
Lista enlazada de bloques índice
► Un bloque índice contiene
0 BI 2 un cierto número de
punteros a bloques libres,
3 4 5 más un puntero a otro
bloques índice.
BI 7 8
ƒ Se pueden localizar
rápidamente un gran
9 10 11 número de bloques libres.

12 13 14 ► Alternativa más eficiente


para asignación contigua:
15 BI 17 apuntar a secciones de
bloques libres contiguos.
18 19 BI
Fin

También podría gustarte