Beruflich Dokumente
Kultur Dokumente
Captulo 8
Gestin de Archivos y Directorios
Objetivos:
Entender los conceptos de fichero y directorio
Mostrar los mtodos de acceso y los mecanismos de
proteccin
Estudiar las semnticas de comparticin
Comprender la estructura del sistema de ficheros
Presentar las llamadas al sistema y ejemplos de programacin en
LINUX y Windows
Presentar distintas tcnicas de gestin de archivos y directorios
a nivel de diseo.
Contenido
Sistema de archivos
El acceso a los dispositivos es:
Incmodo
Detalles fsicos de los dispositivos
Dependiente de las direcciones fsicas
No seguro
Si el usuario accede a nivel fsico no tiene restricciones
Concepto de archivo
Un espacio lgico de direcciones contiguas usado para
almacenar datos
Tipos de archivos:
Datos:
numricos
carcter
binarios
Programas:
cdigo fuente
archivos objetos (imagen de carga)
Contenido
Documentos
10
Ejemplos de representacin
Nombre
Atrib.
Size KB
Agrup. FAT
cabecera
Atributos
Tamao
Nombre
Seguridad
Datos
Vclusters
11
Tiras de caracteres
Longitud: fija o variable
Sensibles a tipografa
Extensin: obligatoria o no
Los usuarios usan nombres
lgicos de este estilo
Los directorios relacionan
nombres lgicos y
descriptores internos de
ficheros
El sistema de ficheros
trabaja con descriptores
internos
Sistemas operativos: una visin aplicada
exe, com,
bin, none
c, s, asm, p
pas, f77
13
Significado
Programa ejecutable
Z, z, zip
gif, jpg
Archivos de imgenes
o, obj
txt, doc
Archivos de texto
tex, roff
html
12
14
rbol de registros
Clave
Cabecera
Mdulo
objeto
Cabecera
Registros de
longitud
variable
Mdulo
objeto
Archivo de
biblioteca
Byte o
registro de
longitud fija
Sistemas operativos: una visin aplicada
15
Fichero
indice
Fichero principal
16
Nmero mgico
Nmero de secciones
Cabecera
primaria
Cabecera de
seccin 1
Tipo de seccin,
tamao de la seccin
direccin virtual
Cabecera de
seccin n
Tipo de seccin,
tamao de la seccin
direccin virtual
Seccin 1
Cdigo
Seccin 2
Datos con
valor inicial
Seccin n
Datos con
valor inicial
Posicin
...
Opciones
Informacin
de carga
Tabla de
smbolos
Otra
informacin
17
18
Bloque
Unidad de transferencia
2n sectores
Parmetro fijo por sistema de archivos
Agrupacin
Unidad de asignacin
2p bloques
Aumenta la secuencialidad del archivo
Descripcin de la estructura fsica:
Bloques utilizados
Punteros
a Bloques
de Datos
Punteros
a Bloques
de Datos
Punteros
a Bloques
de Datos
nodo-i
Punteros
a Bloques
de Datos
Punteros
a Bloques
de Datos
Punteros
a Bloques
de Datos
19
20
Mtodos de Acceso
FAT
Directorio Raz
Nombre
pep_dir
Atrib.
dir
fiche1.txt
KB Agrup.
5
27
12
27 <eof>
45
45
Directorio pep_dir
Nombre
carta1.wp
prue.zip
Atrib.
R
KB Agrup.
24
74
16
91
58
51 <eof>
58 <eof>
74 75
75 76
76 <eof>
91 51
21
22
23
Contenido
25
Semntica de sesin
Las escrituras que hace un proceso no son inmediatamente
visibles para los dems procesos con el archivo abierto.
Cuando se cierra el archivo los cambios se hacen visibles para
las futuras sesiones.
Un archivo puede asociarse temporalmente a varias imgenes.
Semntica de versiones
Las actualizaciones se hacen sobre copias con n versin.
Slo son visibles cuando se consolidan versiones.
Sincronizacin explcita si se requiere actualizacin inmediata
24
Concepto de directorio
26
Esquema jerrquico.
Cuando se abre un archivo el SO busca el nombre en la
estructura de directorios.
Operaciones sobre un directorio:
Crear (insertar) y borrar (eliminar) directorios.
Abrir y cerrar directorios.
Renombrar directorios.
Leer entradas de un directorio.
Montar (combinar)
La organizacin jerrquica de un directorio
Simplifica el nombrado de archivos (nombres nicos)
Proporciona una gestin de la distribucin => agrupar
archivos de forma lgica (mismo usuario, misma aplicacin)
27
Tipo de
archivo
Nmeros
de bloque
archivo
extendido
Directorio de CP/M
Nombre
29
Contador
de bloques
...
Cdigo de
usuario
Nmero
del primer
Tipo de
archivo Reservado Hora bloque
Atributos
Fecha
Tamao
Directorio de MS-DOS
Nodo-i: Puntero al
descriptor del archivo Nombre
Directorio de UNIX
30
31
Directorio de un nivel
marivi miguel
mapa.gif
carta
...
lista.txt
...
datos lista.c
Archivos
...
Directorio
del usuario
...
claves
...
archivos
marivi
miguel
home
...
...
Directorio ...
raz
usr
bin
elvira
include
stdio.h
datos
lista.c
test
claves
agenda
correo
agenda
buzon
claves
sh
rm
vi
mio.o
34
agenda
...
...
lista.c
Directorio
del usuario
archivos
33
...
Directorio
del usuario
archivos
...
claves
...
mio.o
...
test
...
...
32
elvira
...
...
...
programa.o
...
Directorio
Directorio
maestro
35
marivi miguel
...
home
...
Directorio ...
raz
usr
bin
elvira
include
stdio.h
datos
lista.c
test
claves
agenda
agenda
buzon
claves
sh
correo
rm
vi
claves
36
Nombres jerrquicos
Nombre absoluto: especificacin del nombre respecto a la raz (/
en LINUX, \ en Windows).
Nombre relativo: especificacin del nombre respecto a un
directorio distinto del raz
Ejemplo: (Estamos en /users/) miguel/claves
Relativos al dir. de trabajo o actual: aquel en el se est al
indicar el nombre relativo. En Linux se obtiene con pwd
Directorios especiales:
. Directorio de trabajo. Ejemplo: cp / users/miguel/claves .
.. Directorio padre. Ejemplo: ls ..
Directorio HOME: el directorio base del usuario
Sistemas operativos: una visin aplicada
38
37
.
..
.
..
.
..
claves
textos
39
758
3265
Jerarqua de directorios
Interpretar /users/miguel/claves
Traer a memoria entradas archivo con nodo-i 2
Se busca dentro users y se obtiene el nodo-i 342
Traer a memoria entradas archivo con nodo-i 342
Se busca dentro miguel y se obtiene el nodo-i 256
Traer a memoria entradas archivo con nodo-i 256
Se busca dentro claves y se obtiene el nodo-i 758
Se lee el nodo-i 758 y ya se tienen los datos del archivo
Cundo parar?
Se ha encontrado el nodo-i del archivo
No se ha encontrado y no hay ms subdirectorios
Estamos en un directorio y no contiene la siguiente
componente del nombre (por ejemplo, miguel).
Sistemas operativos: una visin aplicada
40
(/dev/hd1)
Volumen montado
/
mount /dev/hd1 /usr
/lib
Contenido
(/dev/hd0)
41
Sistemas de archivos
/bin
/usr
/d1
/d2
/d3/f1
/d3
/lib
/bin
/usr
El servidor de archivos
Puntos a recordar
/d3/f2
/usr/d3
/usr/d1 /usr/d2
/usr/d3/f1 /usr/d3/f2
42
89
90
Tipos de particiones
Particin 4
Particin 5
Particin 2
Particin 3
91
MS-DOS
Boot
Dos copias
de la FAT
Directorio
Raz
Datos y
Directorios
UNIX
Boot
Super
Bloque
Mapas
de bits
Datos y
Directorios
nodos-i
92
93
94
96
100 %
800
75
500
50
100
uso del
disco
ancho de
banda
50
25
0
0
256
512
1K
2K
4K
8K
16K
Bloques y agrupaciones
32K
Tamao de Bloque
95
97
98
Particin Lgica
Disco 0 Disco 1 Disco 2 Disco 3
99
Contenido
El servidor de archivos
Particin
del
sistema
Conjunto
de
bandas
Puntos a recordar
100
101
Servidor de archivos
Para proporcionar un acceso eficiente y sencillo a los
dispositivos de almacenamiento, todos los sistemas operativos
tienen un servidor de archivos que permite almacenar, buscar y
leer datos fcilmente.
Dicho servidor de archivos tiene dos tipos de problemas de
diseo muy distintos entre s:
Definir la visin de usuario del sistema de entrada/salida,
incluyendo servicios, archivos, directorios, sistemas de
archivos, etc.
Definir los algoritmos y estructuras de datos a utilizar para
hacer corresponder la visin del usuario con el sistema fsico
de almacenamiento secundario.
Sistemas operativos: una visin aplicada
102
Proceso de
Usuario 2
Proceso de
Usuario 3
Proceso de
Usuario n
...
Nivel de
usuario
Nivel de
sistema
msdos
ffs
Servidor de Bloques
...
proc
Cache de
Bloques
Manejadores de Dispositivo
...
103
104
Informacin
del archivo
virtual
Direcciones de
las operaciones
virtuales
Direccin del
nodo-i
especfico
nodo-i
Direcciones de
las operaciones
especficas de SA
Tabla de
funciones
del SA
Sistemas operativos: una visin aplicada
105
Servidor de bloques
106
Descomposicin en operaciones de
bloques
Archivos con estructura de bytes
Escritura leer
107
Descomposicin en operaciones de
bloques (II)
Archivos de registros de tamao fijo
R1
R2
R3
Bloque 1
Bloques
R1
R2
Bloque 1
Sistemas operativos: una visin aplicada
108
R4
R5
Bloque 2
R3
R4
R5
Bloque 2
109
R6
Bloque 3
R6
Bloque 3
J. Carretero, F. Garca, P. de Miguel, F. Prez
Manejadores de dispositivos
Flujo de datos en el S. de A.
read (fd, buffer, tamao)
110
Usuario
buffer
tamao
archivo lgico
(VFS)
archivo lgico
(FFS)
Bloques lgicos
(Servidor
de bloques)
1340
1756
840
1340
Manejador de
disco y
dispositivo
1756
840
8322
bloques del
archivo
bloques del
dispositivo
bloques del
disco
8322
111
112
113
0
1
2
3
4
23
4563
56
3
678
fd
0
1
2
3
4
Tabla de archivos
abiertos. P3
230
563
98
3
247
fd
0
1
2
3
4
2300
53
4
465
326
Nodo-i Posicin
98
98
Tabla de
nodos-i 98
456
2348
Correspondencia bloques-archivos
Cmo asignar los bloques de disco a un archivo y cmo hacerlos
corresponder con la imagen del archivo que tiene la aplicacin?
Asignacin de bloques contiguos.
Sencillo de implementar y el rendimiento de la E/S es muy bueno.
Si no se conoce el tamao total del archivo cuando se crea, puede ser necesario
buscar un nuevo hueco de bloques consecutivos cada vez que el archivo crece.
Fragmentacin externa -> compactar el disco.
Tabla intermedia
de nodos-i y posiciones
114
115
Mecanismos enlazados
Mecanismos indexados
FAT
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
archivo A:
archivo B:
12
archivo C:
10
13
116
117
DISCO
820
...
Direcciones de
los 10 primeros
bloques
342
1623
8204
1134
...
Indirecto simple
Indirecto doble
10211
Bloque
indirecto
Indirecto triple
2046
20464
675
118
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Bloques libres
Bloques libres
7,1
11
14
16
11,1 14,1
120
17
16,3
18
(A)
(B)
119
Incremento de prestaciones
Basados en el uso de almacenamiento intermedio de datos de entrada/salida
en memoria principal. Estos mecanismos son de dos tipos:
Discos RAM, cuyos datos estn almacenados slo en memoria.
Aceptan todas las operaciones de cualquier otro sistema de archivos y
son gestionados por el usuario.
Pseudodispositivos para almacenamiento temporal o para operaciones
auxiliares del sistema operativo. Su contenido es voltil.
Cache de datos, instaladas en secciones de memoria principal
controladas por el sistema operativo, donde se almacenan datos para
optimizar accesos posteriores.
Se basan en la existencia de proximidad espacial y temporal en las
referencias a los datos de entrada/salida.
Dos caches importantes dentro del servidor de archivos: cache de
nombres y cache de bloques.
Sistemas operativos: una visin aplicada
121
Cache de bloques
Fundamento:
Proximidad espacial
Proximidad temporal
Dos clases de flujos de E/S:
Proceso
Proceso
Cache
Disco
Disco
Lecturas adelantadas
Limpieza de la cache (sync)
Principal problema: fiabilidad del sistema de archivos.
Sistemas operativos: una visin aplicada
122
123
Polticas de reemplazo
buffer
tamao
archivo lgico
(VFS)
archivo lgico
(FFS)
bloques del
archivo
Bloques lgicos
(Servidor
de bloques)
1340
1756
840
8322
bloques del
dispositivo
Cache de bloques
(Servidor
de bloques)
1340
1756
840
1756
Manejador de
disco y
dispositivo
8322
bloques del
disco
Algoritmo:
Comprobar si el bloque a leer est en la cache.
En caso de que no est, se lee del dispositivo y se copia a la cache.
Si la cache est llena, es necesario hacer hueco para el nuevo bloque
reemplazando uno de los existentes: polticas de reemplazo.
Si el bloque ha sido escrito (sucio): poltica de escritura.
Polticas de reemplazo: FIFO (First in First Out), segunda oportunidad, MRU
(Most Recently Used), LRU (Least Recently Used), etc.
La poltica de reemplazo ms frecuentemente usada es la LRU. Esta poltica
reemplaza el bloque que lleva ms tiempo sin ser usado, asumiendo que no ser
referenciado prximamente.
Los bloques ms usados tienden a estar siempre en la cache y, por tanto, no van al
disco. La utilizacin estricta de esta poltica puede crear problemas de fiabilidad
en el sistema de archivos si el computador falla.
La mayora de los servidores de archivos distinguen entre bloques especiales y
bloques de datos.
8322
124
125
Polticas de escritura
Escritura inmediata (write-through): se escribe cada vez que se modifica el
bloque.
No hay problema de fiabilidad, pero se reduce el rendimiento del sistema.
Escritura diferida (write-back): slo se escriben los datos a disco cuando se
eligen para su reemplazo por falta de espacio en la cache.
Optimiza el rendimiento, pero genera los problemas de fiabilidad
anteriormente descritos.
Escritura retrasada (delayed-write), que consiste en escribir a disco los
bloques de datos modificados en la cache de forma peridica cada cierto
tiempo (30 segundos en UNIX).
Compromiso entre rendimiento y fiabilidad.
Reduce la extensin de los posibles daos por prdida de datos.
Los bloques especiales se escriben inmediatamente al disco.
No se puede quitar un disco del sistema sin antes volcar los datos de la
cache.
Escritura al cierre (write-on-close): cuando se cierra un archivo, se vuelcan
al disco los bloques del mismo que tienen datos actualizados.
Sistemas operativos: una visin aplicada
126
(/dev/hd0)
(/dev/hd1)
Volumen montado
/lib
/bin
/usr
/d1
/d2
/lib
/bin
/usr
/d3/f2
/usr/d3
/usr/d1 /usr/d2
En MS-DOS c:\tmp\datos.txt
/usr/d3/f1 /usr/d3/f2
127
Enlace fsico
usr
Dos tipos:
Enlace fsico
user
lib
datos.txt
.
..
datos.txt
prog.c
Enlace simblico
El archivo se elimina cuando se borra el enlace fsico. Si
permanece el enlace simblico provoca errores al tratar de
accederlo.
Se puede hacer con archivos y directorios.
Se puede hacer entre archivos de diferentes sistema de archivos
J. Carretero, F. Garca, P. de Miguel, F. Prez
prog.c
pepe
usr
datos.txt
prueba.txt
.
..
prueba.txt
juan
pepe
prog.c
pepe
juan
23
100
28
400
user
lib
juan
pepe
128
/d3
/d3/f1
Enlaces
80
100
60
.
..
datos.txt
prog.c
prueba.txt
datos2.txt
juan
23
100
28
400
.
..
80
100
prueba.txt 60
datos2.txt 28
nodo-i 28
enlaces = 2
descripcin
del fichero
ln /user/pepe/datos.txt /user/juan/datos2.txt
129
Enlace simblico
Ejemplo de montado
/
usr
user
lib
pepe
datos.txt
prog.c
pepe
.
..
datos.txt
prog.c
usr
juan
pepe
prueba.txt
juan
23
100
28
400
.
..
80
100
prueba.txt 60
user
lib
datos.txt
prog.c
pepe
.
..
nodo-i 28
enlaces = 1
datos.txt
prog.c
descripcin
del fichero
juan
prueba.txt
juan
23
100
28
400
.
..
80
100
prueba.txt 60
datos2.txt 130
datos2.txt
nodo-i 130
enlaces = 1
/user/pepe/
datos.txt
Punto de
montado
ln -s /user/pepe/datos.txt /user/juan/datos2.txt
130
punto de
montado
131
Dispositivo RAID
Disco 0
Disco 1
Disco 2
Disco 3
A
B
bloque 0 bloque 1
bloque 2 paridad
bloque 3
En cintas
Backups incrementales
132
133
134
135
Cerrojos
Cerrojo C
Nmero de bloque
012 3
1 01 0
012 3
0 10 1
Nmero de bloque
n
0
n
1
Referencias
012 3
1 00 0
Libres
012 3
0 10 1
CASO 1
Fichero
n
0
n
1
Referencias
Cerrojo C
Fichero
Libres
Cerrojo C
Cerrojo Ex
CASO 2
Cerrojo C
Nmero de bloque
012 3
1 02 0
012 3
0 10 1
Nmero de bloque
n
0
n
1
Referencias
012 3
1 00 0
Libres
012 3
0 12 1
CASO 3
Fichero
Cerrojo C
n
0
Referencias
n
1
Libres
CASO 4
136
Tipos:
Cerrojo Ex
Cerrojo C
Compartido
Exclusivo
137
Cerrojos en POSIX
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
int fcntl(int fd, int cmd, struct flock *f);
Otros servicios
Actualizacin atmica, o indivisible: asegura a los usuarios que
sus operaciones estn libres de interferencia con las de otros
usuarios y que la operacin se realiza completamente o no tiene
ningn efecto en el sistema.
Transacciones: permite ejecutar operaciones atmicas que
agrupan a varias operaciones de entrada/salida y que se
ejecutarn con semntica todo o nada.
Replicacin: mantener varias copias de los datos y otros
recursos del sistema. Gestin de copias:
Copia primaria
Gestin colectiva
138
Gestin de la replicacin
P2
P1
Escribir f1
Leer f1
Leer f2
Escribir f1
GR
primario
Escribir f1
GR
secundario
GR
secundario
139
Contenido
Puntos a recordar
P2
P1
Escribir f1, 1
Leer f2
Escribir f1, 2
Escribir f1, 1
Gestor de
Rplicas
Escribir f1, 1
Gestor de
Rplicas
Escribir f1, 2
Gestor de
Escribir f1, 2
Rplicas
140
141
142
144
143