You are on page 1of 40

Tema del da:

Implementacin de Sistemas de Archivos

Objetivos
Repasar el concepto de archivo y directorio. Analizar las cuestiones de diseo e implementacin de un sistema de archivos. Evaluar las ventajas y desventajas de cada estrategia de implementacin.

En esta clase trataremos de:

Archivo
Coleccin de informacin relacionada, con un nombre, que se graba en almacenamiento secundario Nombre. Identificador nico. Tipo. Ubicacin (de los datos). Tamao. Proteccin. Informacin temporal.

Atributos de un archivo:

Archivos
Aspectos de implementacin: Atributos.
Cules, dnde almacenarlos?

Operaciones. Estructura.

Apertura, cierre, lectura, modificacin (contenido y atributos), bsqueda, eliminacin, truncado. Como secuencia (de caracteres, de bytes), otros.

Mtodos de Acceso.

Secuencial, Aleatorio, Indexado.

Archivos
Estructuras de Archivos

API POSIX de Archivos


Funciones POSIX de archivos:
creat(ruta, modo_prot) unlink(ruta) fd = open(ruta, flags_modo) close(fd) read(fd, *buff, n_bytes) write(fd, *buff, n_bytes) lseek(fd, offset, ref) fstat(fd, *stat) fcntl(fd, cmd)

/ Crea un archivo. / Borra un archivo. / Abre un archivo. / Cierra un archivo. / Lee n_bytes. / Escribe n_bytes. / Desplaza puntero. / Obtiene metainfo. / Cambia metainfo.

* Variable pasada como parmetro.

Directorio
Asociacin unvoca entre el nombre de usuario de un archivo y su representacin interna (metainformacin y contenido)

Desde el punto de vista del diseo se lo puede ver como una tabla que en cada entrada tiene el nombre de usuario del archivo junto a informacin que permite recuperar sus metadatos y contenido.

Directorios
Aspectos de implementacin: Atributos.
Cules, dnde almacenarlos?

Operaciones. Estructura.

Qu operaciones son vlidas sobre un directorio? Un solo nivel, dos niveles. Como rbol. Como grafo acclico.

API POSIX de Directorios


Funciones POSIX de Directorios:
mkdir(ruta, modo_prot) rmdir(ruta) dir = opendir(ruta) closedir(dir) dirent = readir(dir) rewinddir(dir) chdir(ruta) ruta = getcwd() link(ruta_ex, ruta_nue) symlink(ruta_ex, ruta_nue)

/ Crea un directorio. / Borra un directorio. / Abre un directorio. / Cierra un directorio. / Lee sig. entrada. / Vuelve al principio. / Cambia dir. Actual. / Directorio actual. / Crea enlace duro. / Crea enlace simb.

Sistema de Archivos
Parte del sistema operativo que permite organizar la informacin dentro de los dispositivos de almacenamiento secundario en un formato inteligible para el sistema operativo

Conceptos previos: Particin:


Es una porcin de un disco a la que se le da una identidad propia y que puede ser manipulada por el sistema operativo como una entidad lgica independiente.

Sistemas de Archivos
Aspectos de implementacin: Particiones y Montaje. Sistema de Archivos Virtual. Implementacin de Directorios. Asignacin de Espacio. Gestin del Espacio Libre. Eficiencia y Prestaciones. Recuperacin.

Sistemas de Archivos

Posible implementacin de un Sistema de Archivos

Sistemas de Archivos
Un sistema de archivos Unix se estructura de la siguiente manera:
Boot Superbloque Nodos-I Datos

Boot: Cdigo de arranque (opcional). Superbloque: metadatos del sistema de archivos. Nodos-I: lista de los nodos-i del FS. Datos: bloques de datos del sistema de archivos.

Sistemas de Archivos
El Superbloque contiene: Tamao del sistema de archivos. Lista de bloques libres disponibles. Indice del siguiente bloque libre en la lista de bloques libres. Tamao de la lista de nodos-i. Total de nodos-i libres. Lista de nodos-i libres.

Sistemas de Archivos
Sistema de Archivos Virtual (VFS): Separa las operaciones genricas sobre archivos de su implementacin. Define una interfaz clara y homognea. Proporciona un mecanismo para representar de manera coherente sistemas de archivos remotos y pseudo-sistemas de archivos (el nodo-V).

Sistemas de Archivos
Llamadas al sistema

VFS

tmpfs

swapfs

UFS

HSFS

PCFS

RFS

/proc

NFS

disco Memoria

cdrom

diskette

Espacio de memoria de proceso

Sistemas de Archivos
Implementacin de Directorios: Como una lista lineal:
Simple de programar pero costoso en CPU. Para ubicar un archivo hay que recorrer todo el directorio. Puede mejorarse con un arbol-B.

Como una tabla hash:

Se agrega un ndice hash. El tamao fijo de la tabla hash puede ser una limitacin.

Sistemas de Archivos
Directorio DOS/Windows:

Directorio Unix:

Sistemas de Archivos
Asignacin de Espacio: Cmo ubicamos los bloques de un archivo? Asignacin Contigua. Asignacin Enlazada. Asignacin Indexada.

Sistemas de Archivos
Asignacin Contigua:

