You are on page 1of 0

SISTEMA DE FICHEROS UNIX J.

Santos
29
REPRESENTACIN INTERNA DE FICHEROS



Inodos
Existe un inodo para cada fichero del disco.
Los inodos se encuentran:
o En disco, en la lista de inodos.
o En memoria, en la tabla de inodos, de estructura semejante al
buffer cache.
Detalles:
El ncleo asigna inodos en llamadas del tipo open.
Los inodos en memoria quedan libres cuando no hay ningn proceso
que tenga abierto el fichero correspondiente al inodo.
Funcionamiento anlogo al buffer cache: algoritmos iget, iput (getblk,
brelse).

Inodo en disco
PROPIETARIO
GRUPO
TIPO DE FICHERO
PERMISOS DE ACCESO
FECHAS: acceso, escritura,
modificacin inodo
NMERO DE LINKS
TAMAO
DIRECCIONES DE DISCO


Inodo en memoria
COPIA INODO DISCO
ESTADO
NMERO DE DISPOSITIVO
NMERO DE INODO
PUNTEROS A COLAS HASH
Y FREE LIST
CONTADOR DE
REFERENCIAS


SISTEMA DE FICHEROS UNIX J. Santos
30

Estructura de un fichero
Cada fichero tiene asociado:
o Un inodo de la lista de inodos.
o Bloques del rea de datos. Lo bloques del fichero figuran como
informacin del inodo, con el siguiente esquema de acceso:

Detalles:
Con bloques de 1K y direcciones de 4 bytes, el tamao mximo
resulta: 10K + 256K + 64M + 16G
Acceso ms lento a ficheros grandes.

Direcciones de disco en el inodo
[Tanenbaum, 2003]
Esquema de las principales estructuras del ncleo referentes al sistema de ficheros
(Silberschatz, Galvin and Gagne 2005 Operating System Concepts 7
th
Edition, Feb 6, 2005)

SISTEMA DE FICHEROS UNIX J. Santos
31











ALGORITMO bmap
SISTEMA DE FICHEROS UNIX J. Santos
32
ALGORITMO iget

SISTEMA DE FICHEROS UNIX J. Santos
33
ALGORITMO iput
SISTEMA DE FICHEROS UNIX J. Santos
34




Directorios
Un directorio es un fichero cuyo contenido se interpreta como
entradas de directorio.
Formato de entradas de directorio:
En BSD:
Nmero inodo
(4 bytes)
Longitud entrada
(2 bytes)
Longitud nombre
(2 bytes)
Nombre (terminado en '\0' hasta una
longitud mltiplo de 4) (variable)
En System V:
Nombre (14
bytes)
Nmero inodo
(2 bytes)
SISTEMA DE FICHEROS UNIX J. Santos
35

Ejemplo de pasos necesarios en la bsqueda del inodo de /usr/ast/correo
[Tanenbaum, 2003]
SISTEMA DE FICHEROS UNIX J. Santos
36

CREACIN DE FICHEROS. ASIGNACIN DE INODOS Y
BLOQUES

SUPERBLOQUE
TAMAO SISTEMA DE FICHEROS
NMERO DE BLOQUES LIBRES
LISTA DE BLOQUES LIBRES
NDICE SIGUIENTE BLOQUE LIBRE
TAMAO LISTA DE INODOS
NMERO DE INODOS LIBRES
LISTA DE INODOS LIBRES
NDICE SIGUIENTE INODO LIBRE
FLAG OCUPADO/DISPONIBLE
LISTA INODOS LIBRES
LISTA BLOQUES LIBRES
FLAG SUPERBLOQUE MODIFICADO


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.
SISTEMA DE FICHEROS UNIX J. Santos
37
SISTEMA DE FICHEROS UNIX J. Santos
38

Dos ejemplos:
Asignacin de un inodo de la lista del SB cuando sta no est vaca.
Asignacin cuando la lista del SB est vaca.

SISTEMA DE FICHEROS UNIX J. Santos
39

Dos ejemplos (con lista de SB llena):
Inodo liberado < inodo recordado
Inodo liberado > inodo recordado

SISTEMA DE FICHEROS UNIX J. Santos
40

Ejemplo de concurrencia:
SISTEMA DE FICHEROS UNIX J. Santos
41

Ejemplo de situacin de la lista encadenada de bloques libres, partiendo de la
lista de libres del SB:
SISTEMA DE FICHEROS UNIX J. Santos
42

Ejemplo de funcionamiento en la liberacin y asignacin de bloques libres:

SISTEMA DE FICHEROS UNIX J. Santos
43
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 slo lectura
O_RDWR lectura-escritura
O_WRONLY slo escritura
O_APPEND aadir
O_CREAT crear
...
SISTEMA DE FICHEROS UNIX J. Santos
44
int read (int df, char *buff, int n);
df descriptor de fichero devuelto por open
buff direccin a donde se trasvasan los datos, en el espacio de usuario
n nmero de bytes a leer

SISTEMA DE FICHEROS UNIX J. Santos
45
SISTEMA DE FICHEROS UNIX J. Santos
46
SISTEMA DE FICHEROS UNIX J. Santos
47
DIFERENCIAS ENTRE EL SISTEMA DE FICHEROS SYSTEM
V y BSD



Estructura de directorios.
Asignacin de espacio mediante bloques y fragmentos.
Introduccin de Grupos de cilindros.
Estructura disco en BSD:
BOOT SUPERBLOQUE
GRUPO
CILINDROS n 1
GRUPO
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


Organizacin del disco en grupos de
cilindros [Mrquez, 2004]
SISTEMA DE FICHEROS UNIX J. Santos
48
The Linux Ext2fs File System
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.
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.
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.
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.

Silberschatz, Galvin and Gagne 2005
Operating System Concepts 7
th
Edition,
Feb 6, 2005

Ext2fs Block-Allocation Policies

SISTEMA DE FICHEROS UNIX J. Santos
49
Bibliografa:

[Batch, 1986] Bach, M.J., The Design of the UNIX Operating System, Prentice-
Hall, 1986.
[Carretero y col., 2001] Carretero Prez, J., de Miguel Anasagasti, P.,
Garca Carballeira, F., Prez Costoya, F., Sistemas Operativos: Una Visin
Aplicada, McGraw-Hill, 2001.
[Mrquez, 2004] Mrquez, F.M., UNIX. Programacin Avanzada, Ra-Ma, 2004.
[Snchez Prieto, 2005] Snchez 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 (5
th
Edition ), Prentice-Hall,
2005.
[Tanenbaum 2003] Tanenmaum, A., Sistemas Operativos Modernos, Prentice-
Hall, 2003.

You might also like