Tema 4 Sistemas de Ficheros Dos mdulos Interfaz

  • Slides: 50
Download presentation
Tema 4. Sistemas de Ficheros • Dos módulos: – Interfaz del sistema de ficheros

Tema 4. Sistemas de Ficheros • Dos módulos: – Interfaz del sistema de ficheros – Implementación del sistema de ficheros • Objetivos: – – – Que el alumno entienda los conceptos de fichero y directorio Mostrar los métodos de acceso y los mecanismos de protección Estudiar las semánticas de compartición Que el alumno comprenda la estructura del sistema de ficheros Presentar distintas técnicas de gestión de archivos y directorios a nivel de diseño. Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Módulo 1. Interfaz del Sistema de Ficheros ¿Concepto de fichero? Métodos de acceso Estructura

Módulo 1. Interfaz del Sistema de Ficheros ¿Concepto de fichero? Métodos de acceso Estructura de directorio Protección Semánticas de compartición Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Concepto de Fichero • Un espacio lógico de direcciones contiguas usado para almacenar datos

Concepto de Fichero • Un espacio lógico de direcciones contiguas usado para almacenar datos • Tipos de ficheros: – Datos: • numéricos • carácter • binarios – Programas: • código fuente • ficheros objetos (imagen de carga) – Documentos Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Estructura del Fichero • Ninguna - secuencia de palabras o bytes (UNIX) • Estructura

Estructura del Fichero • Ninguna - secuencia de palabras o bytes (UNIX) • Estructura sencilla de registros – Líneas – Longitud fija – Longitud variable • Estructuras complejas – Documentos con formato (HTML, postscript) – Fichero de carga reubicable (módulo de carga) • Se puede simular estructuras de registro y complejas con una estructura plana y secuencias de control • ¿Quién decide la estructura? – Interna: El sistema operativo – Externa: Las aplicaciones Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Estructura del Fichero Ejecutable Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Estructura del Fichero Ejecutable Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Atributos del Fichero • Nombre: la única información en formato legible por una persona

Atributos del Fichero • Nombre: la única información en formato legible por una persona • Tipo: necesario en sistemas que proporciona distintos formatos • Posición: apuntador a la posición del fichero en un dispositivo • Tamaño: tamaño actual del fichero • Protección: control de accesos y de las operaciones sobre ficheros • Tiempos: de creación, de acceso, de modificación, etc. • Identificación de usuario: dueño, y grupo, del fichero • La información relacionada con el fichero se mantiene en el descriptor del fichero, al que se apunta desde los directorios. Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Atributos del Fichero Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Atributos del Fichero Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Operaciones sobre Ficheros • fd = create(nombre, protección): crea un fichero con ese nombre

Operaciones sobre Ficheros • fd = create(nombre, protección): crea un fichero con ese nombre y esa protección y devuelve un descriptor • delete(nombre): borra el fichero con ese nombre • fd = open(nombre, operación): abre un fichero con ese nombre para esa(s) operación(es) y devuelve un descriptor • close(fd): cierra un fichero abierto con descriptor fd • read(fd, almacén, cantidad): lee cantidad del fichero fd, abierto, al almacén. • write(fd, almacén, cantidad): escribe cantidad al fichero fd, abierto, desde el almacén. • truncate(fd): vacía el fichero fd. • lseek(fd, desplazamiento, relativo_a): mueve el apuntador a relativo_a+ desplazamiento. Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Nombres de Fichero y Extensiones • • • Tiras de caracteres Longitud: fija o

Nombres de Fichero y Extensiones • • • Tiras de caracteres Longitud: fija o variable Sensibles a tipografía Extensión: obligatoria o no Los usuarios usan nombres lógicos de estilo • Los directorios relacionan nombres lógicos y descriptores internos de ficheros • El sistema de ficheros trabaja con descriptores internos Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Métodos de Acceso • Acceso secuencial: – read next, write next, reset, no read

