Programación de sistemas
El sistema de archivo de UNIX
Prof: Sergio Bemposta
Dpto: DACA – E.Politecnica
[email protected]
Indice
Concepto de archivo
El i-nodo
Tablas de control de archivos
Los directorios
Los archivos compartidos
Los dispositivos
Algunos archivos especiales
Pag: 2
1
Concepto de archivo
El archivo es una unidad lógica de
almacenamiento de la información que utiliza
el S.O para dar una visión uniforme del
sistema de almacenamiento.
Un archivo tiene una serie de atributos o de
propiedades como su nombre y ubicación, su
tipo, su fecha de creación, su dueño, etc..
El S.O es el encargado de la gestión del
sistema de archivo y es el que ofrece los
servicios básicos para los usuarios y las
aplicaciones.
Pag: 3
Concepto de archivo:
Tipos de ficheros en UNIX
Fichero regular: Un conjunto de datos guardados en
una entidad lógica llamada fichero. El S.O no distingue
si es de texto o binario.
Directorio: Un fichero que contiene nombres de otros
ficheros y punteros a la información de los mismos.
Ficheros especiales: Son archivos que se utilizan solo
para el manejo de dispositivos (Carácter o Bloque).
FIFO: Ficheros que se comportan como tuberías y
residen en el sistema de archivo. Los datos que se
leen se borran del archivo de forma automática.
Enlaces: Un tipo de fichero que apunta a otro fichero.
Pag: 4
2
El i-nodo
Todo archivo tiene asociado un i-nodo.
Es una estructura de datos que reside en el disco y
contiene toda la información necesaria para la gestión
del archivo.
• Tipo de fichero y protección (permisos),
• Propietario y Grupo,
• Fechas de creación y última fecha de acceso,
• Numero de enlaces,
• Tamaño del archivo,
• Direcciones de los bloques de datos en el disco.
Cuando se abre un fichero, el sistema carga en
memoria el i-nodo del fichero correspondiente.
Pag: 5
El i-nodo:
Asignación de bloques de datos
Un archivo en el disco es un conjunto de bloques
de datos que no están necesariamente contiguos.
Es una forma de optimizar el espacio del disco
frente a los bloques únicos que crean mucha
fragmentación.
Cada bloque de (512 o 1024 bytes) tiene asociado
un número que representa su dirección en el disco.
El número de bloques de un fichero depende de su
tamaño.
El i-nodo de un fichero tiene una tabla de todos los
bloques en el disco.
Pag: 6
3
El i-nodo:
Indexación
• Los 10 primeros punteros apuntan
directamente a Bloques de Datos
(BD). Son los punteros directos. Si
un fichero tiene más de 10
bloques, se usan uno o más
niveles de indexación
• Puntero 11 o indexación simple:
Apunta a un bloque de 256
punteros a BD
• Puntero 12 o indexación doble:
Apunta a un bloque de 256
punteros a bloques de indexación
simple.
• Puntero 13 o indexación triple:
Apunta a un bloque de 256
punteros a bloques de indexación
doble.
Pag: 7
El i-nodo:
Indexación
Algunos sistemas tienen bloques de
indexación de 128 punteros en vez de 256.
Ejemplo: Capacidad de un archivo en
UNIX con bloques de 512 bytes y bloques
de indexación de 256 punteros.
• Directo:
10 Bloques de 512b
•
•
•
Indexación simple:
256 Bloques
Indexación doble:
256*256 Bloques
Indexación triple:
256*256*256 Bloques
5Kb
128Kb
32Mb
8Gb
Pag: 8
4
El i-nodo:
Ventajas del esquema i-nodo.
La información del i-nodo es relativamente
pequeña y se guarda en memoria.
Se puede acceder a archivos pequeños
con indexación directa, reduciendo así el
tiempo de acceso a disco.
El tamaño máximo teórico es
suficientemente grande como para
satisfacer a casi todas las aplicaciones.
Pag: 9
Tablas de control de acceso a
ficheros
El Núcleo mantiene 3 tablas de información para
la gestión de archivos.
• Tabla de los i-nodos:
• Tabla de los ficheros:
• Tabla de los descriptores:
Pag: 10
5
Tablas de control de acceso a ficheros:
Tablas de ficheros.
Es una tabla global a todo el sistema y tiene
la siguiente información:
• Derechos de acceso (rwx),
• Estado actual del fichero (abierto, bloqueado, ..),
• Contador de enlaces.
• Desplazamiento de lectura o escritura,
• ….
Cada entrada de la tabla de ficheros apunta a
una entrada de la tabla de i-nodos.
Pag: 11
Tablas de control de acceso a ficheros:
Tabla de descriptores.
Es una tabla local a cada proceso y sirve para
gestionar los ficheros abiertos por el proceso.
Cada entrada de la tabla (descriptor) referencia a
una entrada de la tabla de ficheros.
Las llamadas al sistema como read() o
write(), operan sobre los descriptores y no
sobre los ficheros.
Cuando se crea un proceso, el sistema le asigna 3
descriptores que ocupan las 3 primeras entradas.
• Descriptor 0 (Entrada estándar):
Teclado
• Descriptor 1 (Salida estándar):
Terminal
• Descriptor 2 (Salida error estándar): Terminal
Pag: 12
6
Tablas de control de acceso a ficheros:
Asignación y liberación de descriptores.
Cuando se abre un fichero con las
llamadas create() o open(), el sistema
devuelve siempre el primer descriptor libre
de la tabla comenzando desde 0.
Cuando se cierra un archivo mediante
close(), la entrada correspondiente
queda libre.
Cuando un proceso crea un hijo mediante
fork(), el hijo hereda automáticamente
todos los descriptores del padre.
Tablas de control de acceso a ficheros:
Ejemplo:
Paso 1: Un proceso A abre
los siguientes ficheros:
f1=open("/etc/passwd",O_RDONLY)
f2=open(".cshrc", O_RDWR)
f3=open("/etc/passwd",O_WRONLY)
Paso 2: Un proceso B abre
un archivo ya abierto:
f1=open("/etc/passwd",O_RDONLY)
Pag: 13
Pag: 14
7
Directorios
Un directorio es un archivo y tiene asociado un i-
nodo.
Se distingue de otros ficheros por un campo de su
i-nodo que especifica que es un directorio.
Una entrada típica de un directorio: Es una
estructura que contiene el nombre del fichero y el
numero del i-nodo correspondiente.
Directorios
• Relación entre una
entrada de un
directorio, su i-nodo y
los bloques de datos.
Pag: 15
i-nodo
nombre
12345 Fichero1
i-nodo
12345
......
1
......
23567
......
Bloque
23567
Datos....
Pag: 16
8
Los archivos compartidos
El sistema UNIX permite a los usuarios
compartir ficheros y directorios.
Los archivos compartidos aparecen en el
sistema de archivo de cada usuario como
si fueran locales.
Esto se consigue mediante enlaces y UNIX
tiene 2 tipos
• Enlaces duros
• Enlaces simbólicos
Pag: 17
Los archivos compartidos:
Enlace duro.
Se crea una entrada nueva en el sistema de
archivos del usuario con un nombre diferente.
El numero del i-nodo al que apunta el archivo
es el mismo que el archivo original.
Los i-nodos tienen un contador de enlaces.
Cuando se borra el archivo original, en
realidad no se borra el i-nodo
correspondiente. Solo se borra, la entrada
correspondiente en el directorio.
Se elimina definitivamente el archivo si el
contador de enlaces o vínculos llega a cero.
Pag: 18
9
Los archivos compartidos:
Enlace duro.
i-nodo nombre
12345
Nombre1
Archivo original
i-nodo nombre
12345
Nombre2
Enlace duro
i-nodo
12345
......
2
......
23567
......
Bloque
23567
Datos.....
Desventajas:
• No se puede enlazar archivos de sistemas de archivos diferentes.
• No se puede crear un enlace a un directorio, [ el superusuario si ].
19
Los archivos compartidos:
Enlace simbólico.
Los enlaces simbólicos resuelven los
problemas inherentes a los enlaces duros.
• Se puede enlazar archivos de sistemas diferentes
• Se puede enlazar directorios.
El archivo original y su enlace tienen i-nodos
diferentes, por lo que son archivos diferentes.
El enlace es un archivo (especial) que
contiene la ruta al archivo original.
Pag: 20
10
Los archivos compartidos:
Enlace simbólico.
Entrada en directorio dirA
Enlace simbólico a un archivo.
i-nodo nombre
12345 Nombre1
i-nodo nombre
13579 Nombre2
i-nodo
12345
......
1
......
23567
......
Bloque
23567
Datos....
i-nodo
13579
......
1
......
15213
......
Bloque
15213
/dirA/Nom
bre1
Pag: 21
Los Dispositivos
Un manejador de dispositivo es un conjunto de
rutinas para acceder a un periférico o dispositivo
determinado.
El S. O oculta las detalles del hardware,
permitiendo que el usuario pueda acceder a los
dispositivo a través de una interfaz estandarizada.
Los manejadores de dispositivos no pueden ser
accedidos directamente por los procesos de
usuario, sino el acceso se realiza a través de
ficheros.
Ejemplo: Reproducir un sonido, se vuelca el
contenido audio en un archivo especial.
Pag: 22
11
Los Dispositivos
La interfaz con los dispositivos son “ficheros especiales”, que
residen en el directorio /dev.
Los procesos acceden al dispositivo utilizando llamadas al
sistema sobre ficheros (No hay llamadas al sistema sobre
dispositivos, con la excepción del terminal).
Los dispositivos pueden ser de los siguientes tipos:
• Carácter: los datos se transfieren de byte en byte, como el
puertos serie, paralelo, el monitor, etc..
• Bloques: los datos se transfieren en bloques, a través de un
buffer, como las operaciones sobre el disco.
En general, una maquina puede tener varios dispositivos del
mismo tipo (2 puertos serie, 3 USB, 2 lp, ..)
Pag: 23
Los Dispositivos
Para referenciar correctamente los dispositivos, se
utilizan 2 números:
• Un número mayor: identifica al tipo de dispositivo. El
sistema lo usa para decidir qué manejador utilizar
• Un número menor: identifica al dispositivo concreto.
Ejemplo :
$ ls -l /dev/lp*
crw-rw-rw- 1 root root 6, 0 April 23 2003 /dev/lp0
La salida indica que lp0 es un dispositivo de tipo
carácter, el número mayor es 6 y el menor es 0
Pag: 24
12
Los Dispositivos:
Ejemplos, algunos dispositivos
/dev/hda, /dev/hdb, /dev/hdc, /dev/hdd,
/dev/sda:
/dev/fd0:
Comentarios de: El sistema de archivo de UNIX - Programación de sistemas (0)
No hay comentarios