Cap. 8. Gestión de archivos y directorios

Anuncio
Sistemas operativos: una visión aplicada
Capítulo 8
Gestión de Archivos y Directorios
Contenido
•
•
•
•
•
•
•
Visión del usuario del sistema de archivos
Archivos
Directorios
Servicios de archivos
Servicios de directorios
Sistemas de archivos
El servidor de archivos
Sistemas operativos: una visión aplicada
1
© J. Carretero, F. García, P. de Miguel, F. Pérez
1
Visión del usuario
• Visión lógica:
– Archivos
– Directorios
– Sistemas de archivos y particiones
• Visión física:
– Bloques o bytes ubicados en dispositivos
Visión
lógica
Sistemas operativos: una visión aplicada
Visión
física
2
© J. Carretero, F. García, P. de Miguel, F. Pérez
Función principal
Interfaz de acceso
• El SF establece una correspondencia entre los archivos y los
dispositivos lógicos.
Sistemas operativos: una visión aplicada
SISTEMA
DE
FICHEROS
Protección
3
© J. Carretero, F. García, P. de Miguel, F. Pérez
2
Características para el usuario
• Almacenamiento permanentes de información. No desaparecen
aunque se apague el computador.
• Conjunto de información estructurada de forma lógica según
criterios de aplicación.
• Nombres lógicos y estructurados.
• No están ligados al ciclo de vida de una aplicación particular.
• Abstraen los dispositivos de almacenamiento físico.
• Se acceden a través de llamadas al sistema operativo o de
bibliotecas de utilidades.
Sistemas operativos: una visión aplicada
4
© J. Carretero, F. García, P. de Miguel, F. Pérez
Sistema de archivos
• El acceso a los dispositivos es:
– Incómodo
• Detalles físicos de los dispositivos
• Dependiente de las direcciones físicas
– No seguro
• Si el usuario accede a nivel físico no tiene restricciones
• El sistema de archivos es la capa de software entre dispositivos y
usuarios.
• Objetivos:
– Suministrar una visión lógica de los dispositivos
– Ofrecer primitivas de acceso cómodas e independientes de
los detalles físicos
– Mecanismos de protección
Sistemas operativos: una visión aplicada
5
© J. Carretero, F. García, P. de Miguel, F. Pérez
3
Archivos: visión lógica
•
•
Conjunto de información relacionada que ha sido definida por su creador
Estructura de un archivo:
– Secuencia o tira de bytes (UNIX, POSIX)
Posición
– Registros (de tamaño fijo o variable)
Registro 1
C1
C2
Registro 2
C1
C2
C3 C4 C5
C3 C4 C5
Registro 3
C1
C2
C3 C4 C5
Registro 4
C1
C2
C3 C4 C5
Registro 1 C1
C2
C3
Registro 2 C1 C3 C4 C5
Registro 3 C1 C2
C3
C4
Registro 4 C1
C3 C4
C2
Registro n
C1
C2
C3 C4 C5
Registro n C1
Sistemas operativos: una visión aplicada
6
C3
C5
C4
© J. Carretero, F. García, P. de Miguel, F. Pérez
Concepto de archivo
• Un espacio lógico de direcciones contiguas usado para
almacenar datos
• Tipos de archivos:
– Datos:
• numéricos
• carácter
• binarios
– Programas:
• código fuente
• archivos objetos (imagen de carga)
– Documentos
Sistemas operativos: una visión aplicada
7
© J. Carretero, F. García, P. de Miguel, F. Pérez
4
Representación del archivo
• La información relacionada con el archivo se mantiene en el descriptor del
archivo, al que se apunta desde los directorios.
• Es distinto en cada sistema operativo: nodo-i, registro Windows, etc.
•Tipos de archivos:
–Archivos normales: ASCII y binarios.
–Archivos especiales: de bloques y de caracteres
–Atributos de un archivo:
–Nombre
–Tipo
–Dueño y grupo
–Información de protección
–Tamaño real
–Hora y fecha de creación
–Hora y fecha del último acceso
–Hora y fecha de la última modificación
–Número de enlaces
Sistemas operativos: una visión aplicada
8
© J. Carretero, F. García, P. de Miguel, F. Pérez
Ejemplos de representación
Nombre
Atrib.
Size KB
Agrup. FAT
cabecera
Atributos
Tamaño
Nombre
Seguridad
Datos
Vclusters
Sistemas operativos: una visión aplicada
9
© J. Carretero, F. García, P. de Miguel, F. Pérez
5
Nombres de fichero y extensiones I
• Muy importante para los usuarios. Es característico de cada
sistema de archivos.
• Problema: usar nombre lógicos basados en tiras de caracteres.
• Motivo: los usuarios no recuerdan el nombre 001223407654
• Tipo y longitud cambian de un sistema a otro
– Longitud: fija en MS-DOS o variable en UNIX
– Extensión: obligatoria o no, más de una o no, fija para cada
tipo de archivos, etc.
• Sensibles a tipografía. Ejemplo: “CATALINA” y “catalina”
son el mismo archivo en Windows pero distintos en LINUX.
• El sistema de ficheros trabaja con descriptores internos, sólo
distingue algunos formatos (ejecutables, texto, ...). Ejemplo:
número mágico UNIX.
Sistemas operativos: una visión aplicada
10
© J. Carretero, F. García, P. de Miguel, F. Pérez
Nombres de fichero y extensiones II
•
•
Los directorios relacionan nombres lógicos y descriptores internos de ficheros
Las extensiones son significativas para las aplicaciones (html, c, cpp, etc.)
Sistemas operativos: una visión aplicada
11
© J. Carretero, F. García, P. de Miguel, F. Pérez
6
Estructura del fichero
• Ninguna - secuencia de palabras o bytes (UNIX)
• Estructura sencilla de registros
– Líneas
– Longitud fija
– Longitud variable
• Estructuras complejas
– Documentos con formato (HTML, postscript)
– Fichero de carga reubicable (módulo de carga)
• Se puede simular estructuras de registro y complejas con una
estructura plana y secuencias de control
• ¿Quién decide la estructura?
– Interna: El sistema operativo
– Externa: Las aplicaciones
Sistemas operativos: una visión aplicada
12
© J. Carretero, F. García, P. de Miguel, F. Pérez
Archivos: visión lógica y física
•
•
Usuario: Visión lógica.
Sistema operativo: visión física ligada a dispositivos. Conjunto de bloques.
Posición
Visión lógica
Archivo A
Bloques: 13
20
1
8
3
16
19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Bloques de la Unidad de Disco
Visión física
Sistemas operativos: una visión aplicada
13
© J. Carretero, F. García, P. de Miguel, F. Pérez
7
Archivos: visión física
• Bloque
– Unidad de transferencia
– 2n sectores
– Parámetro fijo por sistema de archivos
• Agrupación
– Unidad de asignación
– 2p bloques
– Aumenta la secuencialidad del archivo
• Descripción de la estructura física:
– Bloques utilizados
Sistemas operativos: una visión aplicada
14
© J. Carretero, F. García, P. de Miguel, F. Pérez
Descripción física en UNIX (nodo-i)
Tipo de Fichero y Protección
Número de Nombres
Propietario
Grupo del Propietario
Tamaño
Instante de creación
Instante del último acceso
Instante de la última modificación
Puntero a bloque de datos 0
Puntero a bloque de datos 1
Tamaño máximo del archivo: 10Sb+(Sb/4)Sb +(Sb/4)2Sb +(Sb/4)3Sb
Sb el tamaño del bloque y direcciones de bloques de 4 bytes.
Punteros
a Bloques
de Datos
Puntero a bloque de datos 9
Puntero indirecto simple
Puntero indirecto doble
Puntero indirecto triple
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
Sistemas operativos: una visión aplicada
15
© J. Carretero, F. García, P. de Miguel, F. Pérez
8
Descripción física en MS-DOS (FAT)
FAT
Directorio Raíz
Nombre
pep_dir
Atrib.
dir
fiche1.txt
KB Agrup.
5
27
12
27 <eof>
45
45
Directorio pep_dir
Nombre
Atrib.
carta1.wp
prue.zip
R
KB Agrup.
24
74
16
91
58
51 <eof>
58 <eof>
74 75
75 76
76 <eof>
91 92
• FAT de 12 bits 4K agrupaciones
• FAT de 16 bits 64K agrupaciones
Sistemas operativos: una visión aplicada
16
© J. Carretero, F. García, P. de Miguel, F. Pérez
Métodos de Acceso
• Acceso secuencial: lectura de los bytes del archivo en orden
ascendente, empezando por el principio.
– read next, write next, reset, no read after last write, …
– rewind: ir al principio para buscar hacia delante
– Lectura -> posición = posición + datos leídos
– Dispositivos de cinta
– ISAM: método de acceso secuencial indexado
• Acceso Directo:
– read n, write n, goto n, rewrite n, read next, write next, …
– n = número de bloque relativo al origen
– Dispositivos: discos magnéticos
Sistemas operativos: una visión aplicada
17
© J. Carretero, F. García, P. de Miguel, F. Pérez
9
Contenido
•
•
Visión del usuario del sistema de archivos
Archivos
• Directorios
•
•
•
•
•
Servicios de archivos
Servicios de directorios
Sistemas de archivos
El servidor de archivos
Puntos a recordar
Sistemas operativos: una visión aplicada
18
© J. Carretero, F. García, P. de Miguel, F. Pérez
Concepto de directorio
• Objeto que relaciona de forma unívoca un nombre de usuario de
archivo con su descriptor interno
• Organizan y proporcionan información sobre la estructuración
de los sistemas de archivos
• Una colección de nodos que contienen información acerca de los
archivos
Sistemas operativos: una visión aplicada
19
© J. Carretero, F. García, P. de Miguel, F. Pérez
10
Directorios: visión lógica
• Esquema jerárquico.
• 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 organización jerárquica de un directorio
– Simplifica el nombrado de archivos (nombres únicos)
– Proporciona una gestión de la distribución => agrupar
archivos de forma lógica (mismo usuario, misma aplicación)
Sistemas operativos: una visión aplicada
20
© J. Carretero, F. García, P. de Miguel, F. Pérez
Estructura de los directorios
• Tanto la estructura del directorio como los archivos residen en
discos
• Los directorios se suelen implementar como archivos
• Copias de respaldo en cintas, por seguridad
• Información en un directorio: nombre, tipo, dirección, longitud
máxima y actual, tiempos de acceso y modificación, dueño, etc.
• Hay estructuras de directorio muy distintas. La información
depende de esa estructura.
• Dos alternativas principales:
– Almacenar atributos de archivo en entrada directorio
– Almacenar <nombre, identificador>, con datos archivo en
una estructura distinta. Ésta es mejor.
Sistemas operativos: una visión aplicada
21
© J. Carretero, F. García, P. de Miguel, F. Pérez
11
Ejemplo de entradas de directorio
Contador
de bloques
Tipo de
archivo
Nombre
...
Código de
usuario
Números
de bloque
archivo
extendido
Directorio de CP/M
Nombre
Tipo de
archivo
Número
del primer
Reservado Hora bloque
Atributos
Fecha
Tamaño
Directorio de MS-DOS
Nodo-i: Puntero al
descriptor del archivo
Nombre
Directorio de UNIX
Sistemas operativos: una visión aplicada
22
© J. Carretero, F. García, P. de Miguel, F. Pérez
Directorio de un nivel
• Un único directorio para todos los usuarios
• Problemas de nombrado y agrupación
carta
mapa.gif
Sistemas operativos: una visión aplicada
lista.txt
...
Directorio
...
...
Archivos
...
23
programa.o
© J. Carretero, F. García, P. de Miguel, F. Pérez
12
Directorio de dos niveles
•
•
•
•
Un directorio por cada usuario
Camino de acceso automático o manual
El mismo nombre de archivo para varios usuarios
Búsqueda eficiente, pero problemas de agrupación
...
marivi miguel
...
datos lista.c
Directorio ...
del usuario
Directorio ...
maestro
elvira
test
agenda
claves
...
Directorio ...
del usuario
...
...
archivos
archivos
...
mail
Directorio ...
del usuario
...
lista.c
...
Sistemas operativos: una visión aplicada
claves
...
mio.o
...
archivos
24
© J. Carretero, F. García, P. de Miguel, F. Pérez
Directorio con estructura de árbol
• Búsqueda eficiente y agrupación
• Nombres relativos y absolutos -> directorio de trabajo
tmp
marivi
miguel
home
...
...
Directorio
raíz
...
usr
bin
elvira
include
stdio.h
datos
lista.c
test
claves
agenda
agenda
buzon
claves
sh
correo
mail
rm
vi
mio.o
Sistemas operativos: una visión aplicada
25
© J. Carretero, F. García, P. de Miguel, F. Pérez
13
Directorio con estructura de árbol
• Los nombres absolutos contienen todo el camino
• Los nombres relativos parten del directorio de trabajo o actual
• Cambio de directorio:
– cd /spell/mail/prog
– cd prog
• Borrar un archivo: rm <nombre-archivo>
• Crear un subdirectorio: mkdir <nombre_dir>
• Ejemplo:
– cd /spell/mail
– mkdir count
– ls /spell/mail/count
• Borrar un subdirectorio: rm -r mail
Sistemas operativos: una visión aplicada
26
© J. Carretero, F. García, P. de Miguel, F. Pérez
Nombres jerárquicos
• Nombre absoluto: especificación del nombre respecto a la raíz (/
en LINUX, \ en Windows).
• Nombre relativo: especificación del nombre respecto a un
directorio distinto del raíz
– Ejemplo: (Estamos en /users/) miguel/claves
– Relativos al dir. de trabajo o actual: aquel en el que 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 visión aplicada
27
© J. Carretero, F. García, P. de Miguel, F. Pérez
14
Interpretación de nombres en LINUX. I
.
..
.
..
.
..
claves
textos
Sistemas operativos: una visión aplicada
28
758
3265
© J. Carretero, F. García, P. de Miguel, F. Pérez
Interpretación de nombres en LINUX. II
• 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
• ¿Cuándo parar?
– Se ha encontrado el nodo-i del archivo
– No se ha encontrado y no hay más subdirectorios
– Estamos en un directorio y no contiene la siguiente
componente del nombre (por ejemplo, miguel).
Sistemas operativos: una visión aplicada
29
© J. Carretero, F. García, P. de Miguel, F. Pérez
15
Sistemas de archivos y particiones
• Volumen: conjunto coherente de metainformación y datos.
• Ejemplos de Sistemas de archivos:
MS-DOS
Boot
Dos copias
de la FAT
Directorio
Raíz
Datos y
Directorios
UNIX
Boot
Super
Bloque
Mapas
de bits
Datos y
Directorios
nodos-i
Sistemas operativos: una visión aplicada
30
© J. Carretero, F. García, P. de Miguel, F. Pérez
Contenido
•
•
•
Visión del usuario del sistema de archivos
Archivos
Directorios
• Servicios de archivos
•
•
•
•
Servicios de directorios
Sistemas de archivos
El servidor de archivos
Puntos a recordar
Sistemas operativos: una visión aplicada
31
© J. Carretero, F. García, P. de Miguel, F. Pérez
16
Operaciones genéricas sobre archivos
• creat: crea un archivo con un nombre y protección y devuelve
un descriptor
• delete: borra el archivo con un nombre
• open: abre un archivo con nombre para una(s) operación(es) y
devuelve un descriptor
• close: cierra un archivo abierto con un descriptor
• read: lee datos de un archivo abierto, usando su descriptor, a un
almacén en memoria
• write: escribe datos a un archivo abierto, usando su descriptor,
desde un almacén en memoria
• lseek: mueve el apuntador a relativo_a+ desplazamiento
• ioctl: permite manipular los atributos de un archivo
Sistemas operativos: una visión aplicada
32
© J. Carretero, F. García, P. de Miguel, F. Pérez
Servicios POSIX para archivos
•
•
•
•
•
•
•
•
Visión lógica: tira secuencial de bytes
Apuntador de posición a partir del cual se efectúan las operaciones
Descriptores de archivos: enteros de 0 a 64K
Predefinidos (describir programas independientes de dispositivos):
– 0: entrada estándar
– 1: salida estándar
– 2: salida de error
Fork: duplicación de BCP, pero compartición de tabla de archivos.
Servicios consulta y modificación atributos.
Protección:
– dueño grupo mundo
– rwx
rwx
rwx
Ejemplos: 755 indica rwxr-xr-x
Sistemas operativos: una visión aplicada
33
© J. Carretero, F. García, P. de Miguel, F. Pérez
17
Archivos, directorios y servicios en
POSIX (UNIX)
• Tipos de archivo:
– Normales
– Directorios
– Especiales
• Nombres de archivo y directorio:
– Nombre completo (empieza por /)
• /usr/include/stdio.h
– Nombre relativo al directorio actual (no empieza por /)
• stdio.h asumiendo que /usr/include es el directorio
actual.
– La entradas . y .. pueden utilizarse para formar rutas de
acceso
• ../include/stdio.h
Sistemas operativos: una visión aplicada
34
© J. Carretero, F. García, P. de Miguel, F. Pérez
creat. Crea un archivo
• Servicio:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int creat(char *name, mode_t mode);
• Argumentos:
– name Nombre de archivo
– mode Bits de permiso para el archivo
• Devuelve:
– Devuelve un descriptor de archivo ó -1 si error.
Sistemas operativos: una visión aplicada
35
© J. Carretero, F. García, P. de Miguel, F. Pérez
18
creat. Crea un archivo (II)
• Descripción:
– El archivo se abre para escritura.
– Si no existe crea un archivo vació.
• UID_dueño = UID_efectivo
• GID_dueño = GID_efectivo
– Si existe lo trunca sin cambiar los bits de permiso.
• Ejemplos:
fd = creat("datos.txt", 0751);
fd = open("datos.txt", O_WRONLY | O_CREAT | O_TRUNC,
0751);
Sistemas operativos: una visión aplicada
36
© J. Carretero, F. García, P. de Miguel, F. Pérez
unlink. Borra un archivo
• Servicio:
#include <unistd.h>
int unlink(const char* path);
• Argumentos:
– path nombre del archivo
• Devuelve:
– Devuelve 0 ó -1 si error.
• Descripción:
– Decrementa el contador de veces que el archivo está abierto.
Si el contador es 0, borra el archivo y libera sus recursos.
Sistemas operativos: una visión aplicada
37
© J. Carretero, F. García, P. de Miguel, F. Pérez
19
open. abre un archivo
• Servicio:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(char *name, int flag, ...);
• Argumentos:
– name puntero al nombre del archivo
– flags opciones de apertura:
O_RDONLY Sólo lectura
O_WRONLY Sólo escritura
O_RDWR Lectura y escritura
O_APPEND El puntero de acceso se desplaza al final del archivo
abierto
• O_CREAT Si existe no tiene efecto. Si no existe lo crea
• O_TRUNC Trunca si se abre para escritura
•
•
•
•
Sistemas operativos: una visión aplicada
38
© J. Carretero, F. García, P. de Miguel, F. Pérez
open. Abre un archivo II
• Devuelve:
– Un descriptor de archivo ó -1 si hay error.
• Ejemplos:
fd = open("/home/juan/datos.txt");
fd = open("/home/juan/datos.txt",
O_WRONLY | O_CREAT | O_TRUNC, 0750);
Sistemas operativos: una visión aplicada
39
© J. Carretero, F. García, P. de Miguel, F. Pérez
20
close. Cierra un descriptor de archivo
• Servicio:
int close(int fd);
• Argumentos:
– fd descriptor de archivo
• Devuelve:
– Cero ó -1 si error.
• Descripción:
– El proceso pierde la asociación a un archivo.
Sistemas operativos: una visión aplicada
40
© J. Carretero, F. García, P. de Miguel, F. Pérez
read. Lectura de un archivo
• Servicio:
#include <sys/types.h>
ssize_t read(int fd, void *buf, size_t n_bytes);
• Argumentos:
– fd descriptor de archivo
– buf zona donde almacenar los datos
– n_bytes número de bytes a leer
• Devuelve:
– Número de bytes realmente leídos ó -1 si error
• Descripción:
– Transfiere n_bytes.
– Puede leer menos datos de los solicitados si se rebasa el fin de archivo o
se interrumpe por una señal.
– Después de la lectura se incrementa el puntero del archivo con el número
de bytes realmente transferidos.
Sistemas operativos: una visión aplicada
41
© J. Carretero, F. García, P. de Miguel, F. Pérez
21
write. Escritura de un archivo
• Servicio:
#include <sys/types.h>
ssize_t write(int fd, void *buf, size_t n_bytes);
• Argumentos:
– fd descriptor de archivo
– buf zona de datos a escribir
– n_bytes número de bytes a escribir
• Devuelve:
– Número de bytes realmente escritos ó -1 si error
• Descripción:
– Transfiere n_bytes.
– Puede escribir menos datos de los solicitados si se rebasa el tamaño
máximo de un archivo o se interrumpe por una señal.
– Después de la escritura se incrementa el puntero del archivo con el
número de bytes realmente transferidos.
– Si se rebasa el fin de archivo el archivo aumenta de tamaño.
Sistemas operativos: una visión aplicada
42
© J. Carretero, F. García, P. de Miguel, F. Pérez
lseek.
Modifica el valor del puntero de posición
• Servicio:
#include <sys/types.h>
#include <unistd.h>
off_t lseek(int fd, off_t offset, int whence);
• Argumentos:
– fd Descriptor de archivo
– offset desplazamiento
– whence base del desplazamiento
• Devuelve:
– La nueva posición del puntero ó -1 si error.
• Descripción:
– Coloca el puntero de acceso asociado a fd
– La nueva posición se calcula:
• SEEK_SET posición = offset
• SEEK_CUR posición = posición actual + offset
• SEEK_END posición = tamaño del archivo + offset
Sistemas operativos: una visión aplicada
43
© J. Carretero, F. García, P. de Miguel, F. Pérez
22
fnctl. modificación de atributos de un archivo
• Servicio:
#include <sys/types.h>
int fnctl(int fildes, int cmd /* arg*/ ...);
• Argumentos:
– fildes descriptor de archivos
– cmd mandato para modificar atributos, puede haber varios.
• Devuelve:
– 0 para éxito ó -1 si error
• Descripción:
– Modifica los atributos de un archivo abierto.
Sistemas operativos: una visión aplicada
44
© J. Carretero, F. García, P. de Miguel, F. Pérez
dup. Duplica un descriptor de archivo
• Servicio:
int dup(int fd);
• Argumentos:
– fd descriptor de archivo
• Devuelve:
– Un descriptor de archivo que comparte todas las propiedades del fd ó -1
si error.
• Descripción:
– Crea un nuevo descriptor de archivo que tiene en común con el
anterior:
• Accede al mismo archivo
• Comparte el mismo puntero de posición
• El modo de acceso es idéntico.
– El nuevo descriptor tendrá el menor valor numérico posible.
Sistemas operativos: una visión aplicada
45
© J. Carretero, F. García, P. de Miguel, F. Pérez
23
stat.
Obtiene información sobre un archivo
• Servicio:
#include <sys/types.h>
#include <sys/stat.h>
int stat(char *name, struct stat *buf);
int fstat(int fd, struct stat *buf);
• Argumentos:
– name nombre del archivo
– fd descriptor de archivo
– buf puntero a un objeto de tipo struct stat donde se
almacenará la información del archivo.
• Devuelve:
– Cero ó -1 si error
Sistemas operativos: una visión aplicada
46
© J. Carretero, F. García, P. de Miguel, F. Pérez
stat.
Obtiene información sobre un archivo
• Descripción:
– Obtiene información sobre un archivo y la almacena en una estructura de
tipo struct stat:
struct stat {
mode_t
ino_t
dev_t
nlink_t
uid_t
gid_t
off_t
time_t
time_t
time_t
};
st_mode;
st_ino;
st_dev;
st_nlink;
st_uid;
st_gid;
st_size;
st_atime;
st_mtime;
st_ctime;
Sistemas operativos: una visión aplicada
/*
/*
/*
/*
/*
/*
/*
/*
/*
/*
modo del archivo */
número del archivo */
dispositivo */
número de enlaces */
UID del propietario */
GID del propietario */
número de bytes */
último acceso */
última modificacion */
último modificacion de datos */
47
© J. Carretero, F. García, P. de Miguel, F. Pérez
24
stat.
Obtiene información sobre un archivo
• Comprobación del tipo de archivo aplicado a st_mode:
S_ISDIR(s.st_mode) Cierto si directorio
S_ISCHR(s.st_mode) Cierto si especial de caracteres
S_ISBLK(s.st_mode) Cierto si especial de bloques
S_ISREG(s.st_mode) Cierto si archivo normal
S_ISFIFO(s.st_mode) Cierto si pipe o FIFO
Sistemas operativos: una visión aplicada
48
© J. Carretero, F. García, P. de Miguel, F. Pérez
Ejemplo. Copia un archivo en otro
#include
#include
#include
#include
<sys/types.h>
<sys/stat.h>
<fcntl.h>
<stdio.h>
#define BUFSIZE
512
main(int argc, char **argv) {
int fd_ent, fd_sal;
char buffer[BUFSIZE];
int n_read;
Sistemas operativos: una visión aplicada
49
© J. Carretero, F. García, P. de Miguel, F. Pérez
25
Ejemplo. Copia un archivo en otro (II)
/* abre el archivo de entrada */
fd_ent = open(argv[1], O_RDONLY); if (fd_ent < 0)
perror("open");
exit(-1);
}
{
/* crea el archivo de salida */
fd_sal = creat(argv[2], 0644);
if (fd_sal < 0) {
close(fd_ent);
perror("open");
exit(-1);
}
Sistemas operativos: una visión aplicada
50
© J. Carretero, F. García, P. de Miguel, F. Pérez
Ejemplo. Copia un archivo en otro (III)
/* bucle de lectura del archivo de entrada */
while ((n_read = read(fd_ent, buffer, BUFSIZE)) > 0)
{
/* escribir el buffer al archivo de salida */
if (write(fd_sal, buffer, n_read) < n_read) {
perror("write2);
close(fd_ent); close(fd_sal);
exit(-1);
}
}
if (n_read < 0) {
perror("read");
close(fd_ent); close(fd_sal);
exit(-1);
}
close(fd_ent);
exit(0);
close(fd_sal);
}
Sistemas operativos: una visión aplicada
51
© J. Carretero, F. García, P. de Miguel, F. Pérez
26
Contenido
•
•
•
•
Visión del usuario del sistema de archivos
Archivos
Directorios
Servicios de archivos
• Servicios de directorios
•
•
•
Sistemas de archivos
El servidor de archivos
Puntos a recordar
Sistemas operativos: una visión aplicada
52
© J. Carretero, F. García, P. de Miguel, F. Pérez
Servicios POSIX para directorios
• Visión lógica: tabla de entradas nombre lógico, nodo-i
• Cada entrada tiene la siguiente estructura:
Struct dirent {
char *d_name;
...
}
/* nombre archivo */
• Gestión complicada porque los nombres de archivo tienen
longitud variable.
• Servicios POSIX: gestión de directorios y de la tabla
Sistemas operativos: una visión aplicada
53
© J. Carretero, F. García, P. de Miguel, F. Pérez
27
mkdir. Crea un directorio
• Servicio:
#include <sys/types.h>
#include <dirent.h>
int mkdir(const char *name, mode_t mode);
• Argumentos:
– name nombre del directorio
– mode bits de protección
• Devuelve:
– Cero ó -1 si error
• Descripción:
– Crea un directorio de nombre name.
– UID_dueño = UID_efectivo
– GID_dueño = GID_efectivo
Sistemas operativos: una visión aplicada
54
© J. Carretero, F. García, P. de Miguel, F. Pérez
rmdir. Borra un directorio
• Servicio:
#include <sys/types.h>
int rmdir(const char *name);
• Argumentos:
– name nombre del directorio
• Devuelve:
– Cero ó -1 si error
• Descripción:
– Borra el directorio si está vacío.
– Si el directorio no está vacío no se borra.
Sistemas operativos: una visión aplicada
55
© J. Carretero, F. García, P. de Miguel, F. Pérez
28
opendir. Abre un directorio
• Servicio:
#include <sys/types.h>
#include <dirent.h>
DIR *opendir(char *dirname);
• Argumentos:
– dirname puntero al nombre del directorio
• Devuelve:
– Un puntero para utilizarse en readdir() o closedir().
NULL si hubo error.
• Descripción:
– Abre un directorio como una secuencia de entradas. Se
coloca en el primer elemento.
Sistemas operativos: una visión aplicada
56
© J. Carretero, F. García, P. de Miguel, F. Pérez
closedir. Cierra un directorio
• Servicio:
#include <sys/types.h>
#include <dirent.h>
int closedir(DIR *dirp);
• Argumentos:
– dirp puntero devuelto por opendir().
• Devuelve:
– Cero ó -1 si error.
• Descripción:
– Cierra la asociación entre dirp y la secuencia de entradas de
directorio.
Sistemas operativos: una visión aplicada
57
© J. Carretero, F. García, P. de Miguel, F. Pérez
29
readdir. Lectura de entradas de directorio
• Servicio:
#include <sys/types.h>
#include <dirent.h>
struct dirent *readdir(DIR *dirp);
• Argumentos:
– dirp puntero retornado por opendir().
• Devuelve:
– Un puntero a un objeto del tipo struct dirent que representa una
entrada de directorio o NULL si hubo error.
• Descripción:
– Devuelve la siguiente entrada del directorio asociado a dirp.
– Avanza el puntero a la siguiente entrada.
– La estructura es dependiente de la implementación. Debería asumirse que
tan solo se obtiene un miembro: char *d_name.
Sistemas operativos: una visión aplicada
58
© J. Carretero, F. García, P. de Miguel, F. Pérez
rewindir. Sitúa el puntero de directorio
• Servicio:
#include <sys/types.h>
#include <dirent.h>
void rewindir(DIR *dirp);
• Argumentos:
– dirp puntero devuelto por opendir()
– Descripción:
– Sitúa el puntero de posición dentro del directorio en la
primera entrada.
Sistemas operativos: una visión aplicada
59
© J. Carretero, F. García, P. de Miguel, F. Pérez
30
link. Crea una entrada de directorio
• Servicio:
#include <unistd.h>
int link(const char *existing, const char *new);
int symlink(const char *existing, const char *new);
• Argumentos:
– existing nombre del archivo existente.
– new nombre de la nueva entrada que será un enlace al archivo existente.
• Devuelve:
– Cero ó -1 si error.
• Descripción:
– Crea un nuevo enlace, físico o simbólico, para un archivo existente.
– El sistema no registra cuál es el enlace original.
– existing no debe ser el nombre de un directorio salvo que se tenga
privilegio suficiente y la implementación soporte el enlace de directorios.
Sistemas operativos: una visión aplicada
60
© J. Carretero, F. García, P. de Miguel, F. Pérez
unlink. Elimina una entrada de directorio
• Servicio:
#include <sys/types>
int unlink(char *name);
• Argumentos:
– name nombre de archivo
• Devuelve:
– Cero ó -1 si error
• Descripción:
– Elimina la entrada de directorio y decrementa el número de
enlaces del archivo correspondiente.
– Cuando el número de enlaces es igual a cero y ningún
proceso lo mantiene abierto, se libera el espacio ocupado por
el archivo y el archivo deja de ser accesible.
Sistemas operativos: una visión aplicada
61
© J. Carretero, F. García, P. de Miguel, F. Pérez
31
chdir. Cambia el directorio actual
• Servicio:
int chdir(char *name);
• Argumentos:
– name nombre de un directorio
• Devuelve:
– Cero ó -1 si error
• Descripción:
– Modifica el directorio actual, aquel a partir del cual se
forman los nombre relativos.
Sistemas operativos: una visión aplicada
62
© J. Carretero, F. García, P. de Miguel, F. Pérez
rename. Cambia el nombre de un archivo
• Servicio:
#include <unistd.h>
int rename(char *old, char *new);
• Argumentos:
– old nombre de un archivo existente
– new nuevo nombre del archivo
• Devuelve:
– Cero ó -1 si error
• Descripción:
– Cambia el nombre del archivo old. El nuevo nombre es
new.
Sistemas operativos: una visión aplicada
63
© J. Carretero, F. García, P. de Miguel, F. Pérez
32
getcwd. obtiene el nombre del directorio actual
• Servicio:
char *getcwd(char *buf, size_t size);
• Argumentos:
– buf puntero al espacio donde almacenar el nombre del
directorio actual
– size longitud en bytes de dicho espacio
• Devuelve:
– Puntero a buf o NULL si error.
• Descripción:
– Obtiene el nombre del directorio actual
Sistemas operativos: una visión aplicada
64
© J. Carretero, F. García, P. de Miguel, F. Pérez
Programa que lista un directorio
#include <sys/types.h>
#include <dirent.h>
#include <stdio.h>
#define MAX_BUF
256
void main(int argc, char **argv)
{
DIR *dirp;
struct dirent *dp;
char buf[MAX_BUF];
/* imrpime el directorio actual */
getcwd(buf, MAX_BUF);
printf("Directorio actual: %s\n", buf);
Sistemas operativos: una visión aplicada
65
© J. Carretero, F. García, P. de Miguel, F. Pérez
33
Programa que lista un directorio (II)
/* abre el directorio pasado como argumento */
dirp = opendir(argv[1]);
if (dirp == NULL) {
fprintf(stderr,"No puedo abrir %s\n", argv[1]);
} else {
/* lee entrada a entrada */
while ( (dp = readdir(dirp)) != NULL)
printf("%s\n", dp->d_name);
closedir(dirp);
}
exit(0);
}
Sistemas operativos: una visión aplicada
66
© J. Carretero, F. García, P. de Miguel, F. Pérez
Contenido
•
•
•
•
•
Visión del usuario del sistema de archivos
Archivos
Directorios
Servicios de archivos
Servicios de directorios
• Sistemas de archivos
•
•
El servidor de archivos
Puntos a recordar
Sistemas operativos: una visión aplicada
67
© J. Carretero, F. García, P. de Miguel, F. Pérez
34
Sistemas de archivos y particiones
•
•
•
•
El sistema de archivos permite organizar la información dentro de los
dispositivos de almacenamiento secundario en un formato inteligible para el
sistema operativo.
Previamente a la instalación del sistema de archivos es necesario dividir
físicamente, o lógicamente, los discos en particiones o volúmenes [Pinkert
1989].
Una partición es una porción de un disco a la que se la dota de una
identidad propia y que puede ser manipulada por el sistema operativo como
una entidad lógica independiente.
Una vez creadas las particiones, el sistema operativo debe crear las
estructuras de los sistemas de archivos dentro de esas particiones. Para ello se
proporcionan mandatos como format o mkfs al usuario.
– #mkswap –c /dev/hda2 20800
– #mkfs -c /dev/hda3 –b 8196 123100
Sistemas operativos: una visión aplicada
68
© J. Carretero, F. García, P. de Miguel, F. Pérez
Tipos de particiones
Partición 4
Partición 5
Partición 2
Partición 3
Sistemas operativos: una visión aplicada
69
© J. Carretero, F. García, P. de Miguel, F. Pérez
35
Sistemas de archivos y particiones (I)
•
•
Sistema de archivos: conjunto coherente de metainformación y datos.
Ejemplos de Sistemas de archivos:
MS-DOS
Boot
Dos copias
de la FAT
Directorio
Raíz
Datos y
Directorios
UNIX
Boot
Super
Bloque
Mapas
de bits
Sistemas operativos: una visión aplicada
Datos y
Directorios
nodos-i
70
© J. Carretero, F. García, P. de Miguel, F. Pérez
Sistemas de archivos y particiones (II)
• Descripción de sistemas de archivos:
– El sector de arranque en MS-DOS
– El superbloque en UNIX
• Relación sistema de archivos-dispositivo:
– Típico: 1 dispositivo N sistemas de archivos (particiones)
– Grandes archivos: N dispositivos 1 sistema de archivos
• Típicamente cada dispositivo se divide en una o más particiones
(en cada partición sistema de archivos)
• La tabla de particiones indica el principio, el tamaño y el tipo de
cada partición.
Sistemas operativos: una visión aplicada
71
© J. Carretero, F. García, P. de Miguel, F. Pérez
36
Bloques y agrupaciones
• Bloque: agrupación lógica de sectores de disco y es la unidad
de transferencia mínima que usa el sistema de archivos.
– Optimizar la eficiencia de la entrada/salida de los
dispositivos secundarios de almacenamiento.
– Todos los sistemas operativos proporcionan un tamaño de
bloque por defecto.
– Los usuarios pueden definir el tamaño de bloque a usar
dentro de un sistema de archivos mediante el mandato mkfs.
• Agrupación: conjunto de bloques que se gestionan como una
unidad lógica de gestión del almacenamiento.
– El problema que introducen las agrupaciones, y los bloques
grandes, es la existencia de fragmentación interna.
Sistemas operativos: una visión aplicada
72
© J. Carretero, F. García, P. de Miguel, F. Pérez
100 %
800
75
500
50
100
uso del
disco
ancho de
banda
50
25
0
0
256
512
1K
2K
4K
8K
16K
Uso del Espacio de Disco
Ancho de Banda (Kbytes/sec)
Tamaño bloque, ancho banda y uso disco
32K
Tamaño de Bloque
Sistemas operativos: una visión aplicada
73
© J. Carretero, F. García, P. de Miguel, F. Pérez
37
Estructuras de sistemas de archivos
Sistemas operativos: una visión aplicada
74
© J. Carretero, F. García, P. de Miguel, F. Pérez
Contenido
•
•
•
•
•
•
Visión del usuario del sistema de archivos
Archivos
Directorios
Servicios de archivos
Servicios de directorios
Sistemas de archivos
• El servidor de archivos
•
Puntos a recordar
Sistemas operativos: una visión aplicada
75
© J. Carretero, F. García, P. de Miguel, F. Pérez
38
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 fácilmente.
• Dicho servidor de archivos tiene dos tipos de problemas de
diseño muy distintos entre sí:
– Definir la visión 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 visión del usuario con el sistema físico
de almacenamiento secundario.
Sistemas operativos: una visión aplicada
76
© J. Carretero, F. García, P. de Miguel, F. Pérez
Estructura del servidor de archivos
Proceso de
Usuario 1
Proceso de
Usuario 2
Proceso de
Usuario 3
Proceso de
Usuario n
...
Nivel de
usuario
Nivel de
sistema
Sistema de Archivos Virtual
Módulo de Organización de Archivos
ext2
msdos
Servidor de Bloques
ffs
...
proc
Cache de
Bloques
Manejadores de Dispositivo
...
Sistemas operativos: una visión aplicada
77
© J. Carretero, F. García, P. de Miguel, F. Pérez
39
Servidor de bloques
• Se encarga de emitir los mandatos genéricos para leer y escribir
bloques a los manejadores de dispositivo.
• La E/S de bloques de archivo, y sus posibles optimizaciones, se
lleva a cabo en este nivel del servidor de archivos.
• Las operaciones se traducen a llamadas de los manejadores de
cada tipo de dispositivo específico y se pasan al nivel inferior
del sistema de archivos.
• Esta capa oculta los distintos tipos de dispositivos, usando
nombres lógicos para los mismos. Por ejemplo, /dev/hda3
será un dispositivo de tipo hard disk (hd), cuyo nombre
principal es a y en el cual se trabaja sobre su partición 3.
• Los mecanismos de optimización de la E/S, como la cache de
bloques, se incluye en este nivel.
Sistemas operativos: una visión aplicada
78
© J. Carretero, F. García, P. de Miguel, F. Pérez
Descomposición en operaciones de
bloques
• Archivos con estructura de bytes
– Escritura leer
Fichero (tira de bytes)
Bloques
Sistemas operativos: una visión aplicada
79
© J. Carretero, F. García, P. de Miguel, F. Pérez
40
Manejadores de dispositivos
•
•
•
•
Un manejador por cada dispositivo, o clase de dispositivo, del sistema.
Su función principal es recibir ordenes de E/S de alto nivel, tal como
move_to_block 234, y traducirlas al formato que entiende el controlador
del dispositivo, que es dependiente de su hardware.
Habitualmente, cada dispositivo tiene una cola de peticiones pendientes, de
forma que un manejador puede atender simultáneamente a varios dispositivos
del mismo tipo.
Una de las principales funciones de los manejadores de dispositivos es recibir
las peticiones de entrada/salida y colocarlas en el lugar adecuado de la cola de
peticiones del dispositivo afectado.
– La política de inserción en cada cola puede ser diferente, dependiendo del
tipo de dispositivo o de la prioridad de los dispositivos. Para un disco, por
ejemplo, se suele usar la política CSCAN.
Sistemas operativos: una visión aplicada
80
© J. Carretero, F. García, P. de Miguel, F. Pérez
Flujo de datos en el S. de A.
read (fd, buffer, tamaño)
buffer
Usuario
tamaño
archivo lógic o
(VFS)
archivo lógic o
(FFS)
3
4
5
6
bloques del
archivo
Bloques lógicos
(Servidor
de bloques)
1340
1756
840
8322
bloques del
dispositivo
1340
Manejador de
disco y
dispositivo
1756
bloques del
disco
840
8322
Sistemas operativos: una visión aplicada
81
© J. Carretero, F. García, P. de Miguel, F. Pérez
41
Relación Sector Lógico y Sector Físico (I)
• El nivel más básico del servidor de bloques
– Los dispositivos de almacenamiento secundario se muestran
como un array lineal de bloques.
– Estructura física tridimensional
• Número de sector físico
• Número de cabeza
• Número de cilindro
– Parámetros
• Sectores/pista
• Pistas/cilindro (Nº de cabezas)
• Cilindros/disco (Nº de cilindros)
Sistemas operativos: una visión aplicada
82
© J. Carretero, F. García, P. de Miguel, F. Pérez
Relación Sector Lógico y Sector Físico (II)
•
Lógico=
Nº sector físico +
(sectores/pista)*cabeza +
(sectores/pista)*(Nº cabezas)*cilindro
Sector lógico
0
1
2
3
4
5
6
7
8
…
Sistemas operativos: una visión aplicada
Sector físico
0
1
2
3
0
1
2
3
0
…
Cabeza
0
0
0
0
1
1
1
1
0
…
83
Cilindro
0
0
0
0
0
0
0
0
1
…
© J. Carretero, F. García, P. de Miguel, F. Pérez
42
Estructuras de datos asociadas al S. de A. (I)
•
Tabla de archivos abiertos (tdaa) por un proceso, dentro del BCP, con sus
descriptores temporales y el valor del apuntador de posición del archivo para
ese proceso.
– El tamaño de esta tabla define el máximo número de archivos que cada
proceso puede tener abierto de forma simultánea.
– El descriptor de archivo fd indica el lugar de tabla. La tdaa se rellena
de forma ordenada, de forma que siempre se ocupa la primera posición
libre de la tabla.
– En los sistemas UNIX cada proceso tiene tres descriptores de archivos
abiertos por defecto: entrada estándar, fd = 0, salida estándar, fd =
1, error estándar, fd = 2.
Sistemas operativos: una visión aplicada
84
© J. Carretero, F. García, P. de Miguel, F. Pérez
Correspondencia bloques-archivos
•
•
¿Cómo asignar los bloques de disco a un archivo y cómo hacerlos
corresponder con la imagen del archivo que tiene la aplicación?
Asignación de bloques contiguos.
– Sencillo de implementar y el rendimiento de la E/S es muy bueno.
– Si no se conoce el tamaño total del archivo cuando se crea, puede ser necesario
buscar un nuevo hueco de bloques consecutivos cada vez que el archivo crece.
– Fragmentación externa -> compactar el disco.
•
Asignación de bloques discontiguos.
– Se asigna al archivo el primer bloque que se encuentra libre.
– No hay fragmentación externa del disco ni búsqueda de huecos.
– Los archivos pueden crecer mientras exista espacio en el disco.
– Complica la implementación de la imagen de archivo -> mapa de bloques
del archivo.
Sistemas operativos: una visión aplicada
85
© J. Carretero, F. García, P. de Miguel, F. Pérez
43
Mecanismos enlazados
• Listas o índices enlazados: desde cada entrada de un bloque
existe un enlace al siguiente bloque del archivo.
• Ejemplo: tabla FAT de Windows
FAT
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
archivo A:
6
8
4
archivo B:
5
9
12
archivo C:
10
3
13
Sistemas operativos: una visión aplicada
86
2
© J. Carretero, F. García, P. de Miguel, F. Pérez
Mecanismos indexados
• Cada archivo tiene sus bloques de índice que incluyen apuntadores a
los bloques de disco del archivo.
•
– El orden lógico se consigue mediante la inserción de los apuntadores en
orden creciente, a partir del primero, en los bloques de índices.
– Ventaja: basta con traer a memoria el bloque de índices donde está el
apuntador a los datos para tener acceso al bloque de datos. Si un
apuntador de bloque ocupa 4 bytes y el bloque es de 4 Kbytes, con un
único acceso a disco tendremos 1024 apuntadores a bloques del archivo.
– Problema: el espacio extra necesario para los bloques de índices.
Ese problema, fue resuelto en UNIX BSD combinando un sistema de índices
puros con un sistema de índices multinivel, que es que se usa actualmente en
UNIX y LINUX.
• Permite almacenar archivos pequeños sin necesitar bloques de índices.
• Permite accesos aleatorios a archivos muy grandes con un máximo de 3
accesos a bloques de índices.
Sistemas operativos: una visión aplicada
87
© J. Carretero, F. García, P. de Miguel, F. Pérez
44
Mapa de bloques en un nodo-i
nodo-i
Información
del archivo
DISCO
820
Indirecto doble
342
1623
8204
1134
...
Indirecto simple
...
Direcciones de
los 10 primeros
bloques
10211
Bloque
indirecto
Indirecto triple
2046
20464
675
Sistemas operativos: una visión aplicada
88
© J. Carretero, F. García, P. de Miguel, F. Pérez
Gestión de espacio libre
•
Mapas de bits, o vectores de bits: un bit por recurso existente (descriptor de
archivo, bloque o agrupación). Si el recurso está libre, el valor del bit
asociado al mismo es 1, si está ocupado es 0.
– Ejemplo, sea un disco en el que los bloques 2, 3, 4, 8, 9 y 10 están ocupados y el
resto libres, y en el que los descriptores de archivo 2, 3 y 4 están ocupados. Sus
mapas de bits de serían:
• MB de bloques:
1100011100011.... M
• MB de descriptores: 1100011...
– Fácil de implementar y sencillo de usar. Eficiente si el dispositivo no está muy
lleno o muy fragmentado.
• Listas de recursos libres: mantener enlazados en una lista todos los
recursos disponibles (bloques o descriptores de archivos) manteniendo
un apuntador al primer elemento de la lista.
– Este método no es eficiente, excepto para dispositivos muy llenos y
fragmentados
– Uso de agrupaciones.
Sistemas operativos: una visión aplicada
89
© J. Carretero, F. García, P. de Miguel, F. Pérez
45
Ejemplo de listas de recursos
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Bloques libres
7
Bloques libres
7,1
Sistemas operativos: una visión aplicada
11
14
16
11,1 14,1
90
18
17
16,3
(A)
(B)
© J. Carretero, F. García, P. de Miguel, F. Pérez
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 están almacenados sólo 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 volátil.
– 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 visión aplicada
91
© J. Carretero, F. García, P. de Miguel, F. Pérez
46
Descargar