Métodos de Acceso • Acceso secuencial: – read next, write next, reset, no read after last write, … – rewind: ir al principio para buscar hacia delante – Dispositivos de cinta • Acceso Directo: – read n, write n, goto n, rewrite n, read next, write next, … – n = número de bloque relativo al origen – Dispositivos: discos magnéticos Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Visiones del Fichero Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Visiones del Fichero Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Concepto de Directorio • Una colección de nodos que contienen información acerca de los

Concepto de Directorio • Una colección de nodos que contienen información acerca de los ficheros • Tanto la estructura del directorio como los ficheros residen en discos • Los directorios se suelen implementar como archivos • Copias de respaldo en cintas, por seguridad • Información en un directorio: nombre, tipo, dirección, longitud máxima y actual, tiempos de acceso y modificación, dueño, etc. • Hay estructuras de directorio muy distintas. La información depende de esa estructura. Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Estructuras de Directorio Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Estructuras de Directorio Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Operaciones de Directorio • • mkdir (nombre, proteccion) rmdir (nombre) dirp=opendir (nombre): devuelve un

Operaciones de Directorio • • mkdir (nombre, proteccion) rmdir (nombre) dirp=opendir (nombre): devuelve un descriptor de directorio closedir (dirp) dirent = readdir (dirp): devuelve una entrada del directorio chdir (nombre) link (origen, destino) Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Organización del Directorio • Eficiencia: localizar un fichero rápidamente • Nombrado: conveniente y sencillo

Organización del Directorio • Eficiencia: localizar un fichero rápidamente • Nombrado: conveniente y sencillo para los usuarios – Dos usuarios pueden tener el mismo nombre para ficheros distintos – Los mismos ficheros pueden tener nombres distintos – Nombres de longitud variable • Agrupación: agrupación lógica de los ficheros según sus propiedades (por ejemplo: programas Pascal, juegos, etc. ) • Estructurado: operaciones claramente definidas y ocultación • Sencillez: la entrada de directorio debe ser lo más sencilla posible. Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Directorio de un Nivel • Un único directorio para todos los usuarios • Problemas

Directorio de un Nivel • Un único directorio para todos los usuarios • Problemas de nombrado y agrupación Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Directorio de dos Niveles • • Un directorio por cada usuario Camino de acceso

Directorio de dos Niveles • • Un directorio por cada usuario Camino de acceso automático o manual El mismo nombre de fichero para varios usuarios Búsqueda eficiente, pero problemas de agrupación Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Directorio con Estructura de Árbol • Búsqueda eficiente y agrupación • Nombres relativos y

Directorio con Estructura de Árbol • Búsqueda eficiente y agrupación • Nombres relativos y absolutos -> directorio de trabajo Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Directorio con Estructura de Árbol • Los nombres absolutos contienen todo el camino •

Directorio con Estructura de Árbol • Los nombres absolutos contienen todo el camino • Los nombres relativos parten del directorio de trabajo o actual • Cambio de directorio: – cd /spell/mail/prog – cd prog • Borrar un fichero: rm <nombre-fichero> • Crear un subdirectorio: mkdir <nombre_dir> • Ejemplo: – cd /spell/mail – mkdir count – ls /spell/mail/count • Borrar un subdirectorio: rm -r mail Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Directorio de Grafo Acíclico I • Tienen ficheros y subdirectorios compartidos • Este concepto

Directorio de Grafo Acíclico I • Tienen ficheros y subdirectorios compartidos • Este concepto no existe en Windows Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Directorio de Grafo Acíclico II • link: Un fichero con varios nombres -> control

Directorio de Grafo Acíclico II • link: Un fichero con varios nombres -> control de enlaces – un único fichero contador enlaces en descriptor (e. Físicos) – ficheros nuevos con el nombre destino dentro (e. simbólicos) • Borrado de enlaces: – a) decrementar contador; si 0 borrar fichero – b) recorrer los enlaces y borrar todos – c) borrar únicamente el enlace y dejar los demás • Problema grave: existencia de bucles en el árbol. Soluciones: – Permitir sólo enlaces a ficheros, no subdirectorios – 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 ficheros. Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Protección • El dueño (creador) de un fichero debería ser capaz de controlar: –