(a) Estado inicial. (b) Se han borrado los archivos D y F.

Sistemas de Archivos
Asignacin Contigua: Ventajas: Simple de implementar. Rpida para accesos de bloques adyacentes Desventajas: Sufre fragmentacin externa. Necesita algoritmos de compactacin.

Sistemas de Archivos
Asignacin Enlazada:

Sistemas de Archivos
Asignacin Enlazada: Ventajas: No sufre fragmentacin. Rpida para accesos secuenciales. Desventajas: Los accesos aleatorios son lentos. El tamao de bloque no es potencia de 2...

Sistemas de Archivos
FAT (File allocation table)
0 1 2 3 4 5 6 7

EOF Free 5 Free 7 Bad


3

Bloques del Archivo

.
Free

Sistemas de Archivos
Asignacin Enlazada Usando un ndice (FAT): Los punteros estn en la FAT as que no ocupan espacio en el bloque. La FAT se mantiene en memoria as se pueden acelerar las bsquedas aleatorias. Dependiendo del tamao de bloque la FAT puede llegar a ocupar bastante memoria. Se mantienen dos copias de la FAT por cuestiones de seguridad.

Sistemas de Archivos
Asignacin Indexada:

Indice externo

Tabla de indices

Archivo

Sistemas de Archivos
0
. . . . . . . . . . . . . . . . .

B B B B D B B D IS IS ID D D D B

9 Indirecto Simple Indirecto Doble Indirecto Triple B B

Sistemas de Archivos
Punteros de 32 bits. Tamao de Bloque: 1024 Bytes.

Capacidad mxima:

Direccionamiento directo? Indirecto Simple?

10 bloques * 1024 Bytes = 10 KB. Cuntos punteros en un bloque? 1024 Bytes / 32 bits = 256 direcciones / bloque. 256 bloques * 1024 Bytes = 256 KB.

Sistemas de Archivos
Capacidad mxima (cont): Indirecto Doble? Indirecto Triple?
256 IS * 256 bloques * 1024 B = 65536 KB 256 ID * 256 IS * 1024 B = 16 GB.

Total = D + IS + ID + IT = 16843018 KB. Y con un tamao de bloque de 4096 Bytes?

Sistemas de Archivos
Gestin del Espacio Libre: Cmo encontramos un bloque libre? Lista de bloques libres. Mapas de bits. Lista de bloques y grupos libres.

Sistemas de Archivos

Sistemas de Archivos
Mapas de bits: 1 bit por cada bloque del disco. 1 para ocupado y 0 para libre. Ocupan poco espacio. Muy dificil hacer una bsqueda de varios bloques. Pobre performance en discos muy llenos.

Sistemas de Archivos
Incremento de Prestaciones Uso de discos RAM. Uso de un cach de datos. Uso de tcnicas de lectura anticipada para optimizar accesos secuenciales.
Cach de nombres. Cach de bloques.

Sistemas de Archivos
Cach de Bloques Gestin del Cach.
Poltica de Reemplazo (FIFO, MRU, LRU) Bloques especiales y bloques de datos. Escritura inmediata (write-through) Escritura diferida (write-back) Escritura retrasada (delayed-write)

Problemas de consistencia. Estrategia de actualizacin.

Sistemas de Archivos
Fiabilidad y Recuperacin Razones de prdida de datos.
Destruccin fsica. Corrupcin de datos.

Prevencin de destruccin.

Copias de seguridad. Almacenamiento con redundancia.

Sistemas de Archivos
Recuperacin del Sistema de Archivos Razones de prdida de consistencia
Datos de directorios o i-nodos. Datos de programas.

Bloques de la cache no actualizados.

Al bootear o montar un sistema de archivos.


Comprobar estructura fsica del FS. Comprobar la estructura lgica del FS.

Sistemas de Archivos
Recuperacin del Sistema de Archivos
1 Comprobar Superbloque. 2 Comprobar mapas de bits de i-nodos respecto de los i-nodos ocupados. 3 Comprobar mapas de bloques respecto de bloques ocupados. 4 Verificar que ningn bloque est asignado a ms de un archivo. 5 Verificar que ningn i-nodo est asignado a ms de un directorio.

Sistemas de Archivos
Ejemplo
Para comprobar la consistencia de un sistema de archivos de Unix, el comprobador de consistencia (fsck) construye dos listas de contadores (cada bit mantiene informacin de un bloque de disco)
en uso: 1 0 1 0 0 1 0 1 1 0 1 0 0 1 0 libres: 0 0 0 1 1 1 0 0 0 1 0 1 1 0 1

Existen errores? Son serios estos errores? Qu acciones correctivas sera necesario realizar sobre la informacin del sistema de archivos?

Bibliografa
Carretero (1ra. edicin):

Esta clase debe ser ampliada viendo:


Silberschatz (7ma. Edicin):
Captulo 8: Gestin de Archivos y Directorios. Captulo 11: Sistemas de Archivos.

Gracias !
Ing. Gabriel E. Arellano
gabrielarellano@gmail.com http://www.gabriel-arellano.com.ar/so/
(2008) Gabriel E. Arellano Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. The GNU Free Documentation License as applicable to this document can be found at: http://www.gnu.org/copyleft/fdl.html

You might also like