Tema del día: Implementación de Sistemas de Archivos
Objetivos En esta clase trataremos de: Repasar el concepto de archivo y directorio. Analizar las cuestiones de diseño e implementación de un sistema de archivos. Evaluar las ventajas y desventajas de cada estrategia de implementación.
Archivo “ Colección de información  relacionada ,  con un  nombre , que se graba en  almacenamiento  secundario ” Atributos de un archivo: Nombre. Identificador único. Tipo. Ubicación (de los datos). Tamaño. Protección. Información temporal.
Archivos Aspectos de implementación: Atributos. Cuáles, dónde almacenarlos? Operaciones. Apertura, cierre, lectura, modificación (contenido y atributos), búsqueda, eliminación, truncado. Estructura. Como secuencia (de caracteres, de bytes), otros. Métodos de Acceso. Secuencial, Aleatorio, Indexado.
Archivos Estructuras de Archivos
API POSIX de Archivos Funciones POSIX de archivos: creat(ruta, modo_prot)   / Crea un archivo. unlink(ruta)  / Borra un archivo. fd = open(ruta, flags_modo)  / Abre un archivo. close(fd)  / Cierra un archivo. read(fd, *buff, n_bytes)  / Lee n_bytes. write(fd, *buff, n_bytes)  / Escribe n_bytes. lseek(fd, offset, ref)  / Desplaza puntero. fstat(fd, *stat)  / Obtiene metainfo. fcntl(fd, cmd)  / Cambia metainfo. * Variable pasada como parámetro.
Directorio “ Asociación unívoca entre el nombre de usuario  de un archivo y su representación interna (metainformación y contenido)” Desde el punto de vista del diseño se lo puede ver como una tabla que en cada entrada tiene el nombre de usuario del archivo junto a información que permite recuperar sus metadatos y contenido.
Directorios Aspectos de implementación: Atributos. Cuáles, dónde almacenarlos? Operaciones. Qué operaciones son válidas sobre un directorio? Estructura. Un solo nivel, dos niveles. Como árbol. Como grafo acíclico.
API POSIX de Directorios Funciones POSIX de Directorios: mkdir(ruta, modo_prot)   / Crea un directorio. rmdir(ruta)  / Borra un directorio. dir = opendir(ruta)  / Abre un directorio. closedir(dir)  / Cierra un directorio. dirent = readir(dir)  / Lee sig. entrada. rewinddir(dir)  / Vuelve al principio. chdir(ruta)  / Cambia dir. Actual. ruta = getcwd()  / Directorio actual. link(ruta_ex, ruta_nue)  / Crea enlace duro. symlink(ruta_ex, ruta_nue)  / Crea enlace simb.
Sistema de Archivos “ Parte del sistema operativo que permite organizar  la información dentro de los dispositivos de almacenamiento secundario en un formato inteligible para el sistema operativo” Conceptos previos: Partición:  Es una porción de un disco a la que se le da una identidad propia y que puede ser manipulada por el sistema operativo como una entidad lógica independiente.
Sistemas de Archivos Aspectos de implementación: Particiones y Montaje. Sistema de Archivos Virtual. Implementación de Directorios. Asignación de Espacio. Gestión del Espacio Libre. Eficiencia y Prestaciones. Recuperación.
Sistemas de Archivos Posible implementación de un Sistema de Archivos
Sistemas de Archivos Un sistema de archivos Unix se estructura de la siguiente manera: Boot: Código 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. Boot Superbloque Nodos-I Datos
Sistemas de Archivos El Superbloque contiene: Tamaño del sistema de archivos. Lista de bloques libres disponibles. Indice del siguiente bloque libre en la lista de bloques libres. Tamaño 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 genéricas sobre archivos de su implementación. Define una interfaz clara y homogénea. 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 /proc PCFS HSFS tmpfs swapfs UFS RFS NFS Memoria Espacio de memoria de proceso disco cdrom diskette
Sistemas de Archivos Implementación 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 tamaño fijo de la tabla hash puede ser una limitación.
Sistemas de Archivos Directorio DOS/Windows: Directorio Unix:
Sistemas de Archivos Asignación de Espacio: Cómo ubicamos los bloques de un archivo? Asignación Contigua. Asignación Enlazada. Asignación Indexada.
Sistemas de Archivos Asignación Contigua: (a) Estado inicial. (b) Se han borrado los archivos D y F.
Sistemas de Archivos Asignación Contigua: Ventajas: Simple de implementar. Rápida para accesos de bloques adyacentes Desventajas: Sufre fragmentación externa. Necesita algoritmos de compactación.
Sistemas de Archivos Asignación Enlazada:
Sistemas de Archivos Asignación Enlazada: Ventajas: No sufre fragmentación. Rápida para accesos secuenciales. Desventajas: Los accesos aleatorios son lentos. El tamaño de bloque no es potencia de 2...
Sistemas de Archivos n - EOF 1 Free 5 Free 7 Bad Free … . 3 7 5 1 0 1 2 3 4 5 6 7 FAT (File allocation table) Bloques del Archivo
Sistemas de Archivos Asignación Enlazada Usando un Índice (FAT): Los punteros están en la FAT así que no ocupan espacio en el bloque. La FAT se mantiene en memoria así se pueden acelerar las búsquedas aleatorias. Dependiendo del tamaño de bloque la FAT puede llegar a ocupar bastante memoria. Se mantienen dos copias de la FAT por cuestiones de seguridad.
Sistemas de Archivos Asignación Indexada:  Indice externo Tabla de indices Archivo
Sistemas de Archivos 0 . . . . . . . . . . . . . . . . . 9 Indirecto Simple Indirecto Doble Indirecto Triple IS D D B B B ID IS D D B B B B D B B
Sistemas de Archivos Capacidad máxima: Punteros de 32 bits. Tamaño de Bloque: 1024 Bytes. Direccionamiento directo? 10 bloques * 1024 Bytes = 10 KB. Indirecto Simple? Cuántos punteros en un bloque? 1024 Bytes / 32 bits = 256 direcciones / bloque. 256 bloques * 1024 Bytes = 256 KB.
Sistemas de Archivos Capacidad máxima (cont): Indirecto Doble? 256 IS * 256 bloques * 1024 B = 65536 KB Indirecto Triple? 256 ID * 256 IS * 1024 B = 16 GB. Total = D + IS + ID + IT = 16843018 KB. Y con un tamaño de bloque de 4096 Bytes?
Sistemas de Archivos Gestión del Espacio Libre: Cómo 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 búsqueda 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. Caché de nombres. Caché de bloques. Uso de técnicas de lectura anticipada para optimizar accesos secuenciales.
Sistemas de Archivos Caché de Bloques Gestión del Caché. Política de Reemplazo (FIFO, MRU, LRU) Problemas de consistencia. Bloques especiales y bloques de datos. Estrategia de actualización. Escritura inmediata (write-through) Escritura diferida (write-back) Escritura retrasada (delayed-write)
Sistemas de Archivos Fiabilidad y Recuperación Razones de pérdida de datos. Destrucción física. Corrupción de datos. Prevención de destrucción. Copias de seguridad. Almacenamiento con redundancia.
Sistemas de Archivos Recuperación del Sistema de Archivos Razones de pérdida de consistencia Bloques de la cache no actualizados. Datos de directorios o i-nodos. Datos de programas. Al bootear o montar un sistema de archivos. Comprobar estructura física del FS. Comprobar la estructura lógica del FS.
Sistemas de Archivos Recuperación del Sistema de Archivos Comprobar Superbloque. Comprobar mapas de bits de i-nodos respecto  de los i-nodos ocupados. Comprobar mapas de bloques respecto de  bloques ocupados. Verificar que ningún bloque esté asignado a más  de un archivo.  Verificar que ningún i-nodo esté asignado a más  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 información 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 sería necesario realizar sobre la información del sistema de archivos?
Bibliografía Esta clase  debe  ser ampliada viendo: Carretero (1ra. edición): Capítulo 8: “Gestión de Archivos y Directorios”. Silberschatz (7ma. Edición): Capítulo 11: “Sistemas de Archivos”.
Gracias !   Ing. Gabriel E. Arellano [email_address] 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