Protección • El dueño (creador) de un fichero debería ser capaz de controlar: – lo que se puede hacer – por quién • Tipos de acceso: read, write, execute, append, delete, list • Políticas de protección: restrictivas, conocidas, sencillas, … • Dominio: conjunto de usuarios a los que se agrupa con los mismos criterios de seguridad • Mecanismos de protección: – matriz de protección: (objeto, usuario) -> derechos – listas de control de acceso: matriz de protección por columnas – capacidades: matriz de protección por filas Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Matriz de Protección • Mecanismo general: (dominio, objeto) -> derechos positivos o negativos •

Matriz de Protección • Mecanismo general: (dominio, objeto) -> derechos positivos o negativos • Problema: muy grande y dispersa -> implementación difícil y costosa • Vale como modelo teórico (HRU), pero poco práctca • Base de los mecanismos usados más frecuentemente: ACL, CAP Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Listas de Control de Acceso • Lista por objeto con una entrada por usuario

Listas de Control de Acceso • Lista por objeto con una entrada por usuario o dominio especificando derechos de acceso • Si es muy larga, su manejo es complejo. • Habitual: denegaciones primero y encadenamiento doble • Fácil denegar acceso total eliminando la ACL del objeto Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Listas de Control de Acceso y Grupos • Modo de acceso: read, write, execute

Listas de Control de Acceso y Grupos • Modo de acceso: read, write, execute • UNIX: tres clases de usuarios: – a) dueño – b) grupo – c) público 7 6 1 110 001 rwx rw--x • El administrador crea usuarios y grupos. Un grupo puede tener múltiples usuarios. Un usuario puede estar en varios grupos. • Cambiar protección: chmod 761 fichero • Cambiar dueño: chown usuario fichero • Cambiar grupo: chgrp grupo fichero • Windows NT más selectivo: permisos positivos y negativos específicos por objeto y usuario. Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Capabilities • Cada usuario tiene una protección por objeto. Bueno para sistemas distribuidos •

Capabilities • Cada usuario tiene una protección por objeto. Bueno para sistemas distribuidos • Fácil dar permisos • Difícil revocar todos los permisos. Soluciones: – Envíos masivos a los usuarios – Cambiar el objeto origen por otro – Usar una capability intermedia y eliminarla Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Módulo 2. Implementación del Sistema de Ficheros Estructura del sistema de ficheros Estructura del

Módulo 2. Implementación del Sistema de Ficheros Estructura del sistema de ficheros Estructura del servidor de ficheros Métodos de asignación Gestión del espacio libre Incremento de prestaciones Fiabilidad y recuperación Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Estructura del Sistema de Ficheros • Sistema de ficheros: unidad lógica de almacenamiento donde

Estructura del Sistema de Ficheros • Sistema de ficheros: unidad lógica de almacenamiento donde se recolecta información relacionada • El sistema de ficheros reside en particiones, o volúmenes, de almacenamiento secundario Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Superbloque • Contiene la información de estructura del sistema de ficheros • Uno por

Superbloque • Contiene la información de estructura del sistema de ficheros • Uno por sistema de ficheros. Si falla, el SF queda inaccesible. Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Estructura del Servidor de Ficheros Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Estructura del Servidor de Ficheros Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

El Servidor de Ficheros Virtuales • Interfaz de usuario para un fichero genérico: nodo-v.

El Servidor de Ficheros Virtuales • Interfaz de usuario para un fichero genérico: nodo-v. • Operaciones del fichero genérico: fechas, posición, … • Operaciones específicas: cada servidor de ficheros particular Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Flujo de datos en el Servidor de Ficheros Diseño de Sistemas Operativos Jesús Carretero

