Title: Dise
1Tema 4. Sistemas de Ficheros
- Dos módulos
- Interfaz del sistema de ficheros
- Implementación del sistema de ficheros
- Objetivos
- Que el alumno entienda los conceptos de fichero y
directorio - Mostrar los métodos de acceso y los mecanismos de
protección - Estudiar las semánticas de compartición
- Que el alumno comprenda la estructura del
sistema de ficheros - Presentar distintas técnicas de gestión de
archivos y directorios a nivel de diseño.
2Módulo 1.Interfaz del Sistema de Ficheros
Concepto de fichero? Métodos de
acceso Estructura de directorio Protección Semánti
cas de compartición
3Concepto de Fichero
- Un espacio lógico de direcciones contiguas usado
para almacenar datos - Tipos de ficheros
- Datos
- numéricos
- carácter
- binarios
- Programas
- código fuente
- ficheros objetos (imagen de carga)
- Documentos
4Estructura 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
5Estructura del Fichero Ejecutable
6Atributos del Fichero
- Nombre la única información en formato legible
por una persona - Tipo necesario en sistemas que proporciona
distintos formatos - Posición apuntador a la posición del fichero en
un dispositivo - Tamaño tamaño actual del fichero
- Protección control de accesos y de las
operaciones sobre ficheros - Tiempos de creación, de acceso, de modificación,
etc. - Identificación de usuario dueño, y grupo, del
fichero - La información relacionada con el fichero se
mantiene en el descriptor del fichero, al que se
apunta desde los directorios.
7Atributos del Fichero
8Operaciones sobre Ficheros
- fd create(nombre, protección) crea un fichero
con ese nombre y esa protección y devuelve un
descriptor - delete(nombre) borra el fichero con ese nombre
- fd open(nombre, operación) abre un fichero con
ese nombre para esa(s) operación(es) y devuelve
un descriptor - close(fd) cierra un fichero abierto con
descriptor fd - read(fd, almacén, cantidad) lee cantidad del
fichero fd, abierto, al almacén. - write(fd, almacén, cantidad) escribe cantidad al
fichero fd, abierto, desde el almacén. - truncate(fd) vacía el fichero fd.
- lseek(fd, desplazamiento, relativo_a) mueve el
apuntador a relativo_a desplazamiento.
9Nombres de Fichero y Extensiones
- Tiras de caracteres
- Longitud fija o variable
- Sensibles a tipografía
- Extensión obligatoria o no
- Los usuarios usan nombres lógicos de este estilo
- Los directorios relacionan nombres lógicos y
descriptores internos de ficheros - El sistema de ficheros trabaja con descriptores
internos
10Métodos de Acceso
- Acceso secuencial
- read next, write next, reset, no read after last
write, - rewind ir al principio para buscar hacia delante
- Dispositivos de cinta
- 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
11Visiones del Fichero
12Concepto de Directorio
- Una colección de nodos que contienen información
acerca de los ficheros - Tanto la estructura del directorio como los
ficheros 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.
13Estructuras de Directorio
14Operaciones de Directorio
- mkdir (nombre, proteccion)
- rmdir (nombre)
- dirpopendir (nombre) devuelve un descriptor de
directorio - closedir (dirp)
- dirent readdir (dirp) devuelve una entrada del
directorio - chdir (nombre)
- link (origen, destino)
15Organización del Directorio
- Eficiencia localizar un fichero rápidamente
- Nombrado conveniente y sencillo para los
usuarios - Dos usuarios pueden tener el mismo nombre para
ficheros distintos - Los mismos ficheros pueden tener nombres
distintos - Nombres de longitud variable
- Agrupación agrupación lógica de los ficheros
según sus propiedades (por ejemplo programas
Pascal, juegos, etc.) - Estructurado operaciones claramente definidas y
ocultación - Sencillez la entrada de directorio debe ser lo
más sencilla posible.
16Directorio de un Nivel
- Un único directorio para todos los usuarios
- Problemas de nombrado y agrupación
17Directorio de dos Niveles
- Un directorio por cada usuario
- Camino de acceso automático o manual
- El mismo nombre de fichero para varios usuarios
- Búsqueda eficiente, pero problemas de agrupación
18Directorio con Estructura de Árbol
- Búsqueda eficiente y agrupación
- Nombres relativos y absolutos -gt directorio de
trabajo
19Directorio 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 fichero rm ltnombre-ficherogt
- Crear un subdirectorio mkdir ltnombre_dirgt
- Ejemplo
- cd /spell/mail
- mkdir count
- ls /spell/mail/count
- Borrar un subdirectorio rm -r mail
20Directorio de Grafo Acíclico I
- Tienen ficheros y subdirectorios compartidos
- Este concepto no existe en Windows
21Directorio de Grafo Acíclico II
- link Un fichero con varios nombres -gt control de
enlaces - un único fichero con contador enlaces en
descriptor (e. Físicos) - ficheros nuevos con el nombre destino dentro (e.
simbólicos) - Borrado de enlaces
- a) decrementar contador si 0 borrar fichero
- b) recorrer los enlaces y borrar todos
- c) borrar únicamente el enlace y dejar los demás
- Problema grave existencia de bucles en el árbol.
Soluciones - Permitir sólo enlaces a ficheros, no
subdirectorios - Algoritmo de búsqueda de bucle cuando se hace un
enlace - Limitación de implementación en UNIX sólo
enlaces físicos dentro del mismo sistema de
ficheros.
22Protección
- El dueño (creador) de un fichero debería ser
capaz de controlar - lo que se puede hacer
- por quién
- Tipos de acceso read, write, execute, append,
delete, list - Políticas de protección restrictivas, conocidas,
sencillas, - Dominio conjunto de usuarios a los que se agrupa
con los mismos criterios de seguridad - Mecanismos de protección
- matriz de protección (objeto, usuario) -gt
derechos - listas de control de acceso matriz de protección
por columnas - capacidades matriz de protección por filas
23Matriz de Protección
- Mecanismo general (dominio, objeto) -gt derechos
positivos o negativos - Problema muy grande y dispersa -gt implementación
difícil y costosa - Vale como modelo teórico (HRU), pero poco práctca
- Base de los mecanismos usados más frecuentemente
ACL, CAP
24Listas de Control de Acceso
- Lista por objeto con una entrada por usuario o
dominio especificando derechos de acceso - Si es muy larga, su manejo es complejo.
- Habitual denegaciones primero y encadenamiento
doble - Fácil denegar acceso total eliminando la ACL del
objeto
25Listas de Control de Acceso y Grupos
- Modo de acceso read, write, execute
- UNIX tres clases de usuarios
- a) dueño 7 111 rwx
- b) grupo 6 110 rw-
- c) público 1 001 --x
- El administrador crea usuarios y grupos. Un grupo
puede tener múltiples usuarios. Un usuario puede
estar en varios grupos. - Cambiar protección chmod 761 fichero
- Cambiar dueño chown usuario fichero
- Cambiar grupo chgrp grupo fichero
- Windows NT más selectivo permisos positivos y
negativos específicos por objeto y usuario.
26Capabilities
- Cada usuario tiene una protección por objeto.
Bueno para sistemas distribuidos - Fácil dar permisos
- Difícil revocar todos los permisos. Soluciones
- Envíos masivos a los usuarios
- Cambiar el objeto origen por otro
- Usar una capability intermedia y eliminarla
27Módulo 2.Implementación del Sistema de Ficheros
Estructura del sistema de ficheros Estructura del
servidor de ficheros Métodos de
asignación Gestión del espacio libre Incremento
de prestaciones Fiabilidad y recuperación
28Estructura del Sistema de Ficheros
- Sistema de ficheros unidad lógica de
almacenamiento donde se recolecta información
relacionada - El sistema de ficheros reside en particiones, o
volúmenes, de almacenamiento secundario
29Superbloque
- Contiene la información de estructura del sistema
de ficheros - Uno por sistema de ficheros. Si falla, el SF
queda inaccesible.
30Estructura del Servidor de Ficheros
31El Servidor de Ficheros Virtuales
- Interfaz de usuario para un fichero genérico
nodo-v. - Operaciones del fichero genérico fechas,
posición, - Operaciones específicas cada servidor de
ficheros particular
32Flujo de datos en el Servidor de Ficheros
33Tablas de Datos del Servidor de Archivos
34Asignación Contigua
- Fichero conjunto de bloques de disco contiguos
- Simple 1er bloque longitud / tamaño bloque
- Acceso aleatorio sencillo
- Problema 1 ficheros no pueden crecer -gt buscar
hueco nuevo -gt fragmentación externa - Problema 2 fragmentación -gt búsqueda huecos muy
difícil - Mapa lógico-físico
- num. bloque posición / tamaño bloque
- desplazamiento posición MOD tamaño bloque
- No se usa en sistemas operativos de propósito
general.
35Asignación Enlazada I
- Fichero lista enlazada (doblemente) de bloques
de disco dispersos - Acceso aleatorio costoso muchos accesos a disco
- Ejemplo FAT de MS-DOS y OS/2
36Asignación Enlazada II
- No hay fragmentación externa, pero tiene la
sobrecarga de los bloques de enlaces - Mapa lógico-físico
- Bloque destino (D) Posición / Tamaño bloque
- Desplazamiento en el bloque Posición MOD Tamaño
bloque - Accesos 1er bloque en lista D
- Problema recorridos hacia atrás listas con
enlaces dobles - Optimización
- Listas con grupos de bloques contiguos asociados
a un fichero - Reducen el número de accesos hasta llegar al
bloque, pero en el peor caso serían los mismos
que sin optimizar
37Asignación Indexada I
- Fichero índice ordenado de bloques de disco
dispersos - Necesita una tabla de índice
- Acceso aleatorio rápido
- No hay fragmentación externa, pero tiene la
sobrecarga de los índices de bloques - Mapa lógico-físico puntero a bloque destino
- Bloque destino Posición / Tamaño bloque
- Desplazamiento en el bloque Posición MOD Tamaño
bloque - Posición en índice Bloque destino Tamaño
puntero - Ejemplo Nodo-i de UNIX
38Asignación Indexada II
- Problema hacen falta muchos bloques de índices
-gt muchos accesos a disco. Ejemplo - Bloque de 4 Kbytes y puntero de 4 bytes -gt 1
Kíndice por bloque -gt 4 Mbytes tamaño fichero
máximo. - Fichero 4 Gbytes -gt 1 Kbloques de índices
- Solución índices de varios niveles.
- Dos niveles 1Míndice -gt 4 Gbytes
- Tres niveles 1 Gíndice -gt 4 Tbytes
- Problema más niveles -gt más accesos a disco,
incluso para accesos pequeños. - Solución esquema combinado (ejemplo nodo -i de
UNIX)
39 Nodo-i de UNIX
40MFDT Windows NT
- Problema nodo-i siempre un acceso a disco, como
mínimo, para traer datos. - Para ficheros pequeños, se podría evitar metiendo
datos en el descriptor del fichero. Ejemplo
Registro MFT de Windows NT. - Problema complica el mapa lógico-físico
41Implementación de Directorios
- Entrada directorio tamaño fijo (MS-DOS) o
variable (UNIX) - Listas lineales de nombres de ficheros con
punteros a bloques de datos - fáciles de programar
- costosas en tiempo de ejecución
- Tablas con acceso aleatorio (hash) listas
lineales con estructura de datos aleatorios - tiempo de búsqueda de directorios más pequeña
- colisiones dos nombres de ficheros pueden ir a
la misma entrada aleatoria - Siempre se implementan basándose en ficheros
42Directorios en UNIX
43Construcción del Árbol de Nombres
44Gestión de Espacio Libre I
- Mapas de bits Un bit por bloque (o nodo-i). 0
libre, 1 ocupado - Espacio en disco disk_size / (8 block_size)
- La asignación funciona bien si no está muy lleno
el disco. En caso contrario Fragmentación del
mapa -gt difícil buscar huecos grandes - Listas enlazadas de bloques libres simples o
dobles. - No hay fragmentación en la lista
- Es difícil, y lento, buscar espacio contiguo
- Optimización listas de grupos de bloques libres
45Gestión de Espacio Libre II
- Los mapas de bits son más populares actualmente
- Es necesario proteger
- Los punteros a las listas de recursos
- Los mapas de bits
- Deben estar en disco
- Las copias en disco y en memoria pueden diferir
-gt escritura inmediata a disco - Los mapas de recursos están en una especial del
sistema de ficheros y no cuentan como bloques de
datos - Los bloques de los mapas están contiguos. La
dirección de sus primeros bloques se guarda en el
superbloque
46Incremento de Prestaciones
- La eficiencia depende de
- los algoritmos de asignación de ficheros y
directorios - el tipo de datos que hay en los descriptores de
ficheros y directorios - la estructura del sistema de ficheros
- Mecanismos de incremento de prestaciones
- Cache de nombres y de bloques últimos datos
accedidos se guardan en memoria - Lectura adelantada para optimizar accesos
secuenciales - Usar discos RAM para evitar accesos a discos (por
ejemplo /proc)
47La Cache de Bloques
- Almacén de bloques de disco que se mantiene en
memoria - Estructura lista hash con información de bloques
y punteros a los datos - Tamaño máximo limitado por la memoria que ocupa.
- Todos los accesos a ficheros pasan por la cache
- Lectura estan en cache?
- Si -gt copiar a usuario
- No-gt leer de disco y copiar a usuario
- Política de reemplazo LRU, MRU, FIFO, hash. LRU
popular - Antes de reemplazar bloques sucios hay que
escribir a disco - delayed-write escribir cada n segundos
- write-through escribir inmediatamente (mapas,
metadatos, etc.)
48Flujo de Datos con Cache de Bloques
49Fiabilidad y Recuperación
- La perdida de un sistema de ficheros es muy grave
y, muchas veces, no se puede recuperar. - Solución
- Copias de respaldo.
- Volcar a discos, cintas, ...
- Totales e incrementales
- Políticas de copia de respaldo
- Almacenamiento con redundancia
- Discos espejo, RAID, replicación, .
- Mucha seguridad dispositivos en instalaciones
aisladas - Comprobaciones de consistencia (fsck) de mapas de
recursos, asignación de descriptores y entradas
de directorios.
50Recuperación
- Un sistema de ficheros puede estar incoherente.
- Existen aplicaciones como fsck o scandisk que
comprueban el SF, lo dejan coherente y, a veces,
recuperan la información perdida.