03/11/2009 Tema 2 SISTEMA DE FICHEROS SISTEMA DE FICHEROS Almacenamiento permanentes de información. No No están ligados al ciclo de vida de una aplicación particular. están ligados al ciclo de vida de una aplicación particular. Conjunto de información estructurada de forma lógica. Nombres lógicos y estructurados. Abstraen los dispositivos de almacenamiento físico. Se acceden a través de llamadas al sistema operativo o de bibliotecas de utilidades. 1 03/11/2009 SISTEMA DE FICHEROS Ficheros Directorios Implementación del del sistema sistema de ficheros de ficheros Ejemplos de sistema de sistema de ficheros de ficheros El El servidor servidor de de archivo archivo Aumento de prestaciones de prestaciones Servicios S i i del d l sistema del sistema it d ficheros de ficheros de fi h Concepto de archivo Un espacio lógico de direcciones contiguas usado para almacenar datos Tipos de archivos: p Datos: numéricos carácter binarios Programas: código fuente ódi f t archivos objetos (imagen de carga) Documentos 2 03/11/2009 Nombres de archivo. archivo. Extensiones típicas Estructuras de archivo 3 03/11/2009 Tipos de archivo (a) Un (a) Un fichero fichero executable (b) Un executable (b) Un archivo archivo Estructura de archivo ejecutable LINUX Número mágico Número de sec c iones Cabecera primaria Tamaño segmento texto Tam año segmento datos Cabecera de sección 1 Tipo de sección, tamaño de la sección dirección virtual Cabecera de sección n Tipo de sección, tamaño de la sección dirección virtual Sección 1 Código Sección 2 Datos con valor inicial Sección n Datos con valor inicial Tam año datos sin valor inic ial Tam año tabla de símbolos Valor inicial de registros Direc c ión inic ial ... Opciones Información de carga Tabla de símbolos Otra información 4 03/11/2009 Atributos del archivo Nombre: la única información en formato legible por una persona. Identificación única del archivo y del usuario: y descriptor interno p del archivo, dueño y grupo del archivo Tipo de archivo: Tipo de archivo: necesario en sistemas que proporciona necesario en sistemas que proporciona distintos formatos de archivos. Tamaño del archivo: Tamaño del archivo: número de bytes en el archivo, máximo número de bytes en el archivo, máximo tamaño posible, etc. Protección: Protección: control de accesos y de las operaciones sobre control de accesos y de las operaciones sobre archivos hi Información temporal: de creación, de acceso, de modificación, etc. Información de control: archivo oculto, de sistema, normal o Información de control: archivo oculto, de sistema, normal o directorio, etc. Operaciones sobre archivos File es un tipo abstracto de datos Create, Delete Write, Read Write Read Open, Close Append, Truncate Seek Rename Set atributos Get atributos Open(Fi) – busca la entrada Fi en el directorio y mueve el contenido de la entrada desde disco a memoria. Close (Fi) – busca la entrada Fi en el directorio y mueve el contenido de la entrada desde memoria a disco. 5 03/11/2009 Métodos de acceso I Acceso secuencial: lectura de los bytes del archivo en orden ascendente, empezando por el principio. read next next, , write write next, next, reset reset, no , no read read after last write write, … , … rewind rewind: ir al principio para buscar hacia delante : ir al principio para buscar hacia delante Lectura Lectura ‐‐> posición = posición + datos leídos Dispositivos de cinta Acceso Directo: Acceso Directo: read n, n, write write n, n, goto goto n, n, rewrite rewrite n, n, read read next next, , write write next, … next, … n = número de bloque relativo al origen Dispositivos: discos magnéticos Acceso secuencial 6 03/11/2009 Protección • Control del dueño Control del dueño//creador del del fichero fichero:: – Qué se se puede puede hacer – Por quíen • Tipos de acesos de acesos – Read – Write – Execute E – Append – Delete – List Listas de accesos y grupos • • Modos of aceso of aceso: : read read, , write write, , execute execute Tres clases de usuarios de usuarios RWX 1 1 1 111 RWX b) group access b) group access 6 1 1 0 RWX c) public access c) public access 1 0 0 1 El gestor El gestor cea un un ungrupo ungrupo , por , por ejemplo G, y , y añadir añadir algunos usuarios al grupo.. grupo Definir un un tipo tipo de acceso de acceso para un fichero un fichero particular, particular, por por ejemplo game ame, , o o subdirectorio,. subdirectorio ,. a) owner access owner access • • owner chmod group 761 7 public game 7 03/11/2009 Lista de control de accesos en Windows XP Bloque de control de fichero típico 8 03/11/2009 Ejemplo. Copia un archivo en otro I #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; /* 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); } Ejemplo. Copia un archivo en otro II /* 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); close(fd_sal); exit(0); } { 9 03/11/2009 SISTEMA DE FICHEROS Ficheros Directorios Implementación del del sistema sistema de ficheros de ficheros Ejemplos de sistema de sistema de ficheros de ficheros El El servidor servidor de de archivo archivo Aumento de prestaciones de prestaciones Servicios del del sistema sistema de ficheros de ficheros Estructura de directorio Una colección de nodos de nodos con información con información sobre los los ficheros ficheros Directorios Ficheros F1 F 1 F2 F 2 F 3 F4 F 4 F n Ambos residen en disco 10 03/11/2009 Un único nivel de directorios I Un directorio Un directorio para todos los usuarios Problema de nombres Problema de grupos Un único nivel de directorios II Un directorio Un directorio para cada usuario Path de nombres Se puede tener el mismo nombre de archivo para diferentes usuarios. Búsqueda eficiente No tiene capacidad de agrupación 11 03/11/2009 Estructura de directorios en árbol I Estructura de directorios en árbol II Búsqueda eficiente Capacidad p de agrupación g p Directorio actual (working directory) cd /spell/mail/ /spell/mail/prog prog Se denota con “. “.” Directorios especiales: • Directorio “..”:: directorio padre de “.” • Directorio HOME HOME:: el directorio base del usuario 12 03/11/2009 Estructura de directorios en árbol III nombre absoluto o o relativo relativo El El nuevo nuevo fichero se se crea crea en el en el directorio directorio actual Borrar un un fichero un fichero rm <file‐ <file‐name> El El nuevo nuevo subdirectorio se se crea crea en el en el directorio directorio actual mkdir <dir‐ <dir‐name> Ejemplo: Ejemplo : si si el el directorio directorio actual es actual es /mail mkdir count mail prog copy prt exp count Para borrar “mail” borrar el subárbol que cuelga de “mail” Comparticicón de archivos I Sistema de ficheros de ficheros que contienen un fichero un fichero compartido 26 13 03/11/2009 Comparticicón de archivos II (a) Situación anterior al enlace (b) Depués (b) Depués de de crear crear el enlace (c) Después (c) Después de de que que el el dueño dueño original borra original borra el fichero el fichero 27 Enlaces Dos o más nombres hacen referencia al mismo archivo. Dos tipos: Enlace físico El archivo sólo se elimina cuando se borran todos los enlaces Sólo se permiten enlazar ficheros del mismo volumen o partición Enlace simbólico El archivo hi se elimina li i cuando d se borra b ell enlace l físico. Si permanece el enlace simbólico provoca errores al tratar de accederlo. Se puede hacer entre archivos de diferentes sistema de archivos 14 03/11/2009 Enlace físico / usr / prog.c pepe prueba.txt prog.c datos.txt pepe . .. 23 100 28 400 datos.txt prog.c juan pepe juan . .. user lib juan pepe datos.txt usr user lib prueba.txt . .. 80 100 60 prueba.txt datos2.txt juan datos.txt prog.c . .. 23 100 28 400 prueba.txt datos2.txt 80 100 60 28 nodo-i 28 enlaces = 2 descripción del fichero ln /user/pepe/datos.txt /user/juan/datos2.txt Enlace simbólico / usr / user lib pepe datos.txt prog.c pepe . .. datos.txt prog.c usr juan pepe prueba.txt datos.txt juan 23 100 28 400 . .. prueba.txt user lib nodo-i 28 80 100 60 Enlaces = 1 descripción del fichero prog.c pepe . .. datos.txt prog.c juan prueba.txt datos2.txt juan 23 100 28 400 . .. nodo-i 130 80 100 prueba.txt 60 datos2.txt 130 enlaces = 1 /user/pepe/ datos.txt ln -s /user/pepe/datos.txt /user/juan/datos2.txt 15 03/11/2009 Grafo acíclico de directorios I Directorios y ficheros y ficheros compartidos Grafo acíclico de directorios II • link: Un archivo con varios nombres link: Un archivo con varios nombres ‐‐> control de enlaces – un único archivo con contador de enlaces en descriptor (e. Físicos) – archivos nuevos con el nombre destino dentro (e. simbólicos) • Borrado de enlaces: – decrementar contador; si 0 borrar archivo • Problema grave: existencia de bucles en el árbol. Soluciones: – Permitir sólo enlaces a archivos, no subdirectorios – Algoritmo de búsqueda de bucle cuando se hace un enlace 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 archivos. 16 03/11/2009 Grafo general de directorios I Grafo general de directorios II Cómo evitar ciclos ciclos? ? Permitiendo únicamente enlaces a las hojas Cada vez que se crea un nuevo link se mira si crea ciclo o no. Garbage collection 17 03/11/2009 Jerarquía de directorios Árbol de directorios Por Por dispositivo lógico en Windows (c: Por dispositivo lógico en Windows (c:\ dispositivo lógico en Windows (c: (c:\\users users\\miguel miguel\\claves, j: claves, claves, j:\ j:\pepe j:\ pepe\\tmp tmp)) Único para todo el sistema en UNIX (/users Único para todo el sistema en UNIX (/users/miguel/claves, /pepe/ /miguel/claves, /pepe/tmp tmp,, ...) Ventajas: imagen única del sistema y ocultan el tipo de dispositivo Desventajas: ‐ Complican la traducción de nombres, problemas para enlaces físicos entre archivos ‐ Hacen falta servicios para construir la jerarquía: mount /dev/ dev/hda /users umount /users Montado de sistemas de archivos o particiones • Oculta el nombre del dispositivo físico o partición Volumen raiz (/dev/hd0) Volumen sin montar (/dev/hd1) / / / mount /lib /bin Volumen montado /usr /d 1 /d 2 /d3/f1 /d3 /dev/hd1 /usr /lib /bin /usr /d3/f2 /usr/d1 • En MS En MS‐‐DOS c: DOS c:\\tmp\ tmp\datos.txt /usr/d 3/f1 /usr/d3 /usr/d 3/f2 18 03/11/2009 Operaciones sobre directorios 1. 2 2. 3. 4. 5. 6. 7 7. 8. Delete O Opendir di Closedir Create Readdir Rename Link Unlink Ejemplo:: explorador de Windows Ejemplo 19 03/11/2009 Un ejemplo de listado de directorio UNIX Bloque de control de fichero descriptor o i-nodo 20 03/11/2009 Ejemplo. Lista un directorio I #include <sys/types.h> #include <dirent.h> #include <stdio.h> #define MAX_BUF 256 void id main(int i (i t argc, char h ** **argv) ) { DIR *dirp; struct dirent *dp; char buf[MAX_BUF]; /* imrpime el directorio actual */ getcwd(buf, MAX_BUF); printf("Directorio actual: %s\n", buf); /* abre el directorio pasado como argumento */ dirp = opendir(argv[1]); if (dirp ( p == 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); } SISTEMA DE FICHEROS Ficheros Directorios Implementación del del sistema sistema de ficheros de ficheros Ejemplos de sistema de sistema de ficheros de ficheros El El servidor servidor de de archivo archivo Aumento de prestaciones de prestaciones p Servicios del del sistema sistema de ficheros de ficheros 21 03/11/2009 Correspondencia bloquesbloques-archivos I Se refiere a la forma Se refiere a la forma en en que que los bloques los bloques se organizan se organizan en ficheros.. ficheros Continua Lista Indexada Correspondencia bloquesbloques-archivos II 1. Asignación de bloques contiguos. contiguos. – Sencillo de implementar y el rendimiento de la E/S es muy bueno. bueno. – Si no se conoce el tamaño total del archivo cuando se crea, puede ser necesario i buscar b un nuevo hueco h d bloques de bl consecutivos ti cada d vez que el archivo crece. crece. – Fragmentación externa Fragmentación externa ‐‐> compactar el disco. 2. Asignación de bloques discontinuos. discontinuos. – Se asigna al archivo el primer bloque que se encuentra libre libre.. – No hay fragmentación externa del disco ni búsqueda de huecos huecos.. – Los archivos pueden crecer mientras exista espacio en el disco disco.. – Complica la implementación de la imagen de archivo ‐> mapa de bloques del archivo archivo.. 22 03/11/2009 Correspondencia continua I Correspondencia continua II Acceso muy rápido, poco movimiento del cabezal de disco Buscar un espacio libre suficiente consecutivo • First fit • Best fit • Worst fit Fragmentación externa: • El espacio libre se distribuye en espacios pequeños El espacio libre se distribuye en espacios pequeños dificiles dificiles de aprovechar • Hay que compactar la información • Que pasa si el fichero crece o no hay un espacio suficiente? Correspondencia de de lógico lógico a físico Q LA/512 R Bloque al al que que se accede se accede = = Q+ Q+ dirección dirección de comienzo de comienzo Desplazamiento en el bloque en el bloque = R 23 03/11/2009 Correspondencia enlazada I Cada fichero es una lista de de bloques bloques... block = pointer Correspondencia enlazada II 24 03/11/2009 Correspondencia enlazada III Simple – necesita únicamente la dirección de comienzo Gestión de espacio libre - no gasta espacio No N aceso aleatorio l t i Corrrespondencia de lógico a físico Q LA/512‐1 R Bloque accedido = = el Q el Q‐‐ésimo en la en la lista lista enlazada Desplazamiento en el bloque en el bloque = R + 1 = R + 1 Correspondencia enlazada III. Tabla File‐‐allocation table (FAT) File allocation table (FAT) –– en MS en MS‐‐DOS y OS/2 25 03/11/2009 Correspondencia indexada I • Cada archivo tiene sus bloques de índice que incluyen apuntadores a los bloques de disco del archivo 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 índices.. – Ventaja Ventaja:: basta con traer a memoria el bloque de índices donde está el apuntador a los datos para tener acceso al bloque de datos datos.. Si un apuntador de bloque ocupa 4 bytes y el bloque es de 4 Kbytes, Kbytes, con un único acceso a disco tendremos 1024 apuntadores a bloques del archivo.. archivo – Problema Problema:: el espacio extra necesario para los bloques de índices índices.. • Ese problema, fue resuelto en UNIX BSD combinando un sistema de índices puros con un sistema de índices multinivel, q p que es q que se usa actualmente en UNIX y LINUX. LINUX. – Permite almacenar archivos pequeños sin necesitar bloques de índices índices.. – Permite accesos aleatorios a archivos muy grandes con un máximo de 3 accesos a bloques de índices índices.. Correspondencia indexada II Todos los punteros los punteros están en un bloque en un bloque índice. índice. Vista local Vista local.. index table 26 03/11/2009 Correspondencia indexada III Correspondencia indexada V Necesita una tabla de índices Acceso aleatorio Acceso A di á i sin dinámico i fragmentación f t ió externa t Correspondencia lógica a física en un fichero de tamaño máximo 256K words y tamaño de bloque de 512 words. Se necesita únicamente 1 bloque para la tabla de índices Q LA/512 R Q = desplazamiento Q = desplazamiento en la tabla en la tabla de índices de índices R = desplazamiento en el bloque R = d en el bloque 27 03/11/2009 Tabla de índices enlaza Corrrespondencia de lógico a físico en un fichero de tamaño ilimitado (tamaño del bloque 512 words). Esquema enlazado – Bloques enlazados en la tabla de índices (no existe límite en el tamaño tamaño)) Q1 LA/(512*511) Q1 = bloque Q1 = bloque de la de la tabla tabla de índices de índices R1 = se utiliza como sigue: R1 = se utiliza sigue: R1 Q2 R1/512 R2 Q2 = desplazamiento en el bloque Q2 = desplazamiento en el bloque de la de la tabla tabla de índices de índices R2 = desplazamiento R2 = desplazamiento en el bloque en el bloque de de fichero fichero Correspondencia indexada en 2 niveles outer‐index index table file 28 03/11/2009 Correspondencia indexada en 2 niveles Dos niveles de índice (tamaño máximo del fichero 512*512*512 words). Q1 LA/(512*512) R1 Q1 = desplazamiento en el índice Q1 = desplazamiento en el índice externo R1 = se R1 = se utiliza utiliza como sigue: sigue: Q2 R1/512 R2 Q2 = desplazamiento en el bloque Q2 = desplazamiento en el bloque de la de la tabla tabla de índices de índices R2 = desplazamiento R2 = desplazamiento en el bloque en el bloque de de fichero fichero Esquema combindo: combindo: UNIX (4K bytes/ bytes/bloque bloque)) 29 03/11/2009 Manejo de espacio libre I Para ficheros Para ficheros de tamaño de tamaño 2KBytes Manejo de espacio libre II • Lista enlazada de bloques de disco con # de bloques libres libres.. • Mapas de bits, bits o vectores de bits bits:: un bit por recurso existente (descriptor de archivo,, bloque o agrupación archivo agrupación)). Si el recurso está libre, libre, el valor del bit asociado al mismo es 1, si está ocupado es 0. – Fácil de implementar y sencillo de usar usar.. Eficiente si el dispositivo no está muy lleno o muy fragmentado. fragmentado. • Listas de recursos libres libres:: mantener enlazados en una lista todos los recursos disponibles (bloques o descriptores de archivos) manteniendo un apuntador al primer elemento de la lista lista.. – Este método no es eficiente, excepto para dispositivos muy llenos y fragmentados – Uso de agrupaciones agrupaciones.. 30 03/11/2009 Manejo de espacio libre III Manejo de espacio libre IV Bit map (n Bit map ( n blocks) 0 1 2 n‐1 bit[i] = … 1 block[i] free 0 block[i] occupied Cálculo del primer bloque libre libre:: (número de bits por bits por palabra) * palabra) * (número de palabras con valor 0) + )+ desplazamiento hasta el primer bit a 1 31 03/11/2009 Manejo de espacio libre V Manejo de espacio libre VI 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 11 14 16 11,1 14,1 17 16,3 18 (A) (B) 32 03/11/2009 Manejo de espacio libre VII Manejo de espacio libre VIII Se Se necesita necesita espacio para el b el bit map Necesita mucho espacio mucho espacio. . Ejemplo Ejemplo:: tamaño bloque = 2 = 212 bytes tamaño disco = 230 bytes (1 gigabyte) n = 230/212 = 218 bits (or 32K bytes) • MS‐‐DOS: MS DOS: Agrupaciones Agrupaciones de bloques de bloques • Fácil obtener ficheros continuos Lista de bloques libres No necesita No necesita mucho espacio mucho espacio No es No es fácil obtener fincheros continuos 33 03/11/2009 Bloques y agrupaciones • Bloque: agrupación lógica de sectores de disco y es la unidad Bloque: agrupación lógica de sectores de disco y es la unidad de transferencia mínima que usa el sistema de archivos. . de transferencia mínima que usa el sistema de archivos – Optimizar la eficiencia de la entrada/salida de los 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. . mkfs • Agrupación ( Agrupación (cluster cluster): ): conjunto de bloques que se gestionan conjunto de bloques que se gestionan como una unidad lógica de gestión del almacenamiento. 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. Etructura de directorios Lista lineal de de nombres nombres con con punteros punteros a los a los bloques bloques de datos.. datos Simple i l de d programar de programar Consume tiempo Consume tiempo de ejecución Tabla Hash Hash –– lista lineal con búsqueda hash. Decrementa el tiempo el tiempo de de búsqueda búsqueda de directorios Colisiones – cuando dos dos nombres nombres dan el el mismo mismo Hash Tamaño fijo 34 03/11/2009 Implementación de directorios MS_DOS/Windows MS DOS/Windows UNIX Implementación de directorios II •Compactación •Caracteres de relleno •Administración de heap 35 03/11/2009 Sistemas de archivos y particiones I • Previamente a la instalación del sistema de archivos es necesario dividir físicamente, o lógicamente, los discos en particiones o volúmenes. • 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 de archivos y particiones II • Relación Relación sistema de archivos sistema de archivos‐‐dispositivo: – Típico: 1 dispositivo N Típico: 1 dispositivo N ssistemas de archivos (particiones) – Grandes archivos: N dispositivos 1 Grandes archivos: N dispositivos 1 sistema de archivos sistema de archivos • Típicamente cada dispositivo se divide en una o más particiones (en cada partición sistema de archivos partición sistema de archivos) ) • La tabla de particiones indica el principio, el tamaño y el tipo de cada partición. • Descripción de Descripción de ssistemas de archivos: – El sector de arranque en MS El sector de arranque en MS‐‐DOS – El superbloque en UNIX • Volumen: Volumen: conjunto coherente de metainformación y datos. conjunto coherente de metainformación y datos. 36 03/11/2009 Sistemas de archivos y particiones II Partición 4 Partición 5 Partición 2 Partición 3 Organizaciones típicas de SF 37 03/11/2009 Ejemplo de volumen o partición Consistencia del sistema de archivos I Verificar que la estructura lógica del sistema de archivos es correcta correcta:: 1. El contenido del superbloque responde a las características del sistema it d archivos de archivos. hi . 2. Los mapas de bits de nodos os mapas de bits de nodos‐‐i se corresponden con los nodos i se corresponden con los nodos‐‐i ocupados en el sistema de archivos. 3. Los mapas de bits de bloques se corresponden con los bloques asignados a archivos. 4. Ningún bloque está asignado a más de un archivo. 5. Un mismo nodo‐ n mismo nodo‐i no está asignado a más de un directorio. En UNIX y LINUX: fsck En UNIX y LINUX: fsck fsck /dev/ dev/dsk/c0t0d3s1 dsk/c0t0d3s1 Comprueba el dispositivo físico c0t0d3s1 38 03/11/2009 Consistencia del sistema de archivos II • Consistencia sobre archivos archivos:: – Contador de enlaces > contador real – Contador de enlaces < contador real – Número de nodo nodo‐‐i > Número total de nodos nodos‐‐i – Archivos con bits de protección 0007 – Archivos con privilegios en directorios de usuario Consistencia del sistema de archivos III Estados del sitema del sitema de archivo de archivo Recuento de bloques de bloques:: • • • Se leen todos los I Se Se leen los I‐nodos y se los I‐ y se cuentan los y se cuentan los bloques ocupados los bloques Se examina Se examina el el mapa mapa de bits o la de bits o la lista lista libre para contar bloques libres SE cmparan SE cmparan las dos dos tablas tablas:: (a) Consistente (a) Consistente (b) Bloques (b) Bloques perdidos perdidos: se : se recupera recupera ‐> se agrega > se agrega a la a la lista lista libre (c) Bloque (c) Bloque duplicado en la lista en la lista libre: se libre: se reconstruye reconstruye la lista la lista libre (d) Bloque (d) Bloque de de datos datos duplicado: se duplicado: se realiza realiza una copia del bloque del bloque y se aigna y se aigna a uno a uno de los dos archivos de los dos archivos que tienen el el bloque bloque duplicado ‐> se > se informa informa del ERROR del ERROR Recuento de I‐ de I‐nodos nodos:: • • Se inspecciona Se inspecciona el árbol el árbol de directoríos de directoríos y se y se cuentan cuentan los I‐ los I‐nodos … 78 39 03/11/2009 Estructuras del SF en MP I • Tabla de nodos nodos‐‐i: almacena en memoria la información del nodo nodo‐‐i existente en el disco y otra que se usa dinámicamente y sólo tiene sentido cuando el archivo está abierto abierto.. – Problema: roblema: si sólo hay un campo de apuntador apuntador,, cada operación de un proceso afectaría f t í a todos t d los l demás d á. demás. – Posible solución solución:: incluir la información relativa al archivo dentro del bloque de descripción del proceso (BCP). (BCP). • Tabla de archivos abiertos (tdaa) tdaa) por un proceso, dentro del BCP, con sus descriptores temporales y el valor del apuntador de posición del archivo para ese proceso 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. simultánea. – El descriptor de archivo fd indica el lugar de tabla tabla.. La tdaa se rellena de forma ordenada ordenada,, de forma que siempre se ocupa la primera posición libre de la tabla. tabla. – En los sistemas UNIX cada proceso tiene tres descriptores de archivos abiertos por defecto: defecto: entrada estándar, fd = 0, salida estándar, fd = 1, error estándar, fd = 2. Estructuras del SF en MP III • Tabla intermedia nodo‐ nodo‐i‐posición posición:: entre la tabla de archivos abiertos del BCP y la tabla de nodos nodos‐‐I. Dicha tabla incluye, incluye, entre otras cosas cosas:: – La entrada del nodo nodo‐‐i del archivo abierto en la tabla de nodos nodos‐‐i. – El apuntador de posición correspondiente al proceso, o procesos, que usan el archivo durante esa sesión. sesión. – El modo de apertura del archivo 40 03/11/2009 Estructuras del SF en MP IV Tabla de archivos Tabla de archivos abiertos. P1 abiertos. P2 fd 0 1 2 3 4 23 4563 56 3 678 fd 0 1 2 3 4 Tabla de archivos abiertos. P3 230 563 98 3 247 fd 0 1 2 3 4 2300 53 4 465 326 Nodo-i Posición 98 98 Tabla de nodos-i 98 456 2348 Tabla intermedia de nodos-i y posiciones SISTEMA DE FICHEROS Ficheros Directorios Implementación del del sistema sistema de ficheros de ficheros Ejemplos de sistema de sistema de ficheros de ficheros El El servidor servidor de de archivo archivo Aumento de prestaciones de prestaciones Servicios del del sistema sistema de ficheros de ficheros 41 03/11/2009 Ejemplo de sistemas de archivos MS‐DOS Boot Dos copias p Directorio de la FAT Raíz Datos yy Directorios UNIX Super Mapas Boot Bloque de bits nodos‐i Windows‐NT Super Mapas Descriptores físicos Boot Bloque de bits de archivos Datos y Directorios Datos y Directorios Formatos de entrada de directorio CPM MS‐‐DOS MS MS‐DOS Bytes MS‐ extendida:: extendida MFT Windows 98 42 03/11/2009 El sistema de ficheros de MS MS--DOS I FAT Directorio Raíz Nombre pep_dir • Información en el directorio – 32 bytes por entrada – Nombre + Extensión ( 8.3 ) – Primer bloque de datos – Atributos ( Subdirectory, System, Hidden, Read‐only, ... ) – Tamaño fiche1.txt En grafo En grafo – No hay hard links – Pueden haber soft links • FAT de: – 12 bits 4K agrupaciones – 16 bits 64K agrupaciones KB Agrup Agrup. 5 27 12 f 27 <eof> 45 45 Directorio pep_dir Nombre carta1.wp prue.zip • Atrib Atrib. dir Atrib. R KB Agrup. 24 74 16 91 58 51 <eof> 58 <eof> 74 75 75 76 76 <eof> 91 92 El sistema de ficheros de MS MS--DOS II • Particiones máximas para diferentes tamaños de bloque de bloque 86 43 03/11/2009 El sistema de ficheros Windows 98 Bytes Checksum Una entrada para (parte de) un nombre de fichero de fichero largo en largo en Windows 98 Windows 98 63 Ejemplo de archivo de archivo con nombre con nombre largo en Windows 98 Sistema de ficheros UNIX V7 I •Superbloque •Formato Formato del SF ( tamaño de bloque, del SF ( tamaño de bloque #inodos, #bloques de datos,... ) •Lista de bloques libres •Lista de inodos libres •Asignación indexada •Almacenada en los inodos •En grafo •hard links y soft links Entrada de directorio de directorio UNIX V7 88 44 03/11/2009 Sistema de ficheros UNIX V7 II Inodo •tamaño •tipo ( directory, file, link, pipe, dispositivo de caracteres, dispositivo de bloques) •protecciones •tiempos de acceso, modificación, creación •#links •Indices a los bloques de datos •10 indices directos •1 indice indirecto •1 indice indirecto doble •1 indice triple indirecto 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. Un ii‐nodo UNIX Un 89 Sistema de ficheros UNIX V7 III Pasos para acceder a a //usr usr//ast ast//mbox 45 03/11/2009 SISTEMA DE FICHEROS Ficheros Directorios Implementación del del sistema sistema de ficheros de ficheros Ejemplos de sistema de sistema de ficheros de ficheros El El servidor servidor de de archivo archivo Aumento A t de d prestaciones de prestaciones t i Servicios del del sistema sistema de ficheros de ficheros 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 almacenar, buscar y leer datos fácilmente. • Dicho servidor de archivos tiene dos tipos de problemas de diseño muy distintos entre sí sí:: – Definir la visión de usuario del sistema de ficheros ficheros,, incluyendo servicios de archivos, archivos, directorios, directorios, sistemas de archivos,, etc. 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 secundario.. 46 03/11/2009 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 ... Sistema de de ficheros ficheros virtual • Un sistema Un sistema de ficheros de ficheros virtual (VFS) virtual (VFS) proporciona proporciona una implementación orientada a objetos a objetos del del sistema sistema de ficheros de ficheros.. • VFS permite VFS permite que el el mismo mismo interface de interface de llamadas llamadas al sistema al sistema (API) se utilize en distintos utilize en distintos tipos de sistemas de sistemas de ficheros de ficheros • El API es El API es para el interface VFS, mucho más el interface VFS, mucho más que cualquier tipo específico de SF • Nodo virtual: estructura de información que incluye las características mínimas comunes a todos los sistemas de archivos subyacentes. 47 03/11/2009 Esquema de s de sistema de ficheros de ficheros virtual Esquema de sistema de sistema de ficheros de ficheros virtual II 48 03/11/2009 Estructura de un nodo virtual de UNIX nodo-v Información del archivo virtual Direcciones de las operaciones virtuales Dirección del nodo-i específico nodo-i Direcciones de las operaciones específicas de SA Tabla de funciones del SA Niveles del sistema de archivo Sistema de ficheros virtual Módulo de organización de ficheros Gestión de bloques Manejador de dispositivo 49 03/11/2009 Módulo de organización de archivos • Proporciona el modelo de archivo del sistema operativo y los servicios de archivos.. archivos • Relaciona la imagen lógica del archivo con su imagen física física,, proporcionando algoritmos para trasladar direcciones lógicas de bloques a sus correspondientes direcciones físicas físicas.. • Gestiona el espacio de los sistemas de archivos archivos,, la asignación de bloques a archivos y el manejo de los descriptores de archivo (nodos‐ nodos‐i de UNIX o registros de Windows NT) NT).. • Un módulo de este estilo por cada tipo de archivo soportado (UNIX, AFS, Windows NT, MS MS‐‐DOS, EFS, MINIX, etc etc..). • Las llamadas de gestión de archivos y de directorios particulares de cada sistema de archivos se resuelven en el módulo de organización de archivos archivos.. Para ello ello,, se usa la información existente en el nodo nodo‐‐i del archivo afectado por las operaciones. operaciones. Servidor de bloques • Se encarga de emitir los mandatos genéricos para leer y escribir bloques a los manejadores de dispositivo dispositivo.. • La L E/S de d bloques bl d archivo, de hi y sus posibles ibl optimizaciones, ti i i se lleva ll a cabo en este nivel del servidor de archivos 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.. archivos • Esta capa oculta los distintos tipos de dispositivos, usando nombres lógicos para los mismos. mismos. Por ejemplo, /dev dev/hda /hda3 3 será un dispositivo de tipo hard disk (hd 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. nivel. 50 03/11/2009 Descomposición en operaciones de bloques • Archivos con estructura de bytes – Escritura leer Fichero (tira de bytes) Bloques Manejadores de dispositivos • Un manejador por cada dispositivo dispositivo,, o clase de dispositivo dispositivo,, del sistema sistema.. • Su función principal es recibir ordenes de E/S de alto nivel, nivel, tal como move to block 234 move_to_block 234,, y traducirlas al formato que entiende el controlador del dispositivo, dispositivo, que es dependiente de su hardware hardware.. • Habitualmente, Habitualmente, cada dispositivo tiene una cola de peticiones pendientes, pendientes, de forma que un manejador puede atender simultáneamente a varios dispositivos del mismo tipo 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. afectado. – La política de inserción en cada cola puede ser diferente, diferente, dependiendo del tipo de dispositivo o de la prioridad de los dispositivos.. Para un disco, por ejemplo dispositivos ejemplo,, se suele usar la política CSCAN.. CSCAN 51 03/11/2009 Flujo de datos en el S. de A 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ógic os (Servidor de bloques) 1340 1756 840 8322 bloques del dispositivo 1340 Manejador de disc o y dispositivo 1756 bloques del disco 840 8322 SISTEMA DE FICHEROS Ficheros Directorios Implementación del del sistema sistema de ficheros de ficheros Ejemplos de sistema de sistema de ficheros de ficheros El El servidor servidor de de archivo archivo Aumento de prestaciones de prestaciones Sistemas de almacenamiento de almacenamiento masivo 52 03/11/2009 Eficiencia y p y performance • Eficienciencia depende de: – Ubicación en disco y algoritmos en disco y y algoritmos g de directorios de directorios – Tipo de datos de datos en las en las entradas de fichero de fichero de los de los directorios directorios • Performance depende Performance depende de: – Mejoras de performance de performance como como discos virtuales discos virtuales y discos RAM – Caché de disco de disco –– sección separa de memoria de memoria principal principal para para bloques usados frecuentemente – Las Las técnicas free Las técnicas free‐‐behind behind y read behind y read‐‐ahead ahead – para optimizar el ahead – el acceso el acceso secuencial Incremento de prestaciones. prestaciones. Performance • Basados en el uso de almacenamiento intermedio de datos de entrada/salida en memoria principal. principal. Estos mecanismos son de dos tipos tipos:: – Discos RAM, RAM, cuyos datos están almacenados sólo en memoria memoria.. • Aceptan todas las operaciones de cualquier otro sistema de archivos y son gestionados por el usuario. usuario. • Pseudodispositivos para almacenamiento temporal o para operaciones auxiliares del sistema operativo operativo.. Su contenido es volátil.. volátil – Cache de disco disco,, almacena datos en MP para optimizar accesos posteriores.. posteriores • Se basan basan en la existencia de proximidad espacial y temporal en las referencias a los datos de entrada/salida entrada/salida.. • Dos caches importantes dentro del servidor de archivos archivos:: cache de nombres y cache de bloques bloques.. 53 03/11/2009 Cache de bloques I • Acceso a disco mucho más lento que el acceso a memoria • Fundamento: Fundamento: – Proximidad espacial – Proximidad temporal – Dos clases de flujos de E/S E/S:: • Usan una sola vez cada bloque • Usan repetidamente los bloques Proceso P Proceso Cache Cache Disco Disco • Estructura Et t d datos de d t en memoria i con los l bloques bl más á frecuentemente f t t utilizados – Lecturas adelantadas – Limpieza de la cache (sync) • Problema: fiabilidad del sistema de archivos. Cache de bloques II Estructura de la cache de de la cache de bloques bloques 108 54 03/11/2009 Cache de páginas Cache de páginas Cache de páginas ache de páginas: : esconde esconde páginas en en vez vez de bloques de bloques de disco de disco utilizando utilizando técnicas de de memoria memoria virtual – En la E/S En la E/S mapeada mapeada en en memoria memoria se utiliza se utiliza la cache de la cache de página página – Las Las rutinas rutinas de E/S de E/S utilizan utilizan el buffer cache de disco Flujo datos con buffer cache read (fd, buffer, tamaño) Usuario buffer tamaño arc hivo hi ló lógic i o (VFS) arc hivo lógic o (FFS) 3 4 5 6 bloques del archivo Bloques lógic os (Servidor de bloques) 1340 1756 840 8322 bloques del dispositivo Cache de bloques q (Servidor de bloques) 1340 1756 840 8322 1756 bloques del disco Manejador de disco y dispositivo 8322 55 03/11/2009 Políticas de reemplazo • Algoritmo: Algoritmo: – Comprobar si el bloque a leer está en la cache. cache. • En caso de que no esté esté,, se lee del dispositivo y se copia a la cache. cache. • Si la cache está llena, llena, es necesario hacer hueco para el nuevo q reemplazando p uno de los existentes existentes:: p políticas de bloque reemplazo.. reemplazo • Si el bloque ha sido escrito (sucio): (sucio): política de escritura escritura.. • Políticas de reemplazo reemplazo:: FIFO (First in First Out), Out), segunda oportunidad, oportunidad, MRU (Most Recently Used), Used), LRU (Least Recently Used), Used), etc. etc. – La política de reemplazo más frecuentemente usada es la LRU LRU.. Esta política reemplaza el bloque que lleva más tiempo sin ser usado, usado, asumiendo que no será referenciado próximamente próximamente.. – Los bloques más usados tienden a estar siempre en la cache y, por tanto,, no van al disco tanto disco.. La utilización estricta de esta política puede crear problemas de fiabilidad en el sistema de archivos si el computador falla falla.. – La mayoría de los servidores de archivos distinguen entre bloques especiales y bloques de datos datos.. Políticas de escritura • Escritura inmediata (write write‐‐through through)): se escribe cada vez que se modifica el bloque.. bloque – No hay problema de fiabilidad fiabilidad,, pero se reduce el rendimiento del sistema.. sistema • Escritura diferida (write write‐‐back back)): sólo se escriben los datos a disco cuando se eligen para su reemplazo por falta de espacio en la cache. cache. – Op Optimiza timiza el rendimiento rendimiento,, pero genera los problemas de fiabilidad anteriormente descritos. descritos. • Escritura retrasada (delayed delayed‐‐write write), ), que consiste en escribir a disco los bloques de datos modificados en la cache de forma periódica cada cierto tiempo (30 segundos en UNIX). UNIX). – Compromiso entre rendimiento y fiabilidad fiabilidad.. – Reduce la extensión de los posibles daños por pérdida de datos. datos. – Los bloques especiales se escriben inmediatamente al disco disco.. – No se puede quitar un disco del sistema sin antes volcar los datos de la cache.. cache • Escritura al cierre (write write‐‐on on‐‐close close)): cuando se cierra un archivo, se vuelcan al disco los bloques del mismo que tienen datos actualizados actualizados.. 56 03/11/2009 LFS: Sistemas de archivos LogLog-Structured • Las CPUs Las CPUs cada cada vez es más rápida y la memoria y la memoria más grande – La cache de disco La cache de disco puede puede ser ser más más grande – Aumenta el número el número de de peticiones peticiones de lectura de lectura que pueden venir de la cache – Por lo lo que, la lo que que, la mayoría la mayoría de los de los accesos a disco de los accesos a disco serán escritura a disco serán • Los sistemas Los sistemas de fichero de fichero Log structured (LFS o journaling) Log structured (LFS o journaling) graban graban cada actualización como una transacción transacción.. • Todas las transactiones se escriben se escriben en el log – Una transación se considera se considera committed committed cuando cuando se ha escrito se ha escrito en el haya actualizado todavía log, aunque el SF no se el SF no se haya • Las transactiones Las transactiones del log se escriben del log se escriben de forma asíncrona de forma asíncrona en el SF – Cuando el Cuando el fichero fichero se se modifica modifica, la , la transacción transacción se borra se borra del log • Si el SF Si el SF falla falla, el , el resto resto de de transacciones transacciones en el log quedan en el log quedan pendientes SISTEMA DE FICHEROS Ficheros Directorios Implementación del del sistema sistema de ficheros de ficheros Ejemplos de sistema de sistema de ficheros de ficheros El El servidor servidor de de archivo archivo Aumento de prestaciones de prestaciones p Servicios del sistema de fichero 57 03/11/2009 Operaciones genéricas sobre archivos • creat: creat: crea un archivo con un nombre y protección y devuelve un descriptor • delete delete:: borra el archivo con un nombre • open: abre un archivo con nombre para una(s) operación(es) y devuelve un descriptor • close close:: cierra un archivo abierto con un descriptor • read: read: lee datos de un archivo abierto, usando su descriptor, a un almacén en memoria , p , • write write:: escribe datos a un archivo abierto, usando su descriptor, desde un almacén en memoria • lseek lseek:: mueve el apuntador a relativo_a mueve el apuntador a relativo_a+ desplazamiento + desplazamiento • ioctl ioctl:: permite manipular los atributos de un archivo 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: Descriptores de archivos: enteros de 0 a 64K Predefinidos: – 0: entrada estándar – 1: salida estándar – 2: salida de error • Fork Fork: duplicación de BCP, pero compartición de tabla de archivos : 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: Ejemplos: 755 755 indica indica rwxr rwxr-xr xr-x • Ejemplo de programación en el libro (Programa 8.1) 58 03/11/2009 Archivos, , directorios Archivos directorios y servicios y servicios en POSIX (UNIX) • Tipos de archivo: – Normales Normales – Directorios – Especiales • Nombres de archivo y directorio: – Nombre completo (empieza por / Nombre completo (empieza por /) • /usr/include/stdio.h – Nombre relativo al directorio actual (no empieza por / Nombre relativo al directorio actual (no empieza por /) • stdio.h stdio.h, , /usr/include es el directorio actual. – La entradas . La entradas . y .. y .. pueden utilizarse para formar rutas de acceso • ../include/stdio.h stat. Obtiene información sobre un archivo • Servicio: Servicio: #include <sys/types <sys/types. .h> #include <sys/stat <sys/stat. .h> int stat(char *name, struct stat *buf) *buf); ; int fstat(int fd, struct stat *buf) *buf); ; • Argumentos: Argumentos: • name nombre del archivo • fd descriptor p de archivo • buf puntero a un objeto de tipo struct stat donde se almacenará la información del archivo. archivo. • Devuelve: Devuelve: – Cero ó ‐1 si error 59 03/11/2009 stat. Obtiene información sobre un archivo • Descripción: Descripción: – Obtiene información sobre un archivo y la almacena en una estructura d tipo de ti struct t t stat stat: t t: struct stat { mode_t ino_t dev_t nlink_t uid t uid_t gid_t off_t time_t time_t time_t }; st_mode st_mode; ; st_ino st_ino; ; st_dev st_dev; ; st_nlink st_nlink; ; st uid; st_uid; st_uid uid; st_gid st_gid; ; st_size st_size; ; st_atime st_atime; ; st_mtime st_mtime; ; st_ctime st_ctime; ; /* /* /* /* /* / /* /* /* /* /* 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 */ Servicios POSIX para directorios • Visión lógica: tabla de entradas nombre lógico, nodo Visión lógica: tabla de entradas nombre lógico, nodo‐‐i • Cada entrada tiene la siguiente estructura: C d d i l i i Struct dirent { char *d_name d_name; ; ... } /* nombre archivo */ • Gestión complicada porque los nombres de archivo tienen longitud G tió li d l b d hi ti l it d variable. • Servicios POSIX: gestión de directorios y de la tabla • Ejemplos de programación en el libro (Programas 8.4 y 8.5) 60 03/11/2009 Servicios UNIX para ficheros y directorios Ficheros: stdin(), stdin (), stdout stdout(), (), stderr stderr(), (), creat creat(), (), fstat fstat(), (), fcnt fcnt(), (), flock flock(), link(), pipe(), (), link(), pipe(), mkfifo() mkfifo(), mkfifo () rename(), (), rename rename() rename () truncate(), (), truncate truncate() truncate () dup(), (), dup dup() dup () aio_read(), (), aio_read aio read() read(), aio_write () aio_write(), aio write() write(), () aio_suspend(), aio_suspend (), aio_cancel aio_cancel() () Directorios: mkdir(), mkdir (), rmdir rmdir(), (), opendir opendir(), (), close close(), (), closedir closedir(), (), readdir readdir(), (), chdir chdir(), link(), (), link(), symlink(), symlink (), rewinddir rewinddir(), (), getcwd getcwd(), (), 61