Gestión de Procesos1 Horas 1INTRODUCCIÓN4 2PROCESOS Y THREADS11 3GESTIÓN DE MEMORIA9 4ENTRADA/SALIDA1 5SISTEMA DE FICHEROS4 sisOpeTemarioCurso: 14/15
Sistema de Ficheros2 Tema 5.Sistema de Ficheros INTRODUCCIÓN Aspectos básicos Ficheros Directorios IMPLEMENTACIÓN Aspecto de un Sistema de Ficheros Almacenamiento de ficheros Estructura de los directorios Gestión del espacio en disco Fiabilidad del Sistema de Ficheros Rendimiento del Sistema de Ficheros
Sistema de Ficheros3 Introducción Sistema de Ficheros: Organización de la información Directorios Ficheros Gran capacidad Permanente Acceso concurrente y seguro 10MB 2TB
Sistema de Ficheros4 Introducción Sistema de Ficheros: Organización de la información Directorios Ficheros Gran capacidad Permanente Acceso concurrente y seguro Ficheros Nombre Propietario, Protecciones, Tiempos, Ubicación, Tamaño, Tipo, etc. Contenido Atributos: Operaciones: vs ¿Visible al Usuario? int open(nombre, modo) Descriptor de Fichero read (df,...), write (df,...), lseek (df,...) stat (nombre,...), fstat (df, …) close (df) Descripción -rw-r pcarazo May 20 13:52 practica1.c ls -l
Sistema de Ficheros5 Introducción dforg = open (“/usr/pepe/uno.txt”, O_RDONLY, 0); dfdst = open (“/tmp/copia.txt”, O_WRONLY | O_CREAT | O_TRUNC, 0600); do { leidos = read (dforg, &buf, 4096); write (dfdst, &buf, leidos); } while (leidos == 4096); close (dforg); close (dfdst); cp /usr/pepe/uno.txt /tmp/copia.txt Otras cuestiones: Organizaciones:Tipo: Normal, Directorio, Octeto, registro, árbol,...Especial, Pipe,... ExtensionesAcceso: Secuencial/Directo
Sistema de Ficheros6 Introducción ( Directorios ) Nombre Propietario, Protecciones, Tiempos, Ubicación, Tamaño, Tipo, etc. Atributos: Operaciones: open, read, write, lseek, stat, fstat, close crear, borrar, renombrar,... (Ficheros / Directorios) Descripción Contenido Entradas de Ficheros (Nombre [Descripción]) Estructura: 1 Nivel Un único directorio 2 Niveles Un directorio por usuario + Directorio Maestro M Niveles Árbol de directorios Nombre de ruta: Absoluta vs Relativa Directorio de trabajo (Actual)
Sistema de Ficheros7 Introducción ( El descriptor de fichero ) Una forma muy habitual de guardar un fichero en disco es la siguiente: Hola.txt Nombre Descripción Contenido Bloques de Datos Inodo Directorio df := open (“Hola.txt”, “r”); búsqueda M.P. Por eficiencia, se carga su descripción en memoria S.O. Tabla de Ficheros Abiertos 012N33 posición ¿Acceso concurrente? 1..max 80 ls –i Hola.txt 80 Hola.txt
Sistema de Ficheros8 Introducción ( El df con acceso concurrente ) df := open (“Hola.txt”, “r”); Pi Hola.txt 012N33 posición df := open (“Hola.txt”, “r”); Pj ¡Coherencia de la descripción del fichero! ¡Compartir el df es compartir la posición!
Sistema de Ficheros9 Hola.txt df := open (“Hola.txt”, “r”); Pi df := open (“Hola.txt”, “r”); Pj 012N33012N Tabla Global del Sistema Introducción ( El df con acceso concurrente ) 012M21012M + Tablas Locales de Descriptores ? 01 2 ContAperturas sysconf (_SC_OPEN_MAX)
Sistema de Ficheros10 Implementación ( Aspecto de un Sistema de Ficheros ) BLibresBloques con el contenido de los ficherosDirectorio BootstrapDisco de Arranque SuperbloqueTamaño del disco, # máximo de ficheros,... Nombre1, Descripción1 Nombre2, Descripción2 Nombre3, Descripción NombreN, DescripciónN MBRPartición activa ¡Bloques lógicos: 0..N!vs Cilindro, Pista y Sector
Sistema de Ficheros11 Implementación ( Almacenamiento de Ficheros ) Asignación de bloques contiguos vs dispersos F2: 4..8 F3: F1: 0..3 Pros:Fácil registrar Ubicación (Inicio..Fin) Eficiencia en acceso secuencial y directo Contras: Dificultad para crecer: Crear con el máximo: desperdicio, ¿se conoce? Buscar un hueco mayor y copiarlo allí Complejo elegir dónde ubicar el fichero: Se borra F2 Se crea F4 (3) F ? Políticas similares a gestión de memoria En general Fragmentación Externa Fragmentación Interna df = open (“F3”, ….) lseek (df, 2051, …) read(df, &buffer, 1) Bloque 1024B
Sistema de Ficheros Implementación ( Lista encadenada “distribuida” ) A A: 6,2 B: 5,12 C: 10,13 BC Pegas:Acceso directo ineficiente (muchos accesos): readByte (A, último) Bloques 6, 8, 4 y 2 Poca fiabilidad: ¡ Bloque 8 erróneo ! Inaccesibles 4, 2,... Más complejo calcular el acceso directo readByte (A, 3070) y bloques de 1024B Bloque lógicoOffset A B para puntero ¿necesario?
Sistema de Ficheros13 X X F.A.T. Tamaño disco A B C ABC Implementación ( Lista encadenada “centralizada global” ) FAT 8, 4, 2 9, 12 3, 13 A: 6 B: 5 C: 10 En la descripción del fichero se indica cuál es el primer bloque En la FAT se indica el resto EOF 3 13 EOF 9 12 FREE BAD Acceso directo muy eficiente si toda la FAT está cargada en M.P. ¿Problemas? Historia de MSDOS ?
Sistema de Ficheros14 Implementación ( Lista encadenada “centralizada local” ) ABC ABC FAT C ¡ Sólo necesario tener en M.P. las FAT de los ficheros abiertos ! ¿Tamaño FAT’s? FAT de 512B, punteros de 2B son 256 punteros ¡Tamaño maximo fichero 256KB! A B C Cada fichero su FAT AsignaciónIndexada ¿Dónde?
Sistema de Ficheros15 Implementación ( Bloques de índices encadenados “Unix” ) descripción i-nodo propietario, tamaño, etc. UbicaciónUbicación FAT local de 12 entradas Ptr[0] 1024 Ptr[1] Ptr[11] Ptr_I Bloque de Punteros a datos ¿Cuántos? 4Bytes 256 Ptr_II Ptr_III Ficheros de hasta Leer un byte # accesos 12K1 268K1,2 64M 1..3 16G 1..4 ¿Seguro? hola.txt nombre contenido
Sistema de Ficheros16 Implementación ( Estructura de los Directorios ) MSDOS: Ejemplo de disquetes de 360K Lista de 112 entradas de 32B Límite sólo para \ 10 NombreEXTLONG Atributos Oculto Sólo lectura Directorio Fecha Hora Primer Bloque FAT ¿Inconveniente de nombre y descripción juntos? FAT1 Bloques con el contenido de ficheros y dir. Directorio Raíz \ FAT2
Sistema de Ficheros17 7 ptr directos Ptr_I Ptr_II Ptr_III 64B descripciones Implementación ( Estructura de los Directorios “UNIX like” ) Bloques ficheros y directorios / inodos 0123 N modo # enlaces uid gid tamaño T. acceso T. modificación T. cambio inodo Entradas de 16B inodonombre 214 / Bootstrap Superbloque inodos libres Bloques libres 2hola.txt nombres ¿Gestión de entradas?
Sistema de Ficheros18 Implementación ( Directorios: Nombres de longitud variable ) inodonombre 214 a.out practica.c enUnLugarDeLaMancha.txt ? inodonombre 4 Longitud Total Longitud Nombre como máximo + \0… Solaris filesystem.txt inode.txt dir.txt fstat.txt opendir.txt0 ¿ rm fstat.txt ? 36 ¿ open (archivo, …) ?
Sistema de Ficheros19 Implementación ( Directorios: Nombres de longitud variable ) open (“ranura”, ….) enunciado origen zafio baluarte gazapo tiempo artificio velo figura lineal ranura ilustre enunciado origen zafio baluarte gazapo tiempo artificio velo figura lineal ranura ilustre enunciadolinealtiempo artificio baluarte figura gazapo ilustre origen ranura zafio velo
Sistema de Ficheros20 Implementación ( Directorios: Ficheros compartidos ) link (“/usr/jim/memo”, “/usr/ast/note”) / usrtmp dev astjim mail games test bin memo f.c prog1 memo note mail games test note /usr/ast bin memo f.c prog1 /usr/jim inodo 70 2 A: compartir nodo + cuántos #enlaces ¿ jim => rm /usr/jim/memo ? ¿ /ast y /jim en S.F. distintos ?
Sistema de Ficheros21 Implementación ( Directorios: Ficheros compartidos ) link (“/usr/jim/memo”, “/usr/ast/note”) / usrtmp dev astjim mail games test bin memo f.c prog1 memo note inodo 90 simbólico mail games test note /usr/ast bin memo f.c prog1 /usr/jim B: Enlaces simbólicos modo /usr/jim/memo Ptr[0] ?
Sistema de Ficheros22 Implementación ( Gestión del espacio en disco ) Tamaño del bloque: Cilindro – Pista - Sector grande pequeño Fragmentación interna ¿1/2 bloque por fichero? Peor ajuste al tamaño medio ficheros 1984 (1K) (12K..15K) Baja la velocidad de transferencia Sea: Bytes por pista 16,67 mseg de Trotación 30 mseg de Tposicionarse Kbytes/s K2K4K8K Tamaño del Bloque Lo más habitual 40MB - 160KB - 0,5KB 40GB 3,3 6 % uso disco Ficheros de 1K
Sistema de Ficheros23 BLibresBloquesDirectorio Disco 20M y bloques de 1K MP MB Para que sea eficiente, debe estar entero en MP Implementación ( Gestión del espacio en disco ) Gestión de bloques libres: Implentar eficientemente: int pedirBloque() y liberarBloque(int) Mantenerse en disco como información permanente bloques ocupados bloques libres Mapa de bits mount sync, umount, shutdown MP Si sólo cabe un bloque en MP, ¿borrar un fichero de 4 bloques? 4..8 accesos a disco
Sistema de Ficheros24 MP Implementación ( Gestión del espacio en disco ) Disco de 40GB y bloques de 1K => Mapa de 5MB ¿Todo en M.P.? Lista encadenada distribuida LBLibresDirectorio p u F1 LBLibresDirectorio p u Borrar F1 1 acceso a disco (E) Sin acceder al disco Pedir bloque libre 1 acceso a disco (L)
Sistema de Ficheros25 Implementación ( Gestión del espacio en disco ) Lista encadenada centralizada (Bloques de índices libres) LBLibresDirectorio FAT Sea un disco de 20MB y bloques de 1K bloques LBLibresBloques (libres / ocupados) ¡Formatear! 41,42,43,44,45, ,20478,20479 Pedir 3 bloques Liberar bloque 41 40,41,42,44,45, ,20478, ,42,4340,41,41,44,45, ,20478, ,42
Sistema de Ficheros26 MP Implementación ( Tamaño de la lista de bloques libres ) Con disco de 20MB y bloques de 1K bloques: Si ptrBloque son 2B LBLibres = (20439*2)/1024 = 40 bloques LBLibresBloques (libres / ocupados) Con un solo bloque en MP hay eficiencia Pido bloque Libero bloque shutdown Ptr 1 er bloque libre 1::1020 Tamaño disco, B Con 2 ó 3 bloques en MP sí hay eficiencia
Sistema de Ficheros27 Implementación ( Fiabilidad ) Fiabilidad: Protección frente a imponderables (Hw / Sw) Problema Bloque erróneo Tratamiento Lista de bloques defectuosos Disco inservible Copias preventivas Hw leve serio S.F. Incoherente Sw ÙÐ þØ dir ¶Ððò Îþõæ š¥Ħťů Restaurar coherencia scandisk fsck
Sistema de Ficheros28 Implementación ( Fiabilidad “Copias preventivas” ) Sistemas de volcados Cintas ¡ Lentos y Voluminosos ! Volcados incrementales Volcar cambios desde volcado anterior Un disco lógico y dos físicos Datos0 Copia1 Disco 0 UCP Datos1 Copia0 Disco 1 ¿Mejor? Datos Disco 0 UCP Copia Disco 1 1,5..3TB a 140MB/seg 2499$ ¿ RAID ? 4+4 5749$ “The hot new storage technology for 2011 is… tape?”
Sistema de Ficheros29 Implementación ( Fiabilidad “Consistencia SF” ) Mapa | Lista Nodos Mapa | Lista Bloques I-NodosBloques De bloques LibresOcupados Punteros a bloques L O = E L ∩ O = Ø ∩ ¿Algoritmo? n Bloque Libre Ocupado Casos: coherente 0 0 perdido ? /lost+found 2 0 Repetido libre ? Dejar uno 0 2 Repetido ocupado Replicarlo ?
Sistema de Ficheros30 Implementación ( Fiabilidad “Consistencia SF” ) De ficheros modo # enlaces uid gid tamaño T. acceso T. modificación T. cambio inodo # enlaces mail games test note /usr/ast bin memo f.c prog1 /usr/jim inodo 70 2 #enlaces ¿Algoritmo? OK n Nodo # entradas 70 0 Recorrer SF Recorrer nodos: #entradas = #enlaces
Sistema de Ficheros31 Implementación ( Rendimiento: Caché de bloques ) L3L2 L1I L1D UCP 1,6 GHz MP Caché bloques Viable LRU Reciente (MRU) Antiguo (LRU) ? Búsqueda rápida Tabla hash Tipos de bloques: nodo-i, ptr, datos sync + update Cache transparente W
Sistema de Ficheros32 Implementación ( Rendimiento: otras mejoras ) Leer (traer a cache) por adelantado “prefetch” Asignar bloques contiguos a ficheros: zona = n bloques Ubicación de inodos más distribuida