Implementacion de Sistema de Archivos
-
Upload
javy-carvajal -
Category
Documents
-
view
10 -
download
1
Transcript of Implementacion de Sistema de Archivos
Operating System Concepts with Java – 7th Edition, Nov 15, 2006 Silberschatz, Galvin and Gagne ©2007
Capítulo 11: Implementación Sistema de Archivos
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Capítulo 11: Implementación Sistema Archivos
Estructura del Sistema de Archivos Implementación del Sistema de Archivos Implementación del Directorio Métodos de asignación Manejo de espacio-libre Eficiencia y desempeño Recuperación Sistema de Archivos con estructura de bitácora NFS Ejemplo: WAFL File System
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Objetivos
Describir detalles de implementación para sistemas de archivo locales y estructuras de directorio
Describir implementación de sistemas de archivos remotos
Discutir algoritmos de asignación de bloques y bloques libres, pros y contras
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Estructura del sistema de archivos
Estructura de archivo Unidad de almacenamiento lógico Colección de información relacionada
El sistema de archivos vive en almacenamiento secundario (discos)
Sistema de archivos diseñado en capas Bloque de control de archivo – estructura de
almacenamiento que contiene información de un archivo
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Sistema de archivos en capas
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Un bloque de control de archivo típico
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Estructuras del SA en memoria
La siguiente figura ilustra las estructuras requeridas por el sistema de archivos y que son provistas por el sistema operativo.
Figura 12-3(a): abriendo un archivo.
Figura 12-3(b): leyendo un archivo.
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Estructuras del SA en memoria
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Sistema virtual de archivos (VFS)
Sistema Virtual de Archivos (VFS) ofrecer una manera orientada a objetos para implementar sistemas de archivos.
VFS permite utilizar la misma interfaz de llamadas al sistema (el API) para distintos tipos de sistemas de archivos.
Dicha API es la interfaz de VFS y no la de un tipo particular de sistema de archivos.
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Vista esquemática de VFS
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Implementación de Directorios
Lista lineal de nombres de archivos con un apuntador a los bloques de datos. fácil de programar muy costosa (en tiempo) en ejecución
Tabla de hash – lista con estructura de dispersión. reduce el tiempo de búsqueda en el directorio colisiones – cuando dos archivos tiene la
misma dispersión tamaño fijo
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Métodos de asignación
Un método de asignación se refiere a la manera en que asignamos bloques para archivos:
Asignación contigua
Asignación ligada
Asignación indexada
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Asignación contigua
Cada archivo ocupa un conjunto contiguo de bloques en el disco
Simple – sólo requerimos la posición inicial (bloque #) y longitud (número de bloques)
Acceso aleatorio Desperdiciamos espacio (problema de
asignación dinámica de almacenamiento) No pueden crecer los archivos
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Asignación contigua de espacio en disco
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Sistemas basados en Extensión
Muchos sistemas de archivos modernos (v.gr. Veritas File System, Ext4) utilizan un esquema de asignación contigua modificado
Sistemas de archivos basados en extensiones asignan bloques de disco por extensión
Una extensión es una extensión contigua (bloques) en un disco Se asignan extensiones para alojar archivos Un archivo consiste de una o más extensiones
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Asignación ligada
Cada archivo es una lista ligada de bloques de disco: bloques que pueden estar regados por todo el disco.
apuntadorblock =
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Asignación ligada
Simple – requiere únicamente la dirección inicial Sistema para manejo de espacio libre – no desperdicia espacio No hay acceso aleatorio Mapeo
Accediendo al Q-ésimo bloque en la cadena ligada de bloques que representa el archivo.Desplazamiento en el bloque = R + 1
File-allocation table (FAT) – asignación de espacio-disco utilizado por MS-DOS y OS/2.
DL/511
Q
R
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Asignación ligada
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
File-Allocation Table (FAT)
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Asignación indexada
Junta todos los apuntadores en un único bloque índice.
Vista lógica.
index table
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Ejemplo de asignación indexada
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Asignación indexada
Requiere tabla índice Acceso aleatorio Acceso dinámico sin fragmentación externa, pero con la sobre-
carga del bloque índice. Mapeo de lógica a física en un archivo de tamaño máximo de 256K
palabras y tamaño de bloques de 512 palabras. Un sólo bloque para la tabla de índices.
DL/512Q
R
Q = Desplazamiento dentro de la tablaR = Desplazamiento en el bloque
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Asignación indexada -- Mapeo
Mapeo de lógica a física en un archivo de tamaño no limitado (bloque de 512 palabras).
Esquema ligado – Ligamos bloques con tablas índice (sin límite de tamaño)
DL / (512 x 511)Q1
R1
Q1 = Bloque de la tabla índiceR1 se utiliza de la siguiente forma:
R1 / 512
Q2
R2
Q2 = Desplazamiento en el bloque de tabla índiceR2 desplazamiento en el bloque del archivo:
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Asignación indexada -- Mapeo
Índice de dos-niveles (tamaño máximo archivo 5123)
DL / (512 x 512)Q1
R1
Q1 = Desplazamiento en índice externoR1 se utiliza de la siguiente manera:
R1 / 512
Q2
R2
Q2 = desplazamiento en el bloque de tabla índiceR2 desplazamiento en el bloque del archivo:
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Asignación indexada -- Mapeo
M
índice exterior
tabla índice archivo
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Esquema combinado: UNIX (4K bytes / bloque)
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Manejo de espacio libre Vector de bits (n bloques)
…0 1 2 n-1
bit[i] =
67
8 0 ⇒ block[i] libre
1 ⇒ block[i] ocupado
Cálculo para número de bloque
(número de bits por palabra) *(número de palabras con valor-0) +desplazamiento al primer bit 1
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Manejo de espacio libre
Mapa de bits requiere espacio extra Ejemplo:
tamaño de bloque = 212 bytes tamaño de disco = 230 bytes (1 GB) n = 230/212 = 218 bits (o 32K bytes)
Fácil obtener archivos contiguos Lista ligada (lista libre)
No puede obtener espacio contiguo fácilmente No desperdicia espacio
Agrupamiento Contabilidad
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Manejo de espacio libre Necesitamos proteger:
Apuntador a la lista libre Mapa de bits
Debe mantenerse en disco Copia en memoria y disco pueden diferir No puede permitir situación donde block[i]
tenga bit[i] = 1 en memoria y bit[i] = 0 en disco Solución:
Asignar bit[i] = 1 en disco Asignar block[i] Asignar bit[i] = 1 en memoria
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Lista ligada de espacio libre en disco
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Eficiencia y rendimiento Eficiencia depende de:
algoritmos para asignación de disco y directorio tipo de datos se mantiene en la entrada del
archivo en el directorio
Rendimiento cache de disco – sección separada de memoria
para bloques utilizados continuamente libre-atrás y leer-adelante – técnicas para
optimizar acceso secuencial mejorar rendimiento del sistema asignando parte
de la memoria como disco virtual, o disco RAM
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Cache de páginas Un cache de páginas en lugar de bloques de disco
para utilizar las técnicas de memoria virtual
E/S con memoria-mapeada utiliza un cache de páginas
Rutinas de E/S en el sistema de archivos utilizan el cache en disco (buffer)
Esto nos lleva a la siguiente imagen
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
E/S sin un Cache Unificado (buffer)
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Cache Unificado (buffer)
Un cache unificado utiliza el mismo cache de páginas tanto para las mapeadas-a-memoria como para E/S ordinaria del SA
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Recuperación
Chequeo de consistencia – compara los datos en la estructura del directorio con los bloques en disco, trata de corregir inconsistencias
Utilizar programas para respaldar los datos del disco a otro dispositivo (floppy, cintas, otros discos magnético u ópticos)
Recuperar el archivo perdido recuperándolo del respaldo
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Sistemas de archivos con bitácora
Sistemas de archivo con bitácora (o journaling) guarda cada actualización al sistema de archivos como una transacción
Todas las transacciones se escriben a la bitácora Una transacción se compromete cuando está escrita en
la bitácora Sin embargo, el sistema de archivos puede no estar
actualizado aún Las transacciones en la bitácora son escritas de manera
síncrona al sistema de archivos Cuando se modifica un sistema el archivos, se elimina la
transacción de la bitácora Si se cae el sistema de archivos, todas las transacciones
pendientes en la bitácora deben realizarse
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
El Network File System (NFS) de Sun
Una implementación y especificación de software para acceder a archivos remotos a través de redes LAN (o WAN)
La implementación es parte de Solaris (antes SunOS) utilizando el protocolo UDP (Unreliable Datagram Protocol)
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
NFS Estaciones ínter-conectadas con sus propios sistemas de
archivos. Esto permite compartir entre ellas de manera transparente. Un directorio remoto se monta en un directorio del sistema
de archivos local El directorio montado luce como sub-árbol estándar del
sistema local La especificación del directorio remoto no es transparente;
debe etiquetarse con el nombre del servidor remoto Los archivos en el directorio remoto se acceden de
manera transparente Sujeto a permisos de autorización y autenticación.
Potencialmente cualquier directorio en el sistema de archivos remoto puede montarse sobre cualquier directorio local.
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
NFS
NFS está diseñado para operar en un ambiente heterogéneo con distintos equipos, sistemas operativos y arquitectura de red. La especificación de NFS es independiente de estas variables.
Esta independencia se alcanza utilizando primitivas RPC sobre el protocolo External Data Representation (XDR) (que deben implementar ambos extremos).
La especificación de NFS distingue entre los servicios provistos por el mecanismo de montaje y aquellos del acceso-al-archivo-remoto.
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Tres sistemas de archivos independientes
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Montando con NFS
Montaje Montando en cascada
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Protocolo de montado de NFS Establece la conexión lógica entre servidor y cliente La operación de montado incluye los nombres del directorio
remoto y el servidor que lo contiene La solicitud se mapea a la RPC correspondiente y se envía
al demonio mount corriendo en el servidor Lista de exportación – especifica los archivos locales que
exporta el servidor, junto con los nombres de las máquinas que pueden montarlos
Siguiendo a una solicitud de montado aprobada por la lista de exportación, el servidor regresa un manejador de archivo—una llave para accesos futuros
Manejador de archivo – un identificador de archivo-sistema y un número de inodo para identificar el directorio montado dentro del sistema de archivos exportado
La operación de montaje cambia la visión del usuario y no afecta la del servidor
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Protocolo NFS Provee un conjunto de llamadas a procedimientos remotos
para operar sobre archivos. Soportan las operaciones: buscar un archivo dentro de un directorio leer un conjunto de entradas de directorio manipular ligas y directorios acceder atributos de archivos leer y escribir archivos
Servidores NFS no conservan estado; cada solicitud debe proveer un conjunto completo de argumentos(NFS V4 2000..2003 – muy diferente, con estado, seguridad)
Datos modificados deben enviarse al disco del servidor antes de regresar al cliente (se pierde la ventaja de cachar)
El protocolo NFS no provee mecanismos de control de concurrencia
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Tres capas importantes arquitectura NFS
Interfaz al sistema de archivos UNIX (basada en las llamadas open, read, write, y close, y file descriptors)
Capa Virtual File System (VFS) – distingue entre archivos locales y remotos. Los archivos locales se distinguen además de acuerdo a su tipo de sistema de archivos El VFS activa operaciones específicas de sistemas de
archivos para manejar las solicitudes locales de acuerdo a sus tipos
Llama los procedimientos del protocolo NFS para solicitudes remotas
Capa de servicio NFS – capa más baja de la arquitectura Implementa el protocolo NFS
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Vista esquemática. Arquitectura NFS
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
NFS: Traducción de rutas
Se realiza partiendo la ruta en sus nombres componentes y realizando una llamada de búsqueda NFS para cada par de componentes nombre y directorio vnode
Para acelerar la búsqueda, un cache de nombres de directorios del lado del cliente mantiene los vnodes de los nombres de directorios remotos
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
NFS Operaciones remotas Casi corresponden uno-a-uno con las llamadas al sistema
estándar de UNIX (excepto abrir y cerrar archivos) NFS se adhiere al paradigma de servicio remoto, pero emplea
técnicas de buffering y cache para mejorar el rendimiento Cache de bloques-archivo – cuando se abre un archivo, el
kernel checa con el servidor remoto si trae o re-valida los atributos cachados Se utilizan los bloques del archivo cachados sólo si sus
atributos están al día Cache de atributos de archivo – se actualiza el cache cada
vez que llegan nuevos atributos del servidor Los clientes no liberan bloques escritos hasta que el servidor
confirma que han sido escritos a disco
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Ejemplo: Sistema de Archivos WAFL
Utilizado en Dispositivos de Red “Filers” – dispositivos de sistemas de archivos distribuidos
Formato de archivos escribe-en-cualquier-lugar Sirve NFS, CIFS, http, ftp Optimizado para E/S aleatoria, escritura optimizada
NVRAM para cachar escritura Similar a Berkeley Fast File System, con muchas
modificaciones
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
El formato de archivos WAFL
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Instantánea en WAFL
11. Silberschatz, Galvin and Gagne ©2007Operating System Concepts with Java – 7th Edition, Nov 15, 2006
Un bloque de control de archivo
Operating System Concepts with Java – 7th Edition, Nov 15, 2006 Silberschatz, Galvin and Gagne ©2007
Final del Capítulo 11