Gestión de archivos Secciones Tanenbaum: 6.1.2 6.1.5 6.2.1 6.2.4 6.3.1 6.3.5 6.4 1 Gestión de archivos Generalidades y objetivos Estructura de archivos: secuencia de bytes, secuencia de registros, o árbol Tipos de archivos: normales (texto/binarios), de directorio, especiales Acceso a los : secuencial/aleatorio Atributos: acceso, protección, tamaño, tipo, etc. 2
Gestión de archivos Los archivos son el elemento central de la mayoría de las aplicaciones Tienen vida fuera de cualquier aplicación concreta El SO tiene que dar un soporte básico para la gestión de archivos 3 Objetivo general Proporcionar al usuario o a la aplicación acceso transparente archivos El programador no necesita: desarrollar Sw de gestión de archivos conocer los detalles del Hw o de la organización lógica empleada por el sistema Independencia del dispositivo 4
Objetivos particulares Cumplir con las necesidades de gestión de y con los requerimientos del usuario (Ej. tamaño de los ficheros, permisos, etc...) Garantizar que de archivos sean válidos Optimizar rendimiento (tiempo de acceso a ficheros, número de ficheros, etc ) Ofrecer soporte de E/S para la variedad de tipos de dispositivos de almacenamiento (cinta, disco magnético, disco óptico, etc.) a través de un conjunto estándar de rutinas de interfaz de E/S. Minimizar o eliminar la posibilidad de pérdida o destrucción de (copias de seguridad). 5 Proporcionar soporte de E/S para múltiples usuarios. Visión del usuario Nombres de archivo Estructura de archivos Tipos de archivos Acceso a archivos Atributos de archivos 6
Estructura de archivos (6.1) Qué ve el SO? alce foca pato cerdo cisne delfín gato león oso hiena ibis loro Sucesión de bytes (*) Sucesión de registros Árbol (*) El significado de los mismos depende del programa de usuario 7 Tipos de archivos Archivos normales: contienen info de usuario Texto (ASCII, editables e imprimibles, líneas con salto de línea/retorno de carro) Binarios Directorios: mantienen estructura del sistema de archivos Especiales Caracteres (para modelar dispositivos) s (para modelar discos) 8
Acceso a en archivos Acceso secuencial Uno a uno, hacia delante Se puede rebobinar Acceso directo (aleatorio) Read (dónde, cuánto) Seek (dónde)+ Read (cuánto) Un archivo puede tener un tipo definido en el momento de creación, o ser siempre aleatorio 9 Atributos de archivos Acceso y protección Dueño, autorizados, clave, etc. Tipo Oculto, sólo lectura, sistema, temporal, etc. Tiempos Acceso, creación, modificación Tamaño Actual, máximo (mainframes antiguos) 10
Directorios (6.2) Necesarios para controlar y organizar los archivos Ofrece traducción entre nombres de archivo y archivos propiamente dichos En muchos sistemas son archivos (especiales) Organización Un solo nivel Dos niveles Jerárquicos Nombres de ruta (path) 11 Directorios de un solo nivel Lista de entradas, una para cada archivo Puede representarse con un simple archivo secuencial, con el nombre del archivo haciendo las veces de clave No ofrece ayuda en la organización de los archivos Obliga al usuario a tener cuidado de no usar el mismo nombre para dos archivos diferentes Búsquedas lentas 12
Directorios de dos niveles Un directorio para cada usuario y un directorio maestro. El directorio maestro contiene una entrada para cada directorio de usuario Cada directorio de usuario es una simple lista de los archivos del usuario Todavía no ofrece a los usuarios ayuda alguna para estructurar sus conjuntos de archivos Implica la necesidad de identificar usuarios Pueden accederse archivos de otros usuarios 13 Directorios jerárquicos Existe un directorio maestro que contiene un número determinado de directorios de usuario Cada uno de estos directorios puede tener a su vez subdirectorios y archivos como entradas Se pueden tener varios archivos con el mismo nombre de archivo mientras estén en directorios distintos 14
Directorio maestro 15 Nombres de ruta Separadores: / \ : > (SO) Nombres de ruta absoluta Nombres de ruta relativa Relacionado con el concepto de directorio actual o directorio de trabajo Las referencias a los archivos son relativas al directorio de trabajo Nombres especiales:. y.. 16
Implementación de Sistemas de Archivos (6.3) - Índice Organización del sistema de archivos Implementación de archivos Asignación contigua. Asignación por lista enlazada. Nodos-i Implementación de directorios Archivos compartidos Administración de espacio en disco 17 Organización del sistema de archivos Casi todos los discos pueden dividirse en particiones: Sistema de archivos independiente en cada una. Sector 0 disco: registro maestro de arranque (MBR: Master Boot Record) Sirve para arrancar el ordenador Contiene tabla de particiones (con direcciones inicial y final de cada partición) Una de ellas marcada como activa Al arrancar ordenador, la BIOS lee MBR del disco y lo ejecuta: localiza partición activa ejecuta su bloque de arranque (el 1º de la partición), cargando 18 el SO contenido en esa partición
Superbloque La organización de una partición de disco varía Casi todos los sistemas de archivos contienen al principio alguna forma de superbloque: Contiene parámetros clave sobre el sistema de archivo: Tipo de sistemas de archivos (FAT, NTFS,...). Número de bloques, tamaño de bloque Información administrativa Se transfiere del disco a la memoria al arrancar el sistema 19 Implementación de archivos Qué bloques de disco corresponden a cada archivo? Asignación contigua Asignación por lista enlazada Asignación por lista enlazada con índice en memoria (FAT) Nodos-i 20
Implementación de archivos Asignación contigua Cada archivo almacenado en serie contigua de bloques de disco Ventajas: Fácil implementar (saber inicio+nºbloques) Alto rendimiento (leer todo seguido) Desventajas: Fragmentación de disco (externa) Complicada asignación dinámica (hay que conocer tamaño total del archivo en el futuro) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 directorio archivo inicio longitud cuenta 0 2 prueba 14 3 correo 19 4 file 6 2 21 Implementación de archivos Asignación por lista enlazada físico 0 1 2 Archivo A 3 4 0 5 22 1 6 14 16 19 físico 0 1 Archivo B 2 0 3 7 3 11 10 22
Implementación de archivos físico 0 1 2 Archivo A 3 4 0 5 22 1 6 14 16 19 próximo bloque 0 1 6 2 3 4 5 14 6 7 8 9 10 11 12 13 1416 15 1619 17 18 19-1 20 21 22 1 23 directorio archivo inicio final arch A 22 19 23 Implementación de archivos Ventajas: Evita fragmentación externa. Interna sólo en el último bloque No requiere que se defina el tamaño del archivo en el momento de su creación. Inconvenientes: Acceso directo muy lento Requiere espacio para punteros => los archivos ocupan más espacio que su tamaño. Solución: asignar espacio por clusters de bloques y no por bloques (a costa de fragmentación interna) Fiabilidad: Si se produce un fallo Sw o Hw, y se obtiene un puntero equivocado, todos los accesos posteriores serán equivocados. Soluciones: Listas doblemente enlazadas o que cada bloque contenga su número de bloque relativo (a costa empeorar el aprovechamiento del espacio de disco) 24
Implementación de archivos Asignación por lista enlazada con índice en memoria: Resuelve problemas de asignación enlazada: saca apuntadores de los bloques de disco y los almacena en una tabla-imagen del disco llamada tabla de asignación de archivos o FAT (File Allocation Table). La tabla contiene todos los punteros en una zona de disco al principio de cada partición, y está indexada por el número de bloque Para acelerar la búsqueda, se carga copia de la tabla en memoria (problemático si el disco es grande) 25 Implementación de archivos FAT Para discos de 20Gb necesitamos 80 Mb de tabla! directorio archivo inicio arch A 22 0 1 2 6 14 16 22 FAT 6 14 16-1 1 26
Implementación de archivos Nodos-i EdD. para cada fichero: Contiene atributos. Direcciones en disco de los bloques. Atributos del archivo Dir. del bloque 0 Dir. del bloque 1... Dir. del bloque 7 Dir. del bloque de apuntadores de disco que contiene direcciones de bloques adicionales 27 Implementación de archivos Nodos-i Solo se necesita ocupar en memoria el espacio para los nodos-i de los k ficheros abiertos (k x n) => espacio necesario proporcional a cantidad de ficheros abiertos Ventajas de acceso directo rápido y NO tiene los problemas se seguridad de las listas enlazadas Tampoco tiene los problemas de fragmentación externa de la asignación contigua 28
Implementación de archivos Nodos-i en UNIX modo propietarios marcas de tiempo tamaño de bloque cuenta bloques directos. indirecto sencillo indirecto doble indirecto triple......... 29 Implementación de directorios Función principal: establecer correspondencia entre nombre de archivo e información necesaria para localizar los. Dirección del archivo (asignación contigua) Nº primer nodo (listas enlazadas) Nº i-nodo Atributos y direcciones de bloques en la entrada del directorio, junto con el nombre de archivo (MS-DOS/Windows) En la entrada de directorio solo se pone el nombre y un apuntado al nodo-i (UNIX). Nodo-i contiene resto de información 30
Implementación de directorios Nombres de tamaño máximo (y pequeño). Nombres de tamaño largo: Reservar tamaño máximo fijo => desperdicio Incorporados en la entrada (tras porción fija común con otros atributos) => problemas de fragmentación (quedan huecos de tamaño variable) y limitaciones de posición En una estructura de heap: => se aprovechan mejor los huecos => Implica administración. 31 Implementación de directorios Si el directorio es grande, una búsqueda secuencial de nombres puede ser demasiado lenta Alternativa: tabla de hash También se puede utilizar una caché de nombres 32
Archivos compartidos ABC Enlaces duros Ambas entradas apuntan al mismo nodo-i. Enlaces simbólicos La segunda (y sucesivas) entradas sólo contienen el nombre del fichero original. 33 Administración del espacio 1. Tamaño del bloque s grades tienden a desperdiciar mucho espacio de disco s pequeños a ralentizar el acceso a los Compromiso entre la optimización de memoria y la velocidad de acceso a los. Tamaños habituales: 512, 1K ó 2K bytes 2. Registro de bloques libres Mediante lista ligada de bloques de disco (búsqueda sencilla) Mediante mapas de bits (ocupa menos espacio) 3. Disk Quotas El i-nodo de cada archivo abierto contiene un apuntador a una tabla de cuotas del usuario que abrió el fichero. La tabla contienen los límites flexibles y estrictos de número de bloques y archivos permitidos. 34