Sistemas de Archivos

  • 1.
    Tema del día:Implementación de Sistemas de Archivos
  • 2.
    Objetivos En estaclase trataremos de: Repasar el concepto de archivo y directorio. Analizar las cuestiones de diseño e implementación de un sistema de archivos. Evaluar las ventajas y desventajas de cada estrategia de implementación.
  • 3.
    Archivo “ Colecciónde información relacionada , con un nombre , que se graba en almacenamiento secundario ” Atributos de un archivo: Nombre. Identificador único. Tipo. Ubicación (de los datos). Tamaño. Protección. Información temporal.
  • 4.
    Archivos Aspectos deimplementación: Atributos. Cuáles, dónde almacenarlos? Operaciones. Apertura, cierre, lectura, modificación (contenido y atributos), búsqueda, eliminación, truncado. Estructura. Como secuencia (de caracteres, de bytes), otros. Métodos de Acceso. Secuencial, Aleatorio, Indexado.
  • 5.
  • 6.
    API POSIX deArchivos Funciones POSIX de archivos: creat(ruta, modo_prot) / Crea un archivo. unlink(ruta) / Borra un archivo. fd = open(ruta, flags_modo) / Abre un archivo. close(fd) / Cierra un archivo. read(fd, *buff, n_bytes) / Lee n_bytes. write(fd, *buff, n_bytes) / Escribe n_bytes. lseek(fd, offset, ref) / Desplaza puntero. fstat(fd, *stat) / Obtiene metainfo. fcntl(fd, cmd) / Cambia metainfo. * Variable pasada como parámetro.
  • 7.
    Directorio “ Asociaciónunívoca entre el nombre de usuario de un archivo y su representación interna (metainformación y contenido)” Desde el punto de vista del diseño se lo puede ver como una tabla que en cada entrada tiene el nombre de usuario del archivo junto a información que permite recuperar sus metadatos y contenido.
  • 8.
    Directorios Aspectos deimplementación: Atributos. Cuáles, dónde almacenarlos? Operaciones. Qué operaciones son válidas sobre un directorio? Estructura. Un solo nivel, dos niveles. Como árbol. Como grafo acíclico.
  • 9.
    API POSIX deDirectorios Funciones POSIX de Directorios: mkdir(ruta, modo_prot) / Crea un directorio. rmdir(ruta) / Borra un directorio. dir = opendir(ruta) / Abre un directorio. closedir(dir) / Cierra un directorio. dirent = readir(dir) / Lee sig. entrada. rewinddir(dir) / Vuelve al principio. chdir(ruta) / Cambia dir. Actual. ruta = getcwd() / Directorio actual. link(ruta_ex, ruta_nue) / Crea enlace duro. symlink(ruta_ex, ruta_nue) / Crea enlace simb.
  • 10.
    Sistema de Archivos“ Parte del sistema operativo que permite organizar la información dentro de los dispositivos de almacenamiento secundario en un formato inteligible para el sistema operativo” Conceptos previos: Partición: Es una porción de un disco a la que se le da una identidad propia y que puede ser manipulada por el sistema operativo como una entidad lógica independiente.
  • 11.
    Sistemas de ArchivosAspectos de implementación: Particiones y Montaje. Sistema de Archivos Virtual. Implementación de Directorios. Asignación de Espacio. Gestión del Espacio Libre. Eficiencia y Prestaciones. Recuperación.
  • 12.
    Sistemas de ArchivosPosible implementación de un Sistema de Archivos
  • 13.
    Sistemas de ArchivosUn sistema de archivos Unix se estructura de la siguiente manera: Boot: Código 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. Boot Superbloque Nodos-I Datos
  • 14.
    Sistemas de ArchivosEl Superbloque contiene: Tamaño del sistema de archivos. Lista de bloques libres disponibles. Indice del siguiente bloque libre en la lista de bloques libres. Tamaño de la lista de nodos-i. Total de nodos-i libres. Lista de nodos-i libres.
  • 15.
    Sistemas de ArchivosSistema de Archivos Virtual (VFS): Separa las operaciones genéricas sobre archivos de su implementación. Define una interfaz clara y homogénea. Proporciona un mecanismo para representar de manera coherente sistemas de archivos remotos y pseudo-sistemas de archivos (el nodo-V).
  • 16.
    Sistemas de ArchivosLlamadas al sistema VFS /proc PCFS HSFS tmpfs swapfs UFS RFS NFS Memoria Espacio de memoria de proceso disco cdrom diskette
  • 17.
    Sistemas de ArchivosImplementación 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 tamaño fijo de la tabla hash puede ser una limitación.
  • 18.
    Sistemas de ArchivosDirectorio DOS/Windows: Directorio Unix:
  • 19.
    Sistemas de ArchivosAsignación de Espacio: Cómo ubicamos los bloques de un archivo? Asignación Contigua. Asignación Enlazada. Asignación Indexada.
  • 20.
    Sistemas de ArchivosAsignación Contigua: (a) Estado inicial. (b) Se han borrado los archivos D y F.
  • 21.
    Sistemas de ArchivosAsignación Contigua: Ventajas: Simple de implementar. Rápida para accesos de bloques adyacentes Desventajas: Sufre fragmentación externa. Necesita algoritmos de compactación.
  • 22.
    Sistemas de ArchivosAsignación Enlazada:
  • 23.
    Sistemas de ArchivosAsignación Enlazada: Ventajas: No sufre fragmentación. Rápida para accesos secuenciales. Desventajas: Los accesos aleatorios son lentos. El tamaño de bloque no es potencia de 2...
  • 24.
    Sistemas de Archivosn - EOF 1 Free 5 Free 7 Bad Free … . 3 7 5 1 0 1 2 3 4 5 6 7 FAT (File allocation table) Bloques del Archivo
  • 25.
    Sistemas de ArchivosAsignación Enlazada Usando un Índice (FAT): Los punteros están en la FAT así que no ocupan espacio en el bloque. La FAT se mantiene en memoria así se pueden acelerar las búsquedas aleatorias. Dependiendo del tamaño de bloque la FAT puede llegar a ocupar bastante memoria. Se mantienen dos copias de la FAT por cuestiones de seguridad.
  • 26.
    Sistemas de ArchivosAsignación Indexada:  Indice externo Tabla de indices Archivo
  • 27.
    Sistemas de Archivos0 . . . . . . . . . . . . . . . . . 9 Indirecto Simple Indirecto Doble Indirecto Triple IS D D B B B ID IS D D B B B B D B B
  • 28.
    Sistemas de ArchivosCapacidad máxima: Punteros de 32 bits. Tamaño de Bloque: 1024 Bytes. Direccionamiento directo? 10 bloques * 1024 Bytes = 10 KB. Indirecto Simple? Cuántos punteros en un bloque? 1024 Bytes / 32 bits = 256 direcciones / bloque. 256 bloques * 1024 Bytes = 256 KB.
  • 29.
    Sistemas de ArchivosCapacidad máxima (cont): Indirecto Doble? 256 IS * 256 bloques * 1024 B = 65536 KB Indirecto Triple? 256 ID * 256 IS * 1024 B = 16 GB. Total = D + IS + ID + IT = 16843018 KB. Y con un tamaño de bloque de 4096 Bytes?
  • 30.
    Sistemas de ArchivosGestión del Espacio Libre: Cómo encontramos un bloque libre? Lista de bloques libres. Mapas de bits. Lista de bloques y grupos libres.
  • 31.
  • 32.
    Sistemas de ArchivosMapas de bits: 1 bit por cada bloque del disco. 1 para ocupado y 0 para libre. Ocupan poco espacio. Muy dificil hacer una búsqueda de varios bloques. Pobre performance en discos muy llenos.
  • 33.
    Sistemas de ArchivosIncremento de Prestaciones Uso de discos RAM. Uso de un caché de datos. Caché de nombres. Caché de bloques. Uso de técnicas de lectura anticipada para optimizar accesos secuenciales.
  • 34.
    Sistemas de ArchivosCaché de Bloques Gestión del Caché. Política de Reemplazo (FIFO, MRU, LRU) Problemas de consistencia. Bloques especiales y bloques de datos. Estrategia de actualización. Escritura inmediata (write-through) Escritura diferida (write-back) Escritura retrasada (delayed-write)
  • 35.
    Sistemas de ArchivosFiabilidad y Recuperación Razones de pérdida de datos. Destrucción física. Corrupción de datos. Prevención de destrucción. Copias de seguridad. Almacenamiento con redundancia.
  • 36.
    Sistemas de ArchivosRecuperación del Sistema de Archivos Razones de pérdida de consistencia Bloques de la cache no actualizados. Datos de directorios o i-nodos. Datos de programas. Al bootear o montar un sistema de archivos. Comprobar estructura física del FS. Comprobar la estructura lógica del FS.
  • 37.
    Sistemas de ArchivosRecuperación del Sistema de Archivos Comprobar Superbloque. Comprobar mapas de bits de i-nodos respecto de los i-nodos ocupados. Comprobar mapas de bloques respecto de bloques ocupados. Verificar que ningún bloque esté asignado a más de un archivo. Verificar que ningún i-nodo esté asignado a más de un directorio.
  • 38.
    Sistemas de ArchivosEjemplo Para comprobar la consistencia de un sistema de archivos de Unix, el comprobador de consistencia (fsck) construye dos listas de contadores (cada bit mantiene información 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 sería necesario realizar sobre la información del sistema de archivos?
  • 39.
    Bibliografía Esta clase debe ser ampliada viendo: Carretero (1ra. edición): Capítulo 8: “Gestión de Archivos y Directorios”. Silberschatz (7ma. Edición): Capítulo 11: “Sistemas de Archivos”.
  • 40.
    Gracias ! Ing. Gabriel E. Arellano [email_address] 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