1 1-Archivos y Sistemas de Archivos Una de las partes más importantes de un Sistema Operativo es el Sistema de Archivos. Proporciona las abstracciones de recursos asociados con el almacenamiento secundario, lo cual permite al usuario crear colecciones de datos llamados Archivos, con propiedad como: Existencia a largo plazo: los Archivos se almacenan en disco u otro almacenamiento para luego operar con ellos. No desaparece cuando un usuario se desconecta. Compartible entre procesos: los Archivos tienen nombres, los cuales son utilizados para compartir, con cierto permiso de acceso. Estructura: dependiendo del sistema de Archivos, un Archivo puede tener cierta estructura interna que es conveniente para aplicaciones particulares. Un sistema de Archivos no solo proporciona una manera de almacenar datos, sino también una colección de funciones que se pueden llevar a cabo sobre ellos, las cuales son: ● Crear: se define un nuevo Archivo y se posiciona dentro de la estructura. ● Borrar: elimina un Archivo y lo destruye. ● Abrir: un Archivo existente se declara abierto por un proceso, permitiéndole al proceso realizar funciones sobre éste. Cerrar: un determinado proceso cierra el Archivo, de forma que no puede volver a realizar funciones sobre dicho Archivo., salvo que otro proceso lo vuelva a abrir. Leer: un proceso lee una porción o todos los datos del Archivo. Escribir: un proceso actualiza, añadiendo nuevos datos, que expanden el tamaño del Archivo. Un sistema de Archivos mantiene un conjunto de atributos asociados, incluyendo el propietario, tiempo de creación, tiempo de última modificación, privilegios de acceso, etc. 1.1-Estructura de un Archivo Normalmente aparecen cuatro términos: Campo Es el elemento básico de los datos. Un campo individual contiene un único valor. Se caracteriza por su longitud y tipo de datos (ASCII, cadena de caracteres). 2 Dependiendo del diseño del Archivo, la longitud puede ser fija o variable. En este ultimo está formado comúnmente por dos o tres subcampos valor real, nombre y longitud) Registro Es una colección de campos relacionados. Dependiendo de su diseño, pueden ser de longitud fija o variable. Un registro será de longitud variable si algunos de sus campos tienen longitud variable o si el número de campos puede variar. Archivo Colección de campos similares. Se trata como una entidad única por parte de los usuarios y aplicaciones. Se los puede referenciar por su nombre. Los Archivos se pueden crear y borrar. En un sistema compartido, el acceso a los Archivos puede ser permitido o denegado a los usuarios y programas. Base de datos Es una colección de datos relacionados. Los aspectos esenciales de una base de datos son que la relación que exista entre los elementos de datos sea explicita y que se diseña para su uso por parte de varias aplicaciones diferentes. Esta formada por uno o mas tipos de Archivos. Comúnmente hay un sistema de gestión de base de datos separadas del Sistema Operativo. Las operaciones que deben soportar los Archivos incluyen: * Obtener –todos: obtener todos los registros de un Archivo. Esta operación se requerirá por aplicaciones que deban procesar toda la información de un Archivo de una vez. Esta operación se conoce como procesamiento secuencial, porque todos los registros se acceden en secuencia. * Obtener-uno: esta operación solicita un único registro. Obtener-siguiente: esta operación solicita el siguiente registro. En algunas secuencias con respecto al registro mas recientemente leído. * Obtener- anterior: en este caso el registro al que se accede es el anterior al mas reciente leído. * Insertar-uno: insertar un nuevo registro en el Archivo. Puede ser necesario que el nuevo registro encaje en una posición específica para preservar la secuencia. * Borrar-uno: borrar un registro existente. Actualizar-uno: obtener un registro, actualizar uno o mas de sus campos y rescribir el registro actualizado. * Obtener-varios: obtener varios registros. Obtener todos los registros acerca de un cierto conjunto de criterios. Se debe destacar que no todos los sistemas de Archivos utilizan el conjunto de estructuras nombradas anteriormente. 3 1.2-Sistema de Gestión de Archivos. Es aquel conjunto de software de sistema que proporciona servicio a los usuarios y aplicaciones en el uso de Archivos. Comúnmente la única forma en la que un usuario o aplicación pueda acceder a los Archivos es a través del sistema de gestión de Archivos. Proporciona al sistema una forma consistente y bien definida de controlar su recurso más importante. Los objetivos de un sistema de gestión de Archivos son los siguientes: ▪ Satisfacer las necesidades de gestión de datos y requisitos del usuario, incluyendo el almacenamiento y la capacidad de llevar a cabo las operaciones anteriormente mencionadas. ▪ Garantizar que los datos del Archivo son validos. ▪ Optimizar el rendimiento, por parte del sistema en términos de productividad y del usuario en el tiempo de respuesta. ▪ Proporcionar soporte de E/S a una variedad de tipos de dispositivos de almacenamiento, como así también un conjunto de estándar de rutinas de interfaces de E/S a los procesos, soporte de E/S a múltiples usuarios en el caso de sistemas multiusuarios. 1.3-Arquitectura de un Sistema de Archivos Distintos sistemas se organizan de forma distinta, pero esta organización es representativa. Analizaremos la organización de software típica que es la siguiente: En el nivel mas bajo, los manejadores de dispositivos se comunican con los dispositivos de periféricos o controladores. Un controlador de dispositivo es el responsable de iniciar las operaciones de E/S y finalizarlo. El siguiente nivel se denomina sistema de Archivos básico, o nivel de E/S físico. Este nivel se encarga de la colocación de aquellos bloques del dispositivo de almacenamiento secundario y el buffering de dichos bloques en memoria principal. El supervisor de E/S se encarga de todas las iniciaciones y finalizaciones de E/S. En este nivel, las estructuras de control tratan con los dispositivos de E/S, la planificación y el estado de los Archivos. Selecciona el dispositivo en el cual se va a llevar a cabo las operaciones, como así también de la planificación de disco y cinta para optimizar el rendimiento. A este nivel se asignan los buffers de E/S y la memoria secundaria. 4 La E/S lógica permite a los usuarios y a las aplicaciones acceder a los registros. Esta capa proporciona una capacidad de E/S de propósito general, a nivel de registros y mantiene datos básicos sobre Archivos. El nivel del sistema más cercano al usuario frecuentemente denominado métodos de acceso. Proporciona una interfaz entre las aplicaciones y sistemas de Archivos que contienen datos. Todos los niveles se consideran normalmente parte del sistema operativo. Diferentes métodos de acceso reflejan diferentes estructuras de Archivos y distintas formas de acceder y procesar los datos, los cuales se describen en la siguiente sección. 1.4-Funciones de Gestión de Archivos Los usuarios y programas de aplicaciones interaccionan con el sistema de Archivos por medio de mandatos para crear y borrar Archivos, realizar operaciones sobre los Archivos. Antes de realizar cualquier operación, el sistema de Archivos debe identificar y localizar el Archivo seleccionado. Esto requiere el uso de algún tipo de directorio que se utilice para describir la ubicación de todos los Archivos y sus atributos. Las operaciones básicas que puede realizar un usuario o aplicación se realizan a nivel de registro. El usuario o aplicación ve el Archivo como una estructura que organiza registros. Por tanto para traducir los mandatos de usuario en mandatos de manipulación de Archivos específicos, debe emplearse el método de acceso apropiado para esta estructura de Archivos. La E/S se realiza a nivel de bloque. Los registros de un Archivo se deben convertir en bloque en salida y volver a convertir es estructura de registro después de la entrada. Para dar soporte de bloque de E/S se necesitan varias funciones. Se debe gestionar el almacenamiento secundario así como conocer que bloques están disponibles para nuevos Archivos y utilizados en Archivos existentes. Adicionalmente se deben planificar las peticiones de E/S de bloques individuales. Tanto la planificación de disco como la asignación de Archivos están relacionadas con la optimización del rendimiento. Estas funciones necesitan considerarse simultáneamente. La optimización dependerá de la estructura de los Archivos y los patrones de acceso. De acuerdo a esto, desarrollar un sistema de gestión de Archivos óptimo. 5 El resto de este capítulo describe algunos de los aspectos de lo diseños. Se comienza con una discusión de las organizaciones de los Archivos y los métodos de acceso. El sistema operativo, en nombre del sistema de gestión de Archivos, gestiona frecuentemente los directorios. Los temas restantes tratan sobre los aspectos físicos de E/S de gestión de Archivos y son tratados apropiadamente como aspectos de diseño de sistemas operativos. Hay temas relacionados con la asignación de Archivos en almacenamiento secundario y la gestión de almacenamiento secundario libre. 2-Organización y Acceso a los Archivos Se utiliza el término organización de Archivo para referirse a la estructura lógica de los registros germinados por la forma que acceden. La organización física del Archivo en almacenamiento secundario depende de la estrategia de bloques de asignación de Archivos. Para escoger una organización de Archivos, son importantes varios criterios: ● Tiempo de acceso corto. ● Facilidad de actualización. ● Economía de almacenamiento. ● Mantenimiento sencillo. ● Fiabilidad. La prioridad relativa de estos criterios dependerá de las aplicaciones que utilizarán el Archivo. Por ejemplo, si un Archivo se va a procesar sólo en lotes, con acceso a todos los registros cada vez, entonces el acceso rápido a un único registro no es un requisito. Un Archivo almacenado en CD-ROM nunca se actualizará, y por tanto la facilidad de actualización no es un aspecto a tener en cuenta en este caso. Estos criterios pueden entrar en conflicto. Por ejemplo, para facilitar la economía de almacenamiento, debería haber mínima redundancia en los datos. Un ejemplo lo constituye el uso de índices. El número de organizaciones de Archivos alternativas que han implementado o simplemente propuesto es inmanejablemente largo, incluso para un libro dedicado a los sistemas de Archivos. Se describen cinco organizaciones fundamentales. La mayoría de las estructuras utilizadas en los sistemas reales cae dentro de una de estas 6 categorías y se puede implementar con una combinación de estas organizaciones. Las cinco organizaciones, de las cuales las cuatro primeras se muestran: ▪ La pila. ▪ El Archivo secuencial. ▪ El Archivo secuencial indexado. ▪ El Archivo indexado. ▪ El Archivo de acceso directo o hash. La Pila La forma menos complicada de organización de Archivos se puede denominar pila. Los datos se almacenan en el orden en el que llegan. Cada registro está formado por un conjunto de datos. El propósito de la pila es simplemente acumular la masa de datos y guardarlos. Los registros podrían tener diferentes campos o similares campos en diferentes órdenes. Por tanto, cada campo debe ser autodescriptivo, incluyendo el nombre del campo y el valor. La longitud de cada campo debe ser implícitamente indicada por delimitadores, explícitamente incluida como un subcampo o conocida por defecto para cada tipo de campo. Dado que no hay estructura en este tipo de Archivo, el acceso a los registros se hace mediante búsqueda exhaustiva. Es decir, si se desea encontrar un registro que contiene un campo particular con un valor particular, es necesario examinar cada registro en la pila hasta encontrar el registro deseado o terminar de recorrer todo el Archivo. Los Archivos Pila se utiliza cuando los datos se recogen y almacenan antes del procesamiento o cuando los datos no son fáciles de organizar. Este tipo de Archivo utiliza el espacio adecuadamente cuando los datos varían en tamaño y escritura, es perfectamente adecuado para búsquedas exhaustivas y fáciles de actualizar. Sin embargo, más allá de estos usos limitados, este tipo de Archivo es inadecuado para la mayoría de las aplicaciones. 2.1-El Archivo Secuencial La forma más común de estructura de Archivos, es el Archivo secuencial. En este tipo de Archivos, se utiliza un formato fijo para los registros. Todos los registros son de igual tamaño y están compuestos por el mismo número de campos de longitud fija en un orden específico. Debido a que la longitud y la posición de cada campo son conocidas, solo se necesita almacenar los valores de los campos; el nombre y longitud de cada campo son atributos de de la estructura del Archivo. 7 Un campo particular normalmente el primer campo de cada registro, se denomina campo clave. El campo clave identifica de forma única el registro; por lo tanto, los valores de la clave de diferentes registros son siempre diferentes, más aún, los registros se almacenan en secuencia según la clave: orden alfabético para una clave de texto y orden numérico para una clave numérica. Los Archivos secuenciales se utilizan normalmente en lotes y son generalmente óptimos para dichas aplicaciones cuando implican el procesamiento de todos los registros (por ejemplo, la aplicación bancaria o de nomina). La organización de Archivo secuencial es el único que se almacena fácilmente en cinta y en disco. Para aplicaciones interactivas que suponen consultas y/o actualizaciones de registros individuales, el Archivo secuencial proporciona un pobre rendimiento. Los accesos requieren una búsqueda en el Archivo para encontrar una clave, si el Archivo entero, o una porción grande del Archivo, se pueden llevar a memoria principal simultáneamente, se pueden utilizar técnicas de búsqueda más eficiente. No obstante, acceder a un registro en Archivo secuencial grande implica un procesamiento y retrasos considerables. Las adicciones a los Archivos también presentan problemas. Típicamente, un Archivo secuencial se almacena en una orden secuencial simple de los registros dentro de los bloques. Es decir, la organización física del Archivo en cinta o discos encaja directamente con la organización lógica del Archivo. En este caso, el procedimiento normal es colocar nuevos registros en un Archivo de pila separado, denominado Archivo registro o Archivo de transacciones, periódicamente, un sistema de actualización lleva a cabo la mezcla entre el registro y e Archivo maestro para producir un nuevo Archivo en la secuencia de clave correcta. Una alternativa de organizar el Archivo secuencial físicamente como una lista enlazada. Uno o más registros se almacenan en cada bloque físico. Cada bloque del disco contiene un puntero al siguiente bloque. La inserción de nuevos registros implica una manipulación de punteros, pero no requiere que los nuevos registros ocupen una posición de bloque físico específico. Por tanto, se obtiene ventajas de incrementar el procesamiento y la sobrecarga. 2.2-El Archivo Secuencial Indexado Una técnica popular para eliminar las desventajas del Archivo secuencial es utilizar los Archivos secuenciales indexados. El Archivo secuencial indexado mantiene las características clave del Archivo secuencial: los registros se organizan en secuencia, basándose en un campo clave. Dos características se añaden: un índice al Archivo que da soporte al acceso aleatorio y un Archivo de desbordamiento. El índice 8 proporciona una capacidad de búsqueda para alcanzar rápidamente la vecindad de un registro deseado. El Archivo de desbordamiento es similar al Archivo registro, utilizando con un Archivo secuencial, pero se integra de tal forma que en un registro en el Archivo de desbordamiento se localiza mediante un puntero desde su registro predecesor. En la estructura secuencial indexada más sencilla, se utiliza un único nivel de indización. El índice en este caso es un Archivo secuencial simple. Cada registro del Archivo índice está formado por dos campos: un campo clave que es el mismo que el campo clave del Archivo principal y un puntero al Archivo principal. Para encontrar un campo especifico, se busca el índice que contenga el mayor valor clave que sea igual o preceda al valor de clave deseado. La búsqueda continúa en el Archivo principal en la ubicación indicada por el puntero. Para comprobar la efectividad de esta técnica, considere un Archivo secuencial con 1 millón de registros. Buscar un valor clave particular requerirá medio millón de accesos a los registros de media. Supóngase que se construye un índice que contiene 1000 entradas, con las claves del índice más o menos distribuidas uniformemente en el Archivo principal. Encontrar un registro llevará una media de 500 accesos al Archivo índice seguido por 500 accesos al Archivo principal. La longitud de búsqueda media se reduce de 500.000 a 1000.7 Las adiciones al Archivo se gestionan de la siguiente forma: cada registro del Archivo principal contiene un campo adicional no visible a la aplicación que es un puntero al Archivo de desbordamiento. Cuando se inserta un nuevo registro en el Archivo, se añade al Archivo de desbordamiento. Si el registro inmediatamente precedente esta a su vez en el Archivo de desbordamiento, entonces se actualiza el puntero de dicho registro. Al igual que el Archivo secuencial, el Archivo secuencial indexado es ocasionalmente mezclado con el Archivo de desbordamiento en modo batch. El Archivo secuencial indexado reduce enormemente el tiempo requerido para acceder a un único registro, sin sacrificar la naturaleza secuencial del Archivo. Para procesar el Archivo entero secuencialmente, los registros del Archivo principal se procesan en secuencia hasta que se encuentra un puntero al Archivo de desbordamiento; a continuación, se accede de forma continua en el Archivo de desbordamiento hasta que se encuentra un putero nulo, momento en el cual se continua accediendo al Archivo principal desde el lugar en que se dejo. Para proporcionar incluso mayor eficiencia en el acceso, se pueden utilizar múltiples niveles de indexación. A continuación, el menor nivel de indexación se trata como un Archivo secuencial y se crea un Archivo índice de mayor nivel para dicho Archivo. Se construye un índice de bajo nivel con 10000 entradas. Entonces se puede construir un 9 índice de mayor nivel por cada 100 entradas. La búsqueda comienza en el índice de mayor nivel (longitud media=50 accesos) para encontrar un punto de entrada en el Archivo principal, en el cual se busca de nuevo. Por lo tanto, la longitud media de búsqueda se ha reducido de 500000 a 1000, y 1000 a 150. 2.3-Archivo Indexado El Archivo secuencial indexado elimina una de las limitaciones del Archivo secuencial: el procesamiento efectivo se limita a las búsquedas que se basan en un único campo del Archivo. Cuando es necesario buscar por alguno otro atributo que no sea el campo clave, ambas formas de Archivos secuenciales son inadecuadas. En algunas aplicaciones, esta flexibilidad es deseable. Para lograr esta flexibilidad, se necesita una estructura que emplea múltiples índices, uno por cada tipo de campo que puede estar sujeto a una búsqueda. En el Archivo indexado general, se abandonan los conceptos de secuencialidad y clave única. Los registros se exceden solo a través de sus índices. El resultado es que no hay restricción en la colocación de los registros siempre que al menos un puntero en un índice se refiera a dicho registro. Además, se pueden emplear registros de longitud variable. Se utilizan dos tipos de índices. Un índice exhaustivo contiene una entrada por cada registro del Archivo principal. Para facilitar la búsqueda, el índice a su vez está organizado como un Archivo secuencial. Un índice parcial contiene entradas a registros donde el campo de intereses existe. Con registro de longitud variable, algunos registros no contendrán todos los campos. Cuando se añade un nuevo registro al Archivo principal, todos los Archivos índices deben actualizarse. Los Archivos índices se utilizan frecuentemente en aplicaciones donde la temporización de la información es crítica y donde los datos casi nunca se procesan exhaustivamente. Ejemplo de este tipo de aplicación son los sistemas de reservas de aerolíneas y los sistemas de control de inventario. 2.4-Archivo de Acceso Directo o Hash El Archivo de acceso directo o hash, explota la capacidad encontrada en los discos para acceder directamente a cualquier bloque de una dirección conocida. Al igual que a los Archivos secuenciales y secuenciales indexados, se requiere una clave para cada registro. Sin embargo, en este tipo de Archivos no existe el concepto de ordenaron secuencial. El Archivo directo hace uso de una función hash sobre un valor clave. Los Archivos directos se utilizan frecuentemente cuando requiere un acceso muy rápido, los registro son de tamaño fijo y los registros se acceden un en uno. Ejemplo de este tipo de estructura son los directorios, las tablas de precios, los inventarios y las listas de nombres. 10 3-Directorios Los directorios contienen información sobre los Archivos, incluyendo atributos, ubicación y propietario, Gran parte de esta información y especialmente la relativa al almacenamiento la gestiona el sistema operativo. El directorio es propiamente dicho un Archivo poseído por el sistema operativo y accesible a través de diversas rutinas de gestión de Archivo. Los elementos de información de un directorio de Archivo son: Nombre del Archivo, Tipo de Archivo, Organización del Archivo, Volumen, Directorio de Comienzo, Tamaño Usado, Tamaño Asignado, Propietario, Información de Acceso, Acciones Permitidas, Fecha de Creación, Identificación del Creador, Fecha de Ultima Lectura Identidad de Ultimo Lector, Fecha de Ultima Modificación, Identificación del Ultimo Modificador, Fecha de Ultima Copia de Reserva, Utilización Actual. Para entender los requisitos de estructura de Archivo, es necesario tener en cuenta las operaciones que pueden realizarse con un directorio son: Buscar, Crear Archivos, Borrar Archivos, Listar Directorios y Actualizar directorios. La manera de Almacenar la información difiere mucho entre distintos sistemas, puede guardarse en un registro de cabecera asociado al Archivo, lo cual reduce la cantidad de espacio necesario para el directorio o puede guardarse parte en la memoria principal para mejorar la velocidad. 3.1-Estructuras Una Lista de entradas, una para cada Archivo esta estructura puede representarse con un simple Archivo secuencial, con el nombre del Archivo haciendo las veces de clave. Pero esta estructura no es adecuada cuando múltiples usuarios comparten el sistema e incluso para un solo usuario con muchos archivos. Esquema de dos niveles: Existe un directorio de usuario y un directorio maestro, el directorio maestro dispone de una entrada para cada directorio de usuario, incluyendo una dirección e información de control de acceso. El directorio usuario es una lista de los archivos del usuario, en este los nombres de los archivos deben ser únicos. Este esquema no ofrece a los usuarios ayuda alguna para estructurar sus conjuntos de archivos. Directorio Jerárquico o Estructurado en Árbol: el enfoque más sencillo, almacena cada directorio como un Archivo secuencial. Con un directorio maestro que contiene un número determinado de directorios de usuarios y cada uno de estos directorios de usuarios pueden tener a su vez subdirectorios y archivos como entradas y esto se cumple en cualquier nivel. (Fig. 3.1).Si los directorios contuvieran un gran numero de 11 entradas, dicha organización llevaría a unos tiempo de búsqueda innecesariamente largos. Es preferible una estructura hash. 3.2-Nombrado Los usuarios necesitan poder referenciar un Archivo mediante un nombre simbólico. Cada Archivo en el sistema debe tener un nombre único a fin de que las referencias al mismo no sean ambiguas. Por otro lado es inaceptable, es inaceptable obligar a que los usuarios proporcionen nombres únicos, especialmente en un sistema compartido. El uso de un directorio estructurado en forma de árbol minimiza la dificultad de asignar nombres únicos. Cualquier Archivo del sistema se puede localizar siguiendo un camino desde el directorio raíz o maestro y bajando por las ramas hasta alcanzar el Archivo. El conjunto de nombres de directorios, finalizando en el nombre del Archivo, constituye un nombre de camino para el Archivo. Aunque los nombres de caminos facilitan la selección de los nombres de Archivo, sería complicado para el usuario tener que referencia a un Archivo. Normalmente, un usuario interactivo o un proceso esta asociado con un directorio actual, que se suele denominar directorio de trabajo. Los Archivos se pueden referenciar en forma relativa al directorio de trabajo. 4 -Compartición de Archivos En los sistemas multiusuarios se debe permitir a los usuarios compartir los Archivos. Por lo cual hay que tener en cuenta: -Los derechos de acceso -La gestión de acceso simultaneo 4.1 Derechos de Acceso El sistema de Archivos debe tener una herramienta de fácil manejo para el compartimiento de Archivos y conjunto de opciones para el control del acceso a cada Archivo, a los usuarios o grupos de usuarios se les dan algunos derechos de acceso a cada Archivo, por lo que se han usado varios de ellos. Los derechos de acceso a un Archivo específico que se puede asignar a un usuario son: ▪ Ninguno: no puede conocer la existencia del Archivo, ni acceder al mismo. Para ello al usuario no se le prohíbe leer el directorio que incluya al Archivo. ▪ Conocimiento: se le permite señalar que existe el Archivo y quien es su propietario. El usuario está apto para pedir derecho de accesos adicionales al propietario. 12 ▪ Ejecución: se le permite cargar y ejecutar un programa pero no copiarlo. Un ejemplo de esto son los programas comerciales que cumplen con la restricción. ▪ Lectura: se le permite leer, ejecutar, y copiar el Archivo, algunos sistemas hacen diferencia entre visualizar y copiar. Para visualizar se puede mostrar el contenido del Archivo al usuario, pero no cuenta con los medios para copiarlo. ▪ Adición: se le permite sumar datos al Archivo casi siempre al final, se le prohíbe modificar o borrar el contenido del Archivo la adición es útil en recopilación de datos de varias fuentes. ▪ Actualización: se permite modificar dar de alta o baja datos del Archivo. Este derecho incluye la escritura del Archivo al comienzo, la reescritura entera, o en parte y la baja de todos o algunos de los datos. Hay sistema que diferencian varios grados de actualización. ▪ Cambio de protección: se le permite cambiar los derechos de acceso cedidos a otros usuarios. Este derecho es retirado solo por el propietario, aunque hay sistemas que permiten al propietario ceder este derecho a otros usuarios. Para evitar el abuso de uso del derecho el propietario puede especiar que derechos se pueden cambiar por el poseedor de este derecho. ▪ Borrado: se le permite borrar el Archivo del sistema de Archivo. Este derecho puede crear una Jérica, cada una incluyendo a todos los que le precede. Si un usuario adquiere un derecho también adquiere los que estén antes que él. Generalmente las personas que crean un Archivo son designadas como propietario que cuenta con todos los derechos de acceso y puede ceder derechos a los otros. Hay acceso a estas clases de usuarios: : usuarios individuales por su ID de usuario. Grupo de usuario: conjunto de ellos no definidos individualmente. El sistema tendrá que tener algún medio para guardar contenido de la concurrencia de los grupos de usuario Todos: todos los usuarios que tengan acceso al sistema. Archivo público. 4.2 Accesos Simultáneos Cuando se da acceso para añadir o actualizar un archivo a más de un usuario; el s.o. o el sistema de gestión de Archivos hace ampliar una disciplina en método mayor es permitir a los usuarios bloquear el Archivo entero cuando lo vayan a actualizar. Otros más eficientes son bloquear los registros individuales durante la actualización. 13 5. BLOQUES Y REGISTROS Registros: constituyen la unidad lógica de acceso a los Archivos. Bloques: representan la unidad de E/ S para almacenamiento secundario. Para realizar E/ S los registros se organizan en bloques. Se pueden considerar los siguientes aspectos: Longitud del Bloque: en la mayoría de los sistemas, los bloques son de longitud fija. Esto significa la E/ S, la asignación de la memoria intermedia (buffer) van en la memoria principal, y la organización de los bloques en la memoria segundaria. Tamaño de los Bloques en comparación de un registro: cuando mayor sea el bloque mas registro se trasladan en una operación E/ S esto es una ventaja si el procesamiento es secuencial ya que las operaciones de E/ S se reducen, pero si el acceso es aleatorio y no se observa cercanía de referencias, el uso de bloques mayores redunda en una transferencia de registros sin usar. Sin embargo si se combinan la frecuencia de las operaciones secuénciales con la posibilidad de cercanía de referencia, entonces el tiempo de transferencia de E/S sé reduce. 5.1 Tamaño del Bloque: Métodos de Agrupación 1. Bloque Fijo: se usa registros de longitud fija y en cada bloque un número entero de registro. Puede existir espacio sin usar al final de cada bloque. Esto se denomina fragmentación interna. 2. Bloque Expandidos de Longitud Variable: se usan registros variables que se agrupan en bloques sin dejar espacio. De este modo algunos registros deben abarcar dos bloques, indicando el tramo de continuación con un puntero al bloque siguiente 3. Bloque de Longitud Variable sin Tramo: se usan registros de longitud variable, pero no se divide en tramos. En la mayoría de los bloques habrá un espacio desperdiciado. Los bloques de tamaño fijo son el modo más común de Archivos secuénciales con registros de longitud variable. Los bloques de longitud variable con tramo constituyen 14 un almacenamiento eficaz y no ponen límite al tamaño de los registros. Los registros que ocupan dos bloques necesitan dos operaciones de E /S y los archivos se hacen difícil de actualizar. Los bloques de longitud variable sin tramo producen un desperdicio de espacio y limitan el tamaño del registro al tamaño del bloque. En un entorno de memoria virtual, es deseable que la unidad de transferencia sea la página. Generalmente, las páginas son pequeñas, de forma que es poco práctico tratarlas con bloques sin tramo. Así también algunos sistemas combinan múltiples páginas para crear un bloque para la E/ S de Archivos. 6. GESTIÓN DE ALMACENAMIENTO SECUNDARIO En la memoria secundaria, un Archivo consta de un conjunto de bloques. El sistema de gestión de Archivos del sistema operativo es responsable de la asignación de los bloques de Archivos. Hay dos cuestiones a considerar. Primero se debe asignar el espacio de memoria secundaria a los archivos, luego, es necesario guardar constancia del espacio disponible para asignar. Veremos q estas dos tareas esta relacionadas. 6.1 Asignación de Archivos En la asignación de archivos surgen varias cuestiones: 1. Cuando se crea un nuevo Archivo, ¿se asigna de una sola vez el máximo espacio que necesita? 2. El espacio se asigna aun Archivo en forma de una o más unidades contiguas, que se llaman secciones. El tamaño de una sección puede variar desde un único bloque a un Archivo entero. ¿Qué tamaño de sección debería usarse rara asignar Archivos? 3 ¿Qué tipo de estructura de datos o tabla se usará para guardar constancia de las secciones asignadas a un Archivo? Dicha tabla se conoce normalmente como tabla de asignación de Archivos (FAT, File Allocation Table) Veamos estas cuestiones: 15 6.1.1 Preasignación Frente a la Asignación Dinámica Una política de asignación previa requeriría que el tamaño máximo de un Archivo se declarase en el momento de crearla. En algunos casos, corno al compilar los programas, al crear Archivo de datos de resumen o al transferir un Archivo desde otro sistema por una red de comunicaciones, este valor puede estimarse. Sin embargo, para muchas aplicaciones es difícil, si no imposible, estimar de manera fiable el posible tamaño máximo del Archivo. En esos casos, los usuarios y programadores de aplicaciones se inclinarían por sobrestimar el tamaño dcl Archivo de forma que no sé quedaran sin espacio. Evidentemente. Esto es un derroche desde el punto de vista de la asignación de memoria secundaria. Por lo tanto, existen ventajas en el uso de la asignación dinámica, que asigna espacio a los archivos en secciones a medida que se necesitan. 6.1.2 Tamaño de Porción La segunda cuestión de la lista anterior es la del tamaño de la sección asignada a los Archivos. En un extremo, se puede asignar una sección suficientemente grande para guardar el Archivo entero. En el otro extremo, se asigna el espacio en disco de bloque en bloque. Al elegir el tamaño de sección, debe haber un equilibrio relativo a la eficiencia desde el punto dc vista de un solo Archivo frente al del sistema global, considera los siguientes cuatro elementos en esta elección: La contigüidad del espacio aumenta el rendimiento, especialmente para las operaciones de Recuperar-Siguiente y, sobremanera, para ejecutar Las transacciones de un sistema orientado a transacciones. Disponer de un gran número de secciones pequeñas aumenta el tamaño de las tablas necesarias para gestionar la asignación de información. Disponer de secciones de tamaño fijo (por ejemplo, bloques) simplifica la reasignación del espacio. Disponer de secciones de tamaño variable o secciones pequeñas de tamaño fijo minimiza la pérdida de espacio no usado provocada por la sobre asignación. Estos elementos interactúan entre sí y deben considerarse en conjunto. Como resultado se tienen dos opciones principales: 16 Secciones contiguas variables y grandes: ésta opción ofrecerá un rendimiento mejor. El tamaño variable evitará la pérdida y las tablas de asignación de archivos serán pequeñas. Sin embargo, el espacio es difícil de reutilizar. Bloques: las secciones fijas y pequeñas ofrecen una flexibilidad mayor. Se pueden necesitar tablas grandes o estructuras complejas para su asignación. La contigüidad se abandona; los bloques se asignan a medida que se necesiten. Cualquier opción es compatible con la asignación previa o con la asignación dinámica. En el primer caso, se asigna previamente a los archivos un grupo contiguo de bloques. Esto elimina la necesidad de una tabla de asignación de archivos, todo lo que se necesita es un puntero al primer bloque y el número de bloques asignados. En el segundo caso, todas las secciones necesarias son asignadas de una vez. Esto significa que la tabla de asignación del Archivo permanecerá con un tamaño fijo. Las siguientes son algunas de las estrategias alternativas posibles: Primer ajuste (first fit): elegir el primer grupo de bloques contiguos sin usar de tamaño suficiente. Mejor ajuste (best fit): elegir el grupo más pequeño sin usar que tenga tamaño suficiente. Ajuste más cercano (nearest fit): elegir el grupo más pequeño sin usar de tamaño suficiente que esté más cerca al asignado previamente al Archivo para aumentar la cercanía. 6.1.3 Métodos de Asignación de Archivos Después de ver el estudio sobre asignación previa y dinámica y el tamaño de sección estamos en condiciones de considerar métodos específicos de asignación de Archivos. Son de uso común tres métodos: Con asignación continua, cuando se crea un Archivo, se le asigna un único conjunto contiguo dc bloques Por lo tanto, esta es una estrategia de asignación previa que emplea secciones de tamaño variable. La tabla de asignación de Archivo necesita sólo una entrada por cada Archivo y que muestre el bloque de comienzo y la longitud del Archivo. Desde el punto de vista de un Archivo secuencial individual esta asignación es la mejor, pero presenta algunos problemas: se produce fragmentación externa haciendo difícil encontrar bloques contiguos de espacio de tamaño suficiente. De vez en cuando se deberá ejecutar un algoritmo de compactación para liberar espacio adicional en el disco. Además se debe definir en la asignación 17 previa el tamaño del Archivo en el momento de su creación, lo que crea los problemas antes mencionados. El opuesto de la asignación contigua es la asignación encadenada: Cada bloque contendrá un puntero al siguiente bloque de la cadena. La tabla de asignación de Archivos necesita de nuevo una sola entrada por cada Archivo que muestre el bloque de comienzo y la longitud del mismo. Aunque es posible la asignación previa, es más común simplemente asignar bloques a medida que se necesiten. Entonces es sencillo, cualquier bloque libre puede añadirse a la cadena. Así no hay que preocuparse por la fragmentación externa porque sólo se necesita un bloque cada vez. Este tipo de organización se ajusta mejor a los Archivos secuenciales que serán procesados secuencialmente. Una consecuencia del encadenamiento es que no hay cabida para el principio de cercanía, ya que si se produce fragmentación el traer varios bloques de un Archivo al mismo tiempo se podría necesitar accesos a diferentes partes del disco. Esto podría ser considerable en sistemas que necesiten respuesta rápida de los archivos. Para cubrir este problema, algunos sistemas consolidan (agrupar) periódicamente los Archivos. En la asignación indexada la tabla de asignación Archivos contiene un índice separado de un nivel para cada Archivo; el índice posee una entrada para cada sección asignada al mismo. Normalmente los índices no están almacenados físicamente como parte de la tabla de asignación de archivos. Más exactamente, el índice del Archivo se guardará en un bloque aparte y la entrada del mismo en la tabla de asignación apuntará a dicho bloque. La asignación puede hacerse por bloques de tamaño fijo o en secciones de tamaño variable La asignación por bloques elimina la fragmentación externa, mientras que la asignación por secciones de tamaño variable mejora la cercanía. La asignación indexada soporta tanto el acceso secuencial como el acceso directo a los archivos y por ello se ha convertido en la forma más popular de asignación de archivos. 6.2 Gestión del Espacio Libre Al igual que el espacio asignado a los Archivos, se debe gestionar el espacio que no está asignado actualmente a ninguno de ellos. Para llevar a cabo cualquiera de las técnicas de asignación que se han descrito, es necesario saber qué bloques del disco 18 están disponibles. Por lo tanto hace falta una Tabla de asignación de disco además de una tabla de asignación de Archivos. Técnicas q se han implementado 6.2.1 Tablas de bits Este método utiliza un vector que contiene un bit por cada bloque del disco. Cada entrada igual a 0 corresponde a un bloque libre y cada entrada igual a 1 corresponde a un bloque en uso, por ejemplo la disposición del disco de la figura 12.7 se necesitaría un vector de longitud 35 que tendría el siguiente valor: 001110000111110000111111111111011000 La ventaja es que es relativamente fácil encontrar un bloque o un grupo contiguo de bloques libres. Otra ventaja que puede ser tan pequeña como sea posible. Sin embargo, puede hacerse grande. La cantidad de memoria (en bytes) requerida para un mapa de bits en bloques se puede calcular de la siguiente manera: Tamaño del disco en bytes _______________________________________ 8 X tamaño del bloque en el sistema de archivos Así, un disco de 16 Gb con bloques de 512 bytes, la tabla ocupará 4 Megabytes, lo cual podrá acceder a la tabla de bits sin necesidad de acceder al disco. Pero aun con los tamaños actuales de discos rígidos, el tamaño asignado a bloques de bits es considerable para una sola función. No se puede permitir una búsqueda en esa cantidad de espacio del disco cada vez que se necesita un bloque, por lo tanto es recomendable una tabla de bits residente en memoria. Aun con esta alternativa, una búsqueda exhaustiva de la tabla puede reducir en un grado inaceptable el rendimiento del sistema de Archivos. Esto es especialmente cierto cuando el disco está casi lleno y hay pocos bloques libres. 19 6.2.2 Secciones Libres Encadenadas Las secciones libres pueden encadenarse juntas mediante un puntero y un valor de longitud en cada sección libre. Este método tiene un gasto insignificante porque no hay necesidad de tabla de asignación de disco, sino solamente un puntero al comienzo de la cadena y la longitud de la primera sección. Este método sirve para todas las técnicas de asignación de Archivos. Si la asignación se realiza por bloques, solamente hay que elegir el bloque libre del principio de la cadena y retocar el primer puntero o el valor de la longitud. Si la asignación se hace por secciones de longitud variable, puede hacerse el algoritmo de primer ajuste (first fit): se leen las cabeceras de la sección una a una para determinar la siguiente sección de la cadena que se ajuste. De nuevo hay que retocar el puntero y las longitudes. Este método tiene sus propios problemas. Después de cierto tiempo de uso, el disco estará fragmentado y muchas secciones serán de un solo bloque. También hay que notar que cada vez que se asigna un bloque, es necesario leer antes el bloque para recuperar el puntero al nuevo primer bloque libre antes de escribir datos sobre ese bloque. Si para una operación sobre un Archivo se necesita asignar muchos bloques individuales en un mismo instante de tiempo, se ralentizará mucho la creación del Archivo. De forma similar, el borrado de un Archivo altamente fragmentados consume demasiado tiempo. 6.2.3 Indexación El método de indexación trata el espacio libre como si fuera un Archivo y utiliza una tabla índice como la descrita en la asignación de Archivos. Por razones de eficiencia, el índice debe trabajar con secciones de tamaño variable mejor que con bloques. De este modo habrá una entrada en la tabla para cada sección libre del disco. Este método ofrece un soporte eficaz para todos los métodos de asignación de Archivos. 6.2.4 Lista de Bloques Libres En este método, cada bloque tiene asignado un número secuencial y la lista de números de todos los bloques libres mantenidos en una sección reservada del disco. Dependiendo del tamaño del disco, cada 24 o 32 bits se necesitará almacenar el número de un solo bloque, así el tamaño de la lista de bloques libres es 24 o 32 veces el tamaño de la tabla de bits correspondiente y así se puede almacenar sobre el 20 disco mejor que en la memoria principal. Sin embargo este es un método bastante satisfactorio. 6.3 Fiabilidad Consideremos el siguiente escenario: 1. El usuario A solicita una asignación para añadir datos a un Archivo existente. 2. La petición se atiende y se actualizan en la memoria principal las tablas de asignación de Archivos y archivos, pero no aun en el disco. 3. El sistema se hunde y a continuación se reinicia. 4. El usuario B solicita una asignación y se le otorga un espacio en el disco que se solapa con la última asignación hecha al usuario A. 5. El usuario A accede a la sección solapada mediante una referencia que está almacenada en el Archivo de A. Esta dificultad surge debido a que, por eficiencia, el sistema mantiene copias de la tabla de asignación de disco y de la tabla de asignación de Archivos en la memoria principal. Para evitar esta clase de errores, pueden darse los siguientes pasos cuando se solicite una asignación: 1. Bloquear en el disco la tabla de asignación de disco. Esto impedirá a otro usuario alterar la tabla hasta que la asignación actual se complete. 2. Buscar espacio disponible en la tabla de asignación de disco. Se supone que se mantiene siempre en la memoria principal una copia de la tabla de asignación de disco. Si fuese así, primero debe leerse ésta del disco. 3. Asignar el espacio, actualizar la tabla de asignación de disco y actualizar el disco. Actualizar el disco implica volcar de nuevo al disco la tabla de asignación del disco. Con asignación encadenada, también se necesita actualizar algunos punteros del disco. 4. Actualizar la tabla de asignación de Archivos y actualizar el disco. 5. Desbloquear la tabla de asignación de disco. Esta técnica impedirá los errores, sin embargo cuando se asignan pequeñas secciones de manera frecuente, el impacto en el rendimiento será sustancial. Para reducir este gasto, puede asignarse un esquema de asignación por lotes, en cuyo caso se obtienen lotes de secciones libres del disco para asignación. Las secciones correspondientes del disco se marcarán como “en uso”. La asignación por lotes 21 puede llevarse a cabo en la memoria principal. Cuando se agota un lote, se actualiza en el disco la tabla de asignación de disco y se adquiere un lote nuevo. Si se produce un fallo del sistema, las secciones del disco marcadas como “en uso” deben limpiarse de alguna forma antes de ser reasignadas. La técnica de limpieza dependerá de las características del sistema de Archivos en particular. 7-GESTIÓN DE ARCHIVOS EN UNÍX El núcleo (Kernel) de UNIX contempla a todos lo archivos como flujos de bytes. Cualquier estructura lógica interna será específica de la aplicación. Sin embargo, UNIX se ocupa de la estructura física de los Archivos. Se distinguen cuatro tipos de Archivos: Ordinarios: son Archivos que contienen información introducida por un usuario, un programa de aplicación o un programa del sistema. Directorio: contiene una lista de nombre de Archivos y punteros a nodos-i (nodos índices) asociados. Los directorios están organizados jerárquicamente. Los Archivos de directorio son en realidad Archivos ordinarios con unos privilegios especiales de protección de forma que solo el sistema de Archivos puede escribir en ellos, mientras que los programas de usuarios disponen de acceso para lectura. Especiales: usados para acceder a dispositivos periféricos, como terminales e impresoras. Cada dispositivo de E/S esta asociado a un Archivo especial. Tuberías con Nombre: tubos con nombre. Una tubería es una utilidad de comunicación entre procesos, guarda en un buffer los datos de su entrada de forma que un proceso que lea de la salida de la tubería reciba los datos del mismo modo que si leyera de una cola FIFO. 7.1 Nodos-I Todos los tipos de Archivos UNIX son administrados por el sistema operativo por medio de nodos-I. Un nodo-I es una estructura de control que contiene la información clave de un Archivo necesario para el sistema operativo. Pueden asociarse varios nombres de Archivo a un mismo nodo-I, pero un nodo-I activo se puede asociar con un único Archivo y cada Archivo es controlado por un solo nodo-I. Los atributos del Archivo, así como sus permisos y otra información de control, se almacenan en el nodo-I. 22 7.2 Asignación de Archivos Los Archivos se asignan en bloques. La asignación es dinámica, a medida que se necesita. No se emplea asignación previa. Por lo tanto, los bloques de un Archivo no tienen por qué estar contiguos necesariamente. Se usa un método de indexación para seguir la pista de cada Archivo, con parte del índice almacenada en el nodo-i del Archivo. El nodo-i incluye 39 bytes de información de dirección, organizadas como 13 direcciones o punteros de 3 bytes. Las primeras 10 direcciones apuntan a los primeros 10 bloques de datos del Archivo. Si el Archivo es mayor de 10 bloques, se usan uno a más niveles indirectos, de la forma siguiente: ● La dirección undécima del nodo-i apunta a un bloque del disco que contiene la siguiente parte del índice. Este bloque se conoce como el bloque indirecto simple. Este bloque contiene los punteros a los siguientes bloques del Archivo. ● Si el Archivo contiene más bloques, la dirección duodécima del nodo-i apuntará a un bloque indirecto doble. Este bloque contiene una lista de direcciones de bloques indirectos simples adicionales. Cada uno de los bloques indirectos simples contiene a su vez punteros a los bloques del Archivo. ● Si el Archivo contiene aún más bloques, la dirección decimotercera del nodo-i apuntará a un bloque indirecto triple que consiste en un tercer nivel de indexación. Este bloque apunta a bloques indirectos dobles adicionales. Podemos ver la ilustración en la figura 7.1 El número total de bloques de un Archivo dependerá de la capacidad de los bloques de tamaño fijo del sistema. En UNIX SV, la longitud de un bloque es de 1Kb y cada bloque puede albergar un total de 256 direcciones de bloques. Por lo tanto, el tamaño máximo de un Archivo usando este esquema se aproxima a los 16 Gbytes. 23 Nivel Número de bloques Número de bytes Directo 10 10 Kb Indirecto simple 256 256 Kb Indirecto doble 256 x 256 = 65 K 65 Mb Indirecto triple 256 x 65K = 16 M 16 Gb Capacidad de un Archivo de UNÍX Este esquema tiene varias ventajas y son las siguientes: ● Los nodos-i son de tamaño fijo y relativamente pequeños, por lo que pueden guardarse en la memoria principal durante periodos largos. ● Se puede acceder a los Archivos de modo directo o indirecto, reduciendo así el procesamiento y el tiempo de acceso al disco. ● El tamaño máximo teórico de un Archivo es suficientemente grande como para satisfacer a casi todas las aplicaciones. 7.3 DIRECTORIOS Los directorios se estructuran como un árbol. Cada directorio contiene Archivos y/ u otros directorio. Un directorio que se encuentra dentro de otro directorio se denomina subdirectorio. Como se menciono anteriormente, un directorio es simplemente un Archivo que contiene una lista de nombres de Archivos mas punteros a nodos-i asociados. Cada entrada de directorio ( entrada D) contiene con nombre para el Archivo asociado o subdirectorio mas un entero llamado el numero-i (numero índice). Cuando se accede al Archivo o directorio, su numero-i utiliza como índice en la tabla de nodos-i 24 7.4 ESTRUCTURA DEL VOLUMEN Un sistema de Archivos UNÍS reside en un único disco lógico o partición de disco y se compone de los siguientes elementos: BLOQUE DE ARRANQUE contiene el código requerido para arrancar el sistema operativo. SUPERBLOQUE contiene atributos e información sobre el sistema de Archivos, tal como el tamaño de la participación y el tamaño de la tabla de nodos-i TABLA DE NODOS-I la colección de los nodos-i para cada Archivo. BLOQUE DE DATOS el espacio de almacenamiento disponible para cada Archivo de datos y subdirectorios. 8-Sistema de Archivos Virtual Linux Linux incluye una utilidad versátil y potente para gestión de Archivos .El enfoque usado en Linux consiste en hacer uso del sistema de Archivos virtual (VFS) que presenta una única y uniforme interfaz de sistema de Archivos para los procesos de usuario .VFS define un modelo de Archivos común que es capaz de representar cualquier característica general y comportamiento de un sistema de Archivos concebible .VSF asume que los Archivos son objeto de un almacenamiento masivo del computador que comparten propiedades básicas sin tener en cuenta el sistema de Archivos concreto o el hardware subyacente .Los Archivos tienen nombres simbólicos que les permiten identificarse de forma única dentro de un directorio especifico en el sistema de Archivos. Un Archivo tiene un propietario ,protección frente a accesos o modificaciones no autorizadas y otras propiedades .Un Archivo se puede crear, leer ,escribir o borrar .Para cualquier sistema de Archivo especifico ,se necesita un modulo de proyección que transforme las características del sistema de Archivos real a las características esperadas por el sistema de Archivos virtual. VFS es un esquema orientado a objetos .Debido a que esta escrito en C, en lugar de en un lenguaje que de soporte a la programación de objetos (como C++ o JAVA), los objetos VFS se implementan como estructuras de datos C. Cada objeto contiene tanto datos como punteros a las funciones implementadas del sistema de Archivos que operan sobre los datos. Los cuatro tipos de objetos primarios en VFS son los siguientes: 25 1-Objeto superbloque. 2-Objeto nodo-i. 3-Objeto entrada de directorio. 4-Objeto de Archivo. Este esquema se basa en los conceptos utilizados en el sistema de Archivo de UNIX. 8.1-El Objeto Superbloque El objeto superbloque almacena información que describe un sistema de Archivos especifico .El superbloque corresponde al superbloque del sistema de Archivos bloque de control del sistema de Archivos, que se almacena en un sector especial en el disco. El objeto superbloque esta formado por varios elementos de datos .Ejemplos de estos elementos incluyen los siguientes: *El dispositivo sobre el cual el sistema de Archivos esta montado. *El tamaño de bloque básico del sistema de Archivos. *El dirty flag que indica que se ha cambiado el superbloque pero no se ha escrito a disco. *Tipo de Archivo. *Flags como el de solo lectura. *Puntero al directorio raíz del sistema de Archivos. *Lista de Archivos abiertos. *Semáforo para controlar el acceso al sistema de Archivos. *Lista de operaciones de superbloque. El último elemento de la lista precedente se refiere a un objeto de operaciones contenido en el objeto superbloque .El objeto operación define los métodos de objeto (funciones) que el núcleo puede invocar sobre el objeto superbloque .Los métodos definidos para el objeto superbloque incluyen las siguientes: ●* read_inode .Leer un nodo-i especifico desde un sistema de Archivos montado. ●* write_inode. Escribir un nodo-i dado a disco. ●*put_inode.Obtener un nodo-i. ●* delete_inode. Borrar un nodo-i del disco. ●*notify_change. Invocado cuando se cambian los atributos. ●*put_super. Llamado por VFS cuando el sistema de Archivos esta desmontado, para obtenerle superbloque. ●*write_super. Invocado cuando VFS decide que el superbloque necesita escribirse a disco. ●*status. Obtiene las estadísticas del sistema de Archivos. ●*remount_fs. Llamado por VFS cuando el sistema de Archivos es motado de nuevo con nuevas opciones de montaje. 26 ●*clear_inode. Obtener nodo-i y borrar cualquier pagina que contenga datos relacionados. 8.2-El Objeto Nodo-i Un nodo-i esta asociado con cada Archivo .El objeto nodo-i contiene la información sobre un determinado Archivo excepto su nombre y el contenido real del Archivo .Los elementos contenidos en un objeto nodo-i incluyen el propietario, grupo, permisos, tiempos de acceso para un Archivo, tamaño de los datos que contiene y numero de enlaces. El objeto nodo-i también incluye un objeto operaciones de nodo-i, que describe las funciones implementadas en el Archivo VFS que puede invocar sobre el nodo-i .los métodos definidos por el objeto nodo-i incluyen los siguientes: Create. Crear un nodo-i nuevo para un Archivo regular asociado con un objeto entrada D en algún directorio. Lookup. Buscar en un directorio el nodo-i correspondiente a un nombre de Archivo. Mkdir. Crear un nuevo nodo-i para un directorio asociado aun objeto entrada D en algún directorio. 8.3-El Objeto Entrada D Una entrada D (entrada de directorio) es un componente específico de una ruta. El componente puede ser un nombre de directorio o un nombre de Archivo. El objeto de entrada D facilita el acceso a los Archivos y directorios y se utilizan en un cache de entrada D para dicho propósito. 8.4-El Objeto Archivo El objeto Archivo se utiliza para representar un Archivo abierto por un proceso. El objeto se crea en respuesta a la llamada al sistema open () y se destruyen en respuesta a la llamada al sistema close(). El objeto Archivo esta formado por un conjunto de elementos, que incluye los siguientes: - Objeto entrada D asociado con el Archivo. - Sistema de Archivos que contiene el Archivo. 27 - Contador de uso del objeto Archivo. - Identificador del usuario. - Identificador de grupo del usuario. Puntero de posición del Archivo, que es la posición actual en el Archivo desde la cual tendra lugar la siguiente operación. El objeto Archivo también incluye un objeto operaciones de nodo-i, que describe las funciones implementadas en del sistema de Archivos que VFS puede invocar sobre el objeto Archivo. Los métodos definidos para el objeto Archivo incluyen la lectura, escritura, apertura, creación y bloqueo. 9-Sistemas de Archivos de WINDOWS Windows soporta varios sistemas de Archivos, incluyendo el de la tabla de asignación de Archivos (FAT) que se ejecutaba sobre Windows 95, MS-DOS, y OS/2. Pero los diseñadores de Windows también diseñaron un nuevo sistema de Archivos, el sistema de Archivos Windows (NTFS), que intenta cumplir los requisitos de estaciones de trabajo y servidores. Como ejemplos de aplicaciones de alto nivel están las siguientes: ♦ Aplicaciones Clientes /Servidor tales como servidores de Archivos, servidores de procesamiento y servidores de bases de datos. ♦ Ingeniería de recursos intensivos y aplicaciones científicas. ♦ Aplicaciones de redes para grandes sistemas corporativos. 9.1 Características Clave de NTFS NTFS es un sistema de Archivos potente y flexible construido, como se vera, sobre un modelo de sistema de Archivos simples y refinado. Las características más notables de NTFS incluyen las siguientes: Recuperabilidad: el primero en la lista de requisitos del nuevo sistema de Archivos Windows fue la capacidad para recuperarse de las caídas del sistema y de los fallos del disco. En caso de estos fallos, NTFS es capaz de reconstruir los volúmenes de disco y devolverlos a un estado consistente. Esto lo consigue por medio de un modelo de 28 proceso de transacciones para los cambios en los sistemas de Archivos; cada cambio significativo se trata como una acción atómica que se ejecuta totalmente o no se ejecuta. Cada transacción que estaba en ejecución en el momento del fallo se retrocede o se completa. Además, NTFS utiliza un almacenamiento redundante para los datos críticos del sistema de Archivos, de esta manera el fallo de un sector del disco no causa la pérdida de los datos que describen la escritura y el estado del sistema de Archivos Seguridad: NTFS utiliza el modelo de objetos Windows para imponer la seguridad. Un Archivo abierto se implementa como un objeto Archivo con un descriptor de seguridad que define sus atributos de seguridad. Discos grandes y Archivos grandes: NTFS soporta discos muy grandes y Archivos muy grandes más eficientemente que la mayoría de los sistemas de Archivos, incluyendo FAT. Serie de datos múltiples: el contenido actual de un Archivo se trata como una serie de bytes. En NTFS es posible definir múltiples series de datos para un solo Archivo. Un ejemplo de la utilidad de esta característica es que permite utilizar Windows a un sistema remoto Macintosh para almacenar y recuperar Archivos. Sobre Macintosh, cada Archivo tienen dos componentes: un Archivo de datos y un recurso fork que contiene información acerca del Archivo, NTFS trata estas dos componentes como dos series de datos. Capacidad de indexación general: NTFS asocia un conjunto de atributos con cada Archivo. El conjunto de descripciones de Archivo en un sistema de gestión de Archivos se organiza como una base de datos relacional, así que los Archivos se pueden indexar por cualquier atributo. 9.2-Estructura de Archivos y Volúmenes NTFS NTFS hace uso de los siguientes conceptos de almacenamiento en disco: Sector : la unidad de almacenamiento físico mas pequeña sobre el disco. El tamaño de los datos en bytes es una potencia de 2 y es casi siempre de 512 bytes. Agrupamiento (cluster): uno o más sectores contiguos (siguientes cada uno al otro en la misma pista). El tamaño del agrupamiento en sectores es una potencia de 2. Volumen: una partición lógica sobre el disco, que consta de uno o más agrupamientos y que el sistema de Archivos utiliza para asignar el espacio. En un instante dado, un volumen consta de la información del sistema de Archivos, un conjunto de Archivos y cualquier espacio libre adicional en el resto del volumen que se pueda asignar a los Archivos. Un volumen puede ser todo o una parte de un único disco o puede extenderse a través de múltiples discos. Si se emplea el hardware o el software RAID 5, un volumen estará formado por una serie de bandas en varios discos. El tamaño máximo de volumen para NTFS es de 264 bytes. 29 El agrupamiento es la unidad fundamental de asignación en NTFS, que no reconoce sectores. Por ejemplo, se supone que cada sector tiene 512 bytes y el sistema se configura con dos sectores por agrupamiento (un agrupamiento = 1K bytes). Si un usuario crea un Archivo de 1.600 bytes, se asignan al Archivo dos agrupamientos. Más tarde, si el usuario actualiza el Archivo a 3.200 bytes, se le asignan otros dos agrupamientos. La asignación de agrupamientos no necesita ser contigua; se permite fragmentar un Archivo sobre el disco. Generalmente, el tamaño máximo de Archivo soportado por NTFS es 232 agrupamientos, lo cual es equivalente a un máximo de 248 bytes. El uso de agrupamientos para asignación hace independiente a NTFS del tamaño del sector físico. Esto permite a NTFS soportar fácilmente discos no estándar que no tienen sectores de 512 bytes, y soportar eficientemente Archivos muy grandes mediante el uso de un tamaño de agrupamiento más grande. La eficiencia viene del hecho de que el sistema de Archivos debe guardar la pista de cada agrupamiento asignado a cada Archivo; con agrupamientos más grandes, hay menos campos para gestionar. 9.3-Estructura de un Volumen NTFS NTFS utiliza un método notablemente sencillo pero potente para organizar la información sobre un volumen de disco. Cada elemento en un volumen es un Archivo y cada Archivo consta de un conjunto de atributos. Incluso los datos que contiene un Archivo se tratan como un atributo. Con esta estructura sencilla unas cuantas funciones de propósito general son suficientes para organizar y gestionar el sistema de Archivo. Tamaño de agrupamiento y de partición en Windows NTFS Tabla del volumen Sectores por agrupamiento Tamaño de agrupamiento < = 512 Mbytes 1 512 bytes 512 Mbytes – 1 Gbyte 2 1K 1 Gbyte – 2 Gbytes 4 2K 2 Gbytes – 4 Gbytes 8 4K 4 Gbytes – 8 Gbytes 16 8K 8 Gbytes – 16 Gbytes 32 16K 16 Gbytes – 32 Gbytes 128 64K 30 La disposición de un volumen NTFS esta formado por cuatro regiones. Los primero sectores de un volumen están formados por la partición del sector de arranque (aunque se denomina sector, puede tener hasta 16 sectores de longitud), que contiene información acerca de la disposición del volumen y de las estructuras del sistema de Archivos así como la información y el código de arranque. A continuación está la tabla maestra de Archivos (MFT, Master File Table), la cual contiene la información acerca de todos los Archivos y carpetas (directorios) de este volumen NTFS así como la información acerca del espacio disponible. En esencia la MFT es una lista de todos los contenidos de este volumen NTFS, organizada como un conjunto de filas en una estructura de base de datos relacional. A continuación de la MFT está una región, normalmente de alrededor 1 Mbyte, que contiene los Archivos del sistema. Entre los archivos de esta región figuran los siguientes: MFT2: un espejo de las tres primeras filas de la MFT, utilizado para garantizar el acceso a la MF en el caso de un fallo de ese sector. Archivo de registro: una lista de los pasos de transacciones utilizados para la recuperabilidad de NTFS. Mapa de bits de agrupamientos: una representación del volumen, mostrando que agrupamientos están en uso. Tabla de definición de atributos: define los tipos de atributos soportados en este volumen e indican si se puede indexar y se pueden recuperar durante una operación de recuperación del sistema. 9.3.1-Tabla Maestra de Archivos La parte más importante del sistema de Archivos Windows es la MFT. La MFT está organizada como una tabla de filas de longitud variable, denominadas registros. Cada fila describe un Archivo o una carpeta en este volumen, incluyendo a la propia MFT, que se trata como otros Archivos. Si los contenidos de un Archivo son demasiado pequeños, entonces se ubica el Archivo entero en una fila de la MFT. Si no, la fila para ese Archivo contendrá una parte de la información y el resto del Archivo se desbordará sobre otro agrupamiento libre de volumen, con punteros a esos agrupamientos en la fila MFT de ese Archivo. Cada registro en la MFT consta de un conjunto de atributos que sirven para definir las características del Archivo (o carpeta) y el contenido del Archivo. 31 9.4-Recuperación NTFS hace lo posible para devolver el sistema de Archivos a un estado consistente después de una caída del sistema o un fallo del disco. Los elementos clave para ofrecer recuperabilidad son los siguientes: Gestor de E/S: incluye el controlador NTFS, que gestiona las funciones básicas de NTFS para la apertura, cierre, lectura y escritura. Además, se puede configurar el uso de RAID por software FTDISK. Servicio de Archivo de registro: mantiene un registro de escrituras a disco. El Archivo de registro se utiliza para recuperar un volumen con formato NTFS en el caso de un fallo en el sistema. Gestor de cache: es el responsable de leer y escribir los Archivo situados en la caché para aumentar el rendimiento. El gestor de caché optimiza la E/S a disco utilizando las técnicas de escritura retardada y confirmación retardada. Gestor de memoria virtual: accede a la caché de Archivos NTFS mediante la traducción de referencias al Archivo a referencias a la memoria virtual y lectura y escrituras en la memoria virtual. (Fig 8.2) Es importante destacar que los procedimientos de recuperación utilizados por NTFS están diseñados para recuperar los datos del sistema de Archivos, no el contenido de los Archivos. Por ello, el usuario no debería perder nunca un volumen o la estructura de un Archivo/ directorio de una aplicación por causa de una caída. Sin embargo, los datos de usuario no están garantizados por el sistema de Archivos. Ofrecer una recuperabilidad completa, incluidos los datos de usuario, haría mucho más elaborada la utilidad de recuperación y produciría un mayor consumo de recursos. La esencia de la capacidad de recuperación de NTFS está en el registro. Cada operación que modifica el sistema de Archivos se trata como una transacción. Se registra en un Archivo de registro cada suboperación de una transacción que modifica estructuras de datos importantes del sistema de Archivos antes de grabarla en el volumen del disco. Por medio del registro, una transacción parcialmente completada en el instante de la caída puede rehacerse o deshacerse más tarde, cuando se recupere el sistema. En términos estos son los pasos a dar para asegurar la recuperabilidad, como describe [CUST94]: NTFS primero llama al registro del sistema de Archivos para grabar en el Archivo el registro de la caché cualquier transacción que modifique la estructura del volumen. NTFS modifica el volumen (en la caché). El gestor de caché llama al registro del sistema de archivos para indicarle que lleve el Archivo de registros al disco. Una vez que el Archivo de registro actualizado está seguro en el disco, el gestor de caché lleva los cambios del volumen al disco. 32 Básicamente un sistema de Archivos es el software de sistema, componente del sistema operativo, que proporciona servicios a usuarios y aplicaciones para el uso de Archivos, conservación de Archivos y control de accesos. Normalmente, el sistema de gestión de Archivos se contempla como un servicio del sistema que se sirve a su vez del sistema operativo, más que como una parte del propio sistema operativo. Ahora, tenemos diferentes formas de organizar los Archivos en los discos, siempre con el objetivo de poder recuperarlos lo más rápido posible. En esto apuntan principalmente los algoritmos de organización/ recuperación de Archivos. Una función clave de cualquier esquema de gestión de Archivos es la gestión de del espacio en el disco. Una parte de esta función es la estrategia de asignación de bloques de disco a los Archivos. Se han empleado una amplia variedad de métodos y de estructuras de datos para guardar constancia de la ubicación de cada Archivos. También debe gestionarse el espacio en el disco sin asignar. 33 BIBLIOGRAFÍA CONSULTADA -Sistema Operativo. Cáp.12 Gestión de Archivos 5ta Edición Stalling