Flujo de datos en el Servidor de Ficheros Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Tablas de Datos del Servidor de Archivos Diseño de Sistemas Operativos Jesús Carretero y

Tablas de Datos del Servidor de Archivos Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Asignación Contigua • • Fichero: conjunto de bloques de disco contiguos Simple: 1 er

Asignación Contigua • • Fichero: conjunto de bloques de disco contiguos Simple: 1 er bloque + longitud / tamaño bloque Acceso aleatorio sencillo Problema 1: ficheros no pueden crecer -> buscar hueco nuevo > fragmentación externa • Problema 2: fragmentación -> búsqueda huecos muy difícil • Mapa lógico-físico: – num. bloque = posición / tamaño bloque – desplazamiento = posición MOD tamaño bloque • No se usa en sistemas operativos de propósito general. Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez -

Asignación Enlazada I • Fichero: lista enlazada (doblemente) de bloques de disco dispersos •

Asignación Enlazada I • Fichero: lista enlazada (doblemente) de bloques de disco dispersos • Acceso aleatorio costoso: muchos accesos a disco • Ejemplo: FAT de MS-DOS y OS/2 Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Asignación Enlazada II • No hay fragmentación externa, pero tiene la sobrecarga de los

Asignación Enlazada II • No hay fragmentación externa, pero tiene la sobrecarga de los bloques de enlaces • Mapa lógico-físico: – Bloque destino (D) = Posición / Tamaño bloque – Desplazamiento en el bloque = Posición MOD Tamaño bloque – Accesos: 1 er bloque en lista + D • Problema: recorridos hacia atrás: listas con enlaces dobles • Optimización: – Listas con grupos de bloques contiguos asociados a un fichero – Reducen el número de accesos hasta llegar al bloque, pero en el peor caso serían los mismos que sin optimizar Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Asignación Indexada I • • Fichero: índice ordenado de bloques de disco dispersos Necesita

Asignación Indexada I • • Fichero: índice ordenado de bloques de disco dispersos Necesita una tabla de índice Acceso aleatorio rápido No hay fragmentación externa, pero tiene la sobrecarga de los índices de bloques • Mapa lógico-físico: puntero a bloque destino – Bloque destino = Posición / Tamaño bloque – Desplazamiento en el bloque = Posición MOD Tamaño bloque – Posición en índice = Bloque destino * Tamaño puntero • Ejemplo: Nodo-i de UNIX Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Asignación Indexada II • Problema: hacen falta muchos bloques de índices -> muchos accesos

Asignación Indexada II • Problema: hacen falta muchos bloques de índices -> muchos accesos a disco. Ejemplo: – Bloque de 4 Kbytes y puntero de 4 bytes -> 1 Kíndice por bloque > 4 Mbytes tamaño fichero máximo. – Fichero 4 Gbytes -> 1 Kbloques de índices • Solución: índices de varios niveles. – Dos niveles: 1 Míndice -> 4 Gbytes – Tres niveles: 1 Gíndice -> 4 Tbytes • Problema: más niveles -> más accesos a disco, incluso para accesos pequeños. • Solución: esquema combinado (ejemplo: nodo -i de UNIX) Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Nodo-i de UNIX Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Nodo-i de UNIX Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

MFDT Windows NT • Problema nodo-i: siempre un acceso a disco, como mínimo, para

MFDT Windows NT • Problema nodo-i: siempre un acceso a disco, como mínimo, para traer datos. • Para ficheros pequeños, se podría evitar metiendo datos en el descriptor del fichero. Ejemplo: Registro MFT de Windows NT. • Problema: complica el mapa lógico-físico Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Implementación de Directorios • Entrada directorio: tamaño fijo (MS-DOS) o variable (UNIX) • Listas

Implementación de Directorios • Entrada directorio: tamaño fijo (MS-DOS) o variable (UNIX) • Listas lineales de nombres de ficheros con punteros a bloques de datos – fáciles de programar – costosas en tiempo de ejecución • Tablas con acceso aleatorio (hash): listas lineales con estructura de datos aleatorios – tiempo de búsqueda de directorios más pequeña – colisiones: dos nombres de ficheros pueden ir a la misma entrada aleatoria • Siempre se implementan basándose en ficheros Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Directorios en UNIX Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Directorios en UNIX Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Construcción del Árbol de Nombres Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Construcción del Árbol de Nombres Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Gestión de Espacio Libre I • Mapas de bits: Un bit por bloque (o

Gestión de Espacio Libre I • Mapas de bits: Un bit por bloque (o nodo-i). 0 libre, 1 ocupado – Espacio en disco: disk_size / (8 * block_size) – La asignación funciona bien si no está muy lleno el disco. En caso contrario: Fragmentación del mapa -> difícil buscar huecos grandes • Listas enlazadas de bloques libres: simples o dobles. – No hay fragmentación en la lista – Es difícil, y lento, buscar espacio contiguo – Optimización: listas de grupos de bloques libres Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Gestión de Espacio Libre II • Los mapas de bits son más populares actualmente

Gestión de Espacio Libre II • Los mapas de bits son más populares actualmente • Es necesario proteger: – Los punteros a las listas de recursos – Los mapas de bits • Deben estar en disco • Las copias en disco y en memoria pueden diferir -> escritura inmediata a disco • Los mapas de recursos están en una especial del sistema de ficheros y no cuentan como bloques de datos • Los bloques de los mapas están contiguos. La dirección de sus primeros bloques se guarda en el superbloque Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Incremento de Prestaciones • La eficiencia depende de: – los algoritmos de asignación de

Incremento de Prestaciones • La eficiencia depende de: – los algoritmos de asignación de ficheros y directorios – el tipo de datos que hay en los descriptores de ficheros y directorios – la estructura del sistema de ficheros • Mecanismos de incremento de prestaciones – Cache de nombres y de bloques: últimos datos accedidos se guardan en memoria – Lectura adelantada para optimizar accesos secuenciales – Usar discos RAM para evitar accesos a discos (por ejemplo /proc) Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

La Cache de Bloques • Almacén de bloques de disco que se mantiene en

La Cache de Bloques • Almacén de bloques de disco que se mantiene en memoria • Estructura: lista hash con información de bloques y punteros a los datos • Tamaño máximo limitado por la memoria que ocupa. • Todos los accesos a ficheros pasan por la cache: – Lectura: ¿estan en cache? • Si -> copiar a usuario • No-> leer de disco y copiar a usuario • Política de reemplazo: LRU, MRU, FIFO, hash…. LRU popular • Antes de reemplazar bloques sucios hay que escribir a disco: – delayed-write: escribir cada n segundos – write-through: escribir inmediatamente (mapas, metadatos, etc. ) Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Flujo de Datos con Cache de Bloques Diseño de Sistemas Operativos Jesús Carretero y

Flujo de Datos con Cache de Bloques Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Fiabilidad y Recuperación • La perdida de un sistema de ficheros es muy grave

Fiabilidad y Recuperación • La perdida de un sistema de ficheros es muy grave y, muchas veces, no se puede recuperar. • Solución: – Copias de respaldo. • Volcar a discos, cintas, . . . • Totales e incrementales • Políticas de copia de respaldo – Almacenamiento con redundancia: • Discos espejo, RAID, replicación, …. • Mucha seguridad: dispositivos en instalaciones aisladas • Comprobaciones de consistencia (fsck) de mapas de recursos, asignación de descriptores y entradas de directorios. Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez

Recuperación • Un sistema de ficheros puede estar incoherente. • Existen aplicaciones como fsck

Recuperación • Un sistema de ficheros puede estar incoherente. • Existen aplicaciones como fsck o scandisk que comprueban el SF, lo dejan coherente y, a veces, recuperan la información perdida. Diseño de Sistemas Operativos Jesús Carretero y Fernando Pérez