REPRESENTACIÓN INTERNA DE FICHEROS

Transcripción

REPRESENTACIÓN INTERNA DE FICHEROS
SISTEMA DE FICHEROS UNIX
J. Santos
REPRESENTACIÓN INTERNA DE FICHEROS
Inodos
•
Existe un inodo para cada fichero del disco.
•
Los inodos se encuentran:
En disco, en la lista de inodos.
o
En memoria, en la tabla de inodos, de estructura semejante al
buffer cache.
o
Inodo en disco
Inodo en memoria
PROPIETARIO
COPIA INODO DISCO
GRUPO
ESTADO
TIPO DE FICHERO
NÚMERO DE DISPOSITIVO
PERMISOS DE ACCESO
NÚMERO DE INODO
FECHAS: acceso, escritura,
PUNTEROS A COLAS HASH
modificación inodo
Y FREE LIST
NÚMERO DE LINKS
CONTADOR DE
TAMAÑO
REFERENCIAS
DIRECCIONES DE DISCO
Detalles:
•
El núcleo asigna inodos en llamadas del tipo open.
•
Los inodos en memoria quedan libres cuando no hay ningún proceso
que tenga abierto el fichero correspondiente al inodo.
•
Funcionamiento análogo al buffer cache: algoritmos iget, iput (getblk,
brelse).
29
SISTEMA DE FICHEROS UNIX
J. Santos
Esquema de las principales estructuras del núcleo referentes al sistema de ficheros
(Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7th Edition, Feb 6, 2005)
Estructura de un fichero
•
Cada fichero tiene asociado:
o
o
Un inodo de la lista de inodos.
Bloques del área de datos. Lo bloques del fichero figuran como
información del inodo, con el siguiente esquema de acceso:
Direcciones de disco en el inodo
[Tanenbaum, 2003]
Detalles:
30
•
Con bloques de 1K y direcciones de 4 bytes, el tamaño máximo
resulta: 10K + 256K + 64M + 16G
•
Acceso más lento a ficheros grandes.
SISTEMA DE FICHEROS UNIX
J. Santos
ALGORITMO bmap
31
SISTEMA DE FICHEROS UNIX
J. Santos
ALGORITMO iget
32
SISTEMA DE FICHEROS UNIX
J. Santos
ALGORITMO iput
33
SISTEMA DE FICHEROS UNIX
J. Santos
Directorios
•
Un directorio es un fichero cuyo contenido se interpreta como
“entradas de directorio”.
•
Formato de entradas de directorio:
En System V:
Nombre (14
bytes)
Número inodo
(2 bytes)
En BSD:
Número inodo
(4 bytes)
34
Longitud entrada
(2 bytes)
Longitud nombre
(2 bytes)
Nombre (terminado en '\0' hasta una
longitud múltiplo de 4) (variable)
SISTEMA DE FICHEROS UNIX
J. Santos
Ejemplo de pasos necesarios en la búsqueda del inodo de /usr/ast/correo
[Tanenbaum, 2003]
35
SISTEMA DE FICHEROS UNIX
J. Santos
CREACIÓN DE FICHEROS. ASIGNACIÓN DE INODOS Y
BLOQUES
SUPERBLOQUE
TAMAÑO SISTEMA DE FICHEROS
Detalles:
•
Al crear un fichero: se
asigna inodo y bloques de
datos.
•
Cuando un fichero crece:
se asignan datos.
•
La lista de inodos libres del
SB es incompleta.
•
La lista de bloques libres
del SB es incompleta.
NÚMERO DE BLOQUES LIBRES
LISTA DE BLOQUES LIBRES
ÍNDICE SIGUIENTE BLOQUE LIBRE
TAMAÑO LISTA DE INODOS
NÚMERO DE INODOS LIBRES
LISTA DE INODOS LIBRES
ÍNDICE SIGUIENTE INODO LIBRE
FLAG OCUPADO/DISPONIBLE
LISTA INODOS LIBRES
LISTA BLOQUES LIBRES
FLAG SUPERBLOQUE MODIFICADO
36
SISTEMA DE FICHEROS UNIX
J. Santos
37
SISTEMA DE FICHEROS UNIX
J. Santos
Dos ejemplos:
Asignación de un inodo de la lista del SB cuando ésta no está vacía.
Asignación cuando la lista del SB está vacía.
38
SISTEMA DE FICHEROS UNIX
J. Santos
Dos ejemplos (con lista de SB llena):
Inodo liberado < inodo recordado
Inodo liberado > inodo recordado
39
SISTEMA DE FICHEROS UNIX
Ejemplo de concurrencia:
40
J. Santos
SISTEMA DE FICHEROS UNIX
J. Santos
Ejemplo de situación de la lista encadenada de bloques libres, partiendo de la
lista de libres del SB:
41
SISTEMA DE FICHEROS UNIX
J. Santos
Ejemplo de funcionamiento en la liberación y asignación de bloques libres:
42
SISTEMA DE FICHEROS UNIX
J. Santos
LLAMADAS AL SISTEMA PARA EL MANEJO DE FICHEROS
int open (char *nombre, int modo, int permisos);
modo apertura:
modo 0: lectura
modo 1: escritura
modo 2: lectura-escritura
O usando las constantes definidas en el cabecera <fcntl.h>
O_RDONLY
O_RDWR
O_WRONLY
O_APPEND
O_CREAT
sólo lectura
lectura-escritura
sólo escritura
añadir
crear
...
43
SISTEMA DE FICHEROS UNIX
int read (int df, char *buff, int n);
df – descriptor de fichero devuelto por open
buff – dirección a donde se trasvasan los datos, en el espacio de usuario
n – número de bytes a leer
44
J. Santos
SISTEMA DE FICHEROS UNIX
J. Santos
45
SISTEMA DE FICHEROS UNIX
46
J. Santos
SISTEMA DE FICHEROS UNIX
J. Santos
DIFERENCIAS ENTRE EL SISTEMA DE FICHEROS SYSTEM
V y BSD
•
Estructura de directorios.
•
Asignación de espacio mediante bloques y fragmentos.
•
Introducción de Grupos de cilindros.
Estructura disco en BSD:
BOOT
SUPERBLOQUE
GRUPO
GRUPO
CILINDROS nº 1
CILINDROS nº 2
…
GRUPO
CILINDROS N
Estructura de cada Grupo de Cilindros:
COPIA
SB
CABECERA
GC
•
LISTA DE
INODOS
ÁREA DE
DATOS
Falta aquí figura de disco con GC
Organización del disco en grupos de
cilindros [Márquez, 2004]
47
SISTEMA DE FICHEROS UNIX
The Linux Ext2fs File System
J. Santos
Silberschatz, Galvin and Gagne ©2005
Operating System Concepts – 7th Edition,
Feb 6, 2005
„ Ext2fs uses a mechanism similar to that of BSD Fast File System (ffs) for
locating data blocks belonging to a specific file
„ The main differences between ext2fs and ffs concern their disk allocation
policies.
z In ffs, the disk is allocated to files in blocks of 8Kb, with blocks being
subdivided into fragments of 1Kb to store small files or partially filled
blocks at the end of a file.
z Ext2fs does not use fragments; it performs its allocations in smaller
units:
The default block size on ext2fs is 1Kb, although 2Kb and 4Kb
blocks are also supported.
z Ext2fs uses allocation policies designed to place logically adjacent
blocks of a file into physically adjacent blocks on disk, so that it can
submit an I/O request for several disk blocks as a single operation.
Ext2fs Block-Allocation Policies
48
SISTEMA DE FICHEROS UNIX
J. Santos
Bibliografía:
[Batch, 1986] Bach, M.J., The Design of the UNIX Operating System, PrenticeHall, 1986.
[Carretero y col., 2001] Carretero Pérez, J., de Miguel Anasagasti, P.,
García Carballeira, F., Pérez Costoya, F., Sistemas Operativos: Una Visión
Aplicada, McGraw-Hill, 2001.
[Márquez, 2004] Márquez, F.M., UNIX. Programación Avanzada, Ra-Ma, 2004.
[Sánchez Prieto, 2005] Sánchez Prieto, S., Sistemas Operativos, Servicio
Public. Univ. Alcalá, 2005.
[Silberschatz y col. 2005] Silberschatz, A., Galvin, P. and Gagne, G.,
Operating System Concepts – 7th Edition, Feb 6, 2005.
[Stallings 2005] Stallings, W. Operating Systems (5th Edition ), Prentice-Hall,
2005.
[Tanenbaum 2003] Tanenmaum, A., Sistemas Operativos Modernos, PrenticeHall, 2003.
49

Documentos relacionados