[004] sistemas operativos - gestion de ficheros

38

Click here to load reader

Upload: gust-alva

Post on 12-Jun-2015

4.377 views

Category:

Documents


1 download

DESCRIPTION

El sistema de ficheros es uno de los aspectos más visibles del SO, pues proporciona el mecanismo para el almacenamiento masivo de programas y datos, tanto del propio sistema operativo como de todos los usuarios del ordenador.

TRANSCRIPT

Page 1: [004] Sistemas Operativos - Gestion de Ficheros

�������������� ���

�������������� �����

El sistema de ficheros es uno de los aspectos más visibles del sistema operativo,pues proporciona el mecanismo para el almacenamiento masivo de programas ydatos, tanto del propio sistema operativo como de todos los usuarios del ordenador.El sistema de ficheros está formado por dos partes esenciales: una colección de��������, conteniendo cada uno de ellos datos relacionados, y una ���������������������� que organiza y proporciona información de todos los ficheros delsistema.

En este capítulo trataremos aspectos sobre los ficheros y directorios, elcompartimiento entre varios procesos y la protección necesaria en entornos conmúltiples usuarios. También abordaremos cuestiones concernientes al almacena-miento y acceso de ficheros en el más común de los dispositivos de memoriasecundaria: el disco. Examinaremos distintos modos de asignación y recuperaciónde espacio en el disco, y veremos también cómo se puede llevar la cuenta delespacio que ocupan los ficheros en el disco.

Page 2: [004] Sistemas Operativos - Gestion de Ficheros

������������������

��� ��������������

����������� ���Todos los programas necesitan almacenar y recuperar la información. Mientras unproceso se ejecuta, puede guardar una cierta cantidad de información en su propioespacio de direcciones, es decir, la memoria principal; pero la capacidad de éstaestá limitada, como mucho, al tamaño de la memoria virtual. Para algunosprogramas, esta cantidad de espacio es suficiente, pero para otros, como porejemplo reservas aéreas o aplicaciones bancarias, resulta pequeña.

Otro problema que se tiene al guardar la información en la memoria principal es quecuando el proceso termina la información se pierde y, claro, para muchasaplicaciones, como las bases de datos, la información debe retenerse durantesemanas, meses, o incluso para siempre.

Frecuentemente resulta necesario que múltiples procesos accedan a ciertainformación al mismo tiempo. Por ejemplo, si se mantiene una guía telefónica en elespacio de memoria de un proceso, solamente ese proceso puede acceder a lainformación, por lo que únicamente se puede buscar un número de teléfono a la vez,dando lugar a que los procesos que desean obtener un número deben ir accediendoa la guía de uno en uno. La manera de resolver este problema es haciendo que lainformación sea independiente del espacio de direcciones de los procesos.

Así, tenemos tres requisitos esenciales para el almacenamiento de memoria a largoplazo:

1. Se debe poder almacenar una cantidad de información muy grande.

2. La información debe permanecer después de la terminación de los procesos quela utilizan.

3. Múltiples procesos deben poder acceder a la información concurrentemente.

La solución a todos estos problemas es almacenar la información en discos u otrosdispositivos externos de almacenamiento masivo, en unidades llamadas ��������.

Los procesos pueden leer, escribir o crear ficheros nuevos. La informaciónalmacenada en los ficheros es persistente, es decir, no se ve afectada por lacreación o terminación de los procesos. Un fichero sólo desaparece cuando supropietario lo borra explícitamente.

Los ficheros se manejan a través del sistema operativo. La parte del sistemaoperativo que se encarga de la gestión de ficheros recibe el nombre de �����������������.

Para guardar y gestionar la información, el sistema de ficheros utiliza dos objetosimportantes: los ficheros y los directorios. Como ya dijimos, los ficheros constituyen,desde el punto de vista del usuario, la unidad de almacenamiento de la información,mientras que los directorios contienen las listas de los ficheros junto con lainformación necesaria para su gestión: nombre, atributos y permisos de acceso,ubicación en el disco, etc.

Page 3: [004] Sistemas Operativos - Gestion de Ficheros

������������������

�������������� ���

6LVWHPDV�2SHUDWLYRV�, 6LVWHPDV�GH�)LFKHURV����

�������������� �� ���� ������������������ ���������������������� ��������������� ������� ���� ����������� �����������

����������������������������

����������� ��������

������������������ �� �������� ����������� !

"������ ������������� ������������������� ������

��������������������������������������������� ��������������

��#������� ��������� �$ ���������������� ������

��"������ ������������������� ��%������������&������������ ������������������'�

���(��������� ��������������� ������ ����� ������������������� ������

"������ �������������������������������� ����������������������������������������

)������������� ������������� $������$����������������� ����������������� �����������

���� �� #� ���� ���

Page 4: [004] Sistemas Operativos - Gestion de Ficheros

������������������

��� ��������������

������ �����Un fichero es una colección, con nombre, de información relacionada que se graba ymantiene, normalmente, en memoria secundaria. Desde el punto de vista delusuario, un fichero es la unidad lógica más pequeña de memoria secundaria, esdecir, que no se pueden escribir datos en memoria secundaria a menos que seadentro de un fichero. Normalmente, los ficheros contienen programas (tanto enformato fuente como objeto) y datos. Los ficheros de datos pueden ser de cualquiertipo: numérico, alfabético, alfanumérico o binario; y pueden tener un formato libre,como los ficheros de texto; o una estructura rígida en la que todos los registroscomponentes tienen un mismo patrón, como un fichero de empleados o de nóminas.En general, un fichero contiene simplemente información estructurada de la formamás conveniente en cada caso. Esta estructura puede ser una secuencia de bits,bytes, líneas o registros cuyo significado lo conocen los programas o personas quelos crean y los utilizan.

Un fichero también puede verse como un tipo abstracto de datos, es decir, un objetocon unos atributos y unas operaciones asociadas. Veamos en primer lugar estosatributos y operaciones, y posteriormente pasaremos a comentar la estructurainterna que pueden tener los datos de los ficheros y los métodos para acceder a losregistros que lo componen.

������ ���������Los atributos de un fichero varían de un sistema operativo a otro, pero típicamentesuelen ser los siguientes:

• ������. Los ficheros son un mecanismo de abstracción que proporcionan elmodo de almacenar información y poder recuperarla posteriormente, y queesconden los detalles de cómo y cuándo se almacena la información. Lacaracterística más importante de la abstracción es el modo en el que los objetoso ficheros se manejan y se nombran. Cuando un proceso crea un fichero, leasigna un nombre; cuando el proceso finaliza, el fichero continúa existiendo, porlo que otros procesos pueden acceder a su contenido mediante su nombre. Ésteconsta, normalmente, de una serie de caracteres alfanuméricos. Los caracteresespeciales permitidos o la distinción entre mayúsculas o minúsculas depende decada sistema operativo.

• ����. Si el sistema operativo es capaz de reconocer el tipo de un fichero,entonces puede operar con él de forma razonable. Por ejemplo, si se intentaimprimir un fichero objeto (en binario), normalmente produce un listadoirreconocible, lo cual podría haberse prevenido si el sistema operativo detecta eltipo del fichero e impide la impresión al tiempo que avisa del error. Una técnicacomún para indicar el tipo de fichero consiste en incluir el identificador de tipocomo parte del nombre. Para ello, el nombre se divide en dos partes: el nombrepropiamente dicho y la extensión, normalmente separados por un punto. De estaforma, tanto el sistema operativo como el usuario pueden deducir el contenidodel fichero simplemente a partir de la extensión del nombre.

Page 5: [004] Sistemas Operativos - Gestion de Ficheros

������������������

�������������� ���

• ������!�. Indica la dirección (cilindro o pista y sector) del comienzo del ficheroen el disco.

• ����"�. Expresa el tamaño actual del fichero, expresado en bytes o bloques dedatos. También puede indicar el máximo tamaño permitido para el archivo.

• #�������!�. Indica los permisos de acceso para los usuarios del sistema.

• ������ $� %���. Contiene el momento de creación, modificación y/o últimoacceso al fichero.

������ ���� �����En la gestión de ficheros hay ciertas operaciones que son básicas, así que elsistema operativo debe proporcionar operaciones para: crear, escribir, leer,posicionar, borrar, etc.; mientras que otras se pueden implementar a partir de lasbásicas, como por ejemplo: cambiar el nombre, copiar, añadir, ...

• &�����!�. Antes de trabajar con un fichero hay que crearlo y para ello serequieren dos pasos principales: asignarle espacio en el disco y darle unaentrada en el directorio correspondiente indicando, al menos, su nombre yubicación. (Si el tamaño varía dinámicamente, no se asigna espacioinicialmente).

• '��������. Para escribir en un fichero hay que realizar una llamada al sistemaindicando el nombre y la información que se desea escribir. El sistema operativomantiene un puntero que indica la posición de lectura o escritura en el fichero,para que sucesivas operaciones de escritura, añadan los datos de formaconsecutiva. El sistema operativo se encarga de encontrar la posición del ficheroen el disco a partir del nombre.

• (������. El usuario debe indicar el nombre del fichero a leer y la dirección de unbuffer de memoria local para depositar el contenido de la lectura solicitada. Aligual que en la operación de escritura, después de cada operación de lectura seactualiza la posición del puntero de L/E.

• #��������������. Esta operación permite establecer el valor del puntero de L/Edel fichero.

• )�����. Para borrar un fichero simplemente hay que indicar su nombre. Elsistema operativo busca el nombre en el directorio y libera el espacio que ocupaen el disco y la propia entrada en el directorio.

La mayoría de estas operaciones requieren buscar en el directorio la entradacorrespondiente al nombre del fichero, y puesto que éste se encuentra en disco, dalugar a que los tiempos de respuesta en las operaciones de L/E consuman untiempo muy significativo. Para evitar esta búsqueda constante, la mayoría de lossistemas disponen de la operación �����������.

Esta operación ������ ����� debe realizarse antes que cualquier otra instrucciónsobre un fichero. Su cometido es copiar la entrada del directorio (en el disco) a la

Page 6: [004] Sistemas Operativos - Gestion de Ficheros

������������������

��* ��������������

6LVWHPDV�2SHUDWLYRV�, 6LVWHPDV�GH�)LFKHURV����

�������������� �� ����� ��*����������������������������������� ��������� ������

����������$ ������������ ��������� ��

!� ��������� ����������������$����� �������������������+�������� ��

������ ��

!�������� ��������� ����������� �������

��� ���� ������������ ����������������

)�������������� �����������

��������� ��� �����

���� � , ���������� )�� ��� �*�������� "���� �����+� !��������������! �������� -+�� �����.��� � /� � ��0� ���������������� 1 �� � �

2����� � ,����

/(�����������#� ���� ��

-/2�2 ,)22-2

����������� ���-��� ���

0���� �����1

!���� ����!��������-�����

����������� ���-��� ���

0����������1

,����� ���-�� �� ��#� �������������#����

Page 7: [004] Sistemas Operativos - Gestion de Ficheros

������������������

�������������� ��+

���,��������������������� que se mantiene en memoria principal. De esta manera,a partir de ese momento, cada operación con ese fichero ya no implica un acceso aldisco para obtener la información del directorio, sino que se obtiene directamente dela tabla de ficheros abiertos, cuyo acceso es mucho más rápido. La operación deapertura del fichero devuelve un �������������������, el cual se debe suministrar,en lugar del nombre, como un parámetro más en las llamadas a las posterioresoperaciones con ese fichero. El descriptor suele ser el índice de acceso a la tabla deficheros abiertos, con lo que la entrada del fichero se obtiene de forma inmediata.

Cuando un fichero no se va a utilizar más de forma activa, debe procederse a ������������, lo cual elimina o libera la entrada correspondiente de la tabla de ficherosabiertos.

La implementación de las operaciones de abrir y cerrar ficheros se complica un pocoen el caso de sistemas multiusuarios, en los que varios usuarios pueden realizaraccesos concurrentes a un mismo fichero. En este caso, el sistema operativomantiene dos niveles de tablas de ficheros abiertos. La ���,�� ,���,� �,� �������mantiene la información relativa al fichero según el uso del proceso, y suele consistiren el puntero de posición de lectura/escritura, más un puntero a una entrada de la���,�� �,� �������, la cual contiene información independiente de los procesos,como por ejemplo: la dirección del fichero en el disco, fechas de acceso, tamaño,etc. Una vez que se abre un fichero, las sucesivas aperturas por otros procesossimplemente añaden una entrada en la tabla local con el correspondiente puntero asu entrada en la tabla del sistema.

Normalmente, la tabla de ficheros abiertos del sistema contiene un contador deaperturas en la entrada de cada fichero, indicando, en cada momento, el número deprocesos que lo tienen abierto. Cada operación de cierre del fichero borra la entradade la tabla local de ficheros abiertos y decrementa el contador de aperturas, de talforma que cuando alcanza el valor cero se borra la entrada del la tabla del sistema,puesto que ya no lo utiliza ningún proceso.

������ ����� ���������� �����Algunos sistemas operativos (de DEC e IBM) imponen la estructura interna de losficheros dependiendo del tipo de estos, y utilizan un método de acceso distinto paracada una de las estructuras prefijadas que gestionan.

No obstante, hoy día la estructura de los ficheros suele ser independiente delsistema operativo, concerniéndole únicamente al programa que lo crea o lo utiliza.Este es el caso de Unix o MS-DOS, que consideran cada fichero como unasecuencia de bytes y no realizan ninguna interpretación de su contenido, por lo quetampoco ofrecen ningún soporte para el tratamiento de los distintos tipos deficheros. Por esto, cada programa debe disponer de su propio código parainterpretar la estructura de los ficheros que maneja.

Sin embargo, todos los sistemas operativos deben soportar al menos la estructurade un tipo de ficheros: los programas ejecutables, es decir, deben saber que un

Page 8: [004] Sistemas Operativos - Gestion de Ficheros

������������������

��- ��������������

programa ejecutable está compuesto por una secuencia de registros de carga quecontienen código máquina, instrucciones de reserva de espacio, constantes, etc.Esta estructura debe conocerla el cargador de programas para saber lasnecesidades de memoria del programa a cargar y la información a ubicar enmemoria.

También pueden contener lo que se conoce como ������ y ���. Para entenderlo que son recursos y datos, pensemos, por ejemplo, en un moderno procesador detexto de tipo WYSIWYG (����� ��� �� �������� �����) en el que se dispone demenús y ayuda en el idioma español (aunque el procesador esté diseñado en otropaís). El conjunto de texto de interfaz que tiene un programa, que es configurablepara cada país, puede estar en registros especiales del fichero ejecutable, formandolos ���. También puede haber ciertos dibujos o imágenes que se muestran comoparte de la interfaz a modo de ���� o ayudas para utilización con el ratón,formando lo que se conoce como ������.

������ ���������� ���Los ficheros almacenan información, y cuando se utilizan se debe acceder a estainformación para leerla y llevarla a la memoria principal. Hay varios métodos paraacceder a la información de los archivos. Algunos sistemas operativos ofrecen unúnico método de acceso, mientras que otros, como los de IBM, soportan diferentesmétodos. La elección del más apropiado en cada caso es una cuestión de diseño atener muy en cuenta.

A continuación veremos los dos principales métodos de acceso: acceso secuencial yacceso directo. No obstante, a partir del acceso directo pueden construirse algunasvariantes, como son el ������� �� y el ����������� �� .

�������� � ����� ��� ��

En este modo de acceso (el más simple y común) la información se procesa enorden secuencial, es decir, un registro detrás de otro.

La mayor parte de las operaciones de acceso a un fichero son lecturas y escrituras.Una lectura consiste en leer la siguiente porción de texto y avanzar el puntero delfichero que indica el punto actual de lectura/escritura. De forma similar, una escrituraañade información al final del fichero y avanza el puntero hasta el final de los datosrecién escritos, o sea, hasta el nuevo fin del fichero. También se puede realizar unaoperación de “rebobinado” o retroceso hasta el principio del fichero, que pone elpuntero de L/E apuntando al comienzo de éste. Algunos sistemas también disponende operaciones para saltar registros hacia adelante y hacia atrás.

El modo de acceso secuencial está basado en el modelo de la cinta magnética, peropuede utilizarse tanto en dispositivos de acceso secuencial (cintas) como en los deacceso directo (discos).

Page 9: [004] Sistemas Operativos - Gestion de Ficheros

������������������

�������������� ��.

�������� � ��� ��� ��

Los ficheros de acceso directo están compuestos por registros de longitud fija, de talforma que se permite que los programas puedan leer o escribir registros encualquier posición sin ningún orden concreto. Un ejemplo clásico de ficheros querequieren este modo de acceso son los de bases de datos.

Para poder realizar un acceso directo a un fichero, se requiere que el dispositivo quelo soporta sea de acceso directo, como el disco magnético, que permite acceder acualquier punto de su superficie sin recorrer todos los anteriores.

Un fichero de acceso directo se ve como una secuencia numerada de registros en laque se permite leer o escribir cualquiera de ellos, indicando simplemente su númerode orden. Por esto, las operaciones de L/E deben especificar, como un parámetromás, el número del registro al que desean acceder, o bien realizar en primer lugaruna operación de posicionamiento y a continuación una operación de lectura oescritura convencional (sin número de registro). El número de orden suele ser unnúmero relativo al comienzo del fichero, y dado que los registros son de longitud fijay se conoce la dirección de comienzo del fichero, resulta inmediato el cálculo de laposición de cualquier registro.

Algunos sistemas que disponen de ambos tipos de acceso (secuencial y directo)indican en el momento de creación del fichero el tipo de acceso permitido, de talforma que si se declara como de acceso directo luego no se puede tratarsecuencialmente; pero no obstante, con acceso directo siempre se puede simularfácilmente un acceso secuencial.

Page 10: [004] Sistemas Operativos - Gestion de Ficheros

������������������

���/ ��������������

6LVWHPDV�2SHUDWLYRV�, 6LVWHPDV�GH�)LFKHURV����

�������������� �� � ���� ��)��2*,�*2-�#)�"3���,4)23�

�5�3#3��#)�-,,)�3

�� ���������������� ���� ������ �������������� ��������������������� 3 ��.���������� ���������������� �$ ������������������������� ���.���������'�

)��� 3 �������������� ���� ��������� ���� ����.������� �$ ���������������� 6 ������������ �$��� ��

���� $�

6 2��� ����.�#����

��� ������ ��� ���

��� �������� ��

�"������ ��������������� ������ ���������� ������������� *�� �$��� ���� ������� �

���������'����������������������������#��-������#� ����

�)������� ��������� ������ � �$��� ��������$����������.����� �$ ���������������� � �������������������� �$��� ���������$(��� ����� ������ �0�� �������������1

�"������ ����������"7)������.�������8��� �$��� ������ ����� ���������� ������������������������

�)����������������������� �������������������� ��������������������

! ������� !��������-����� ��

2������� "�� 7)�� ���

Page 11: [004] Sistemas Operativos - Gestion de Ficheros

������������������

�������������� ����

���� ��� ������Los sistemas de ficheros pueden ser muy extensos, por lo que se requiere algunaorganización. Normalmente esta organización se realiza en dos niveles: particionesy directorios (Figura 5).

En primer lugar, el sistema de ficheros se divide en ����������� o volúmenes, de talforma que cada disco contiene una o más particiones. En algunas ocasiones lasparticiones se utilizan para proporcionar áreas separadas de disco, tal que se tratancomo dispositivos diferentes, mientras que otras veces se tienen particiones queocupan más de un dispositivo, agrupando varios discos en una única estructuralógica, abstrayéndole al usuario de la representación física de la estructura deficheros.

Cada partición debe incluir información o atributos sobre los ficheros que contiene.Estos atributos se guardan en el ���������. Los atributos de un fichero son datoscomo el nombre, tamaño, tipo, dirección en el disco, etc. De hecho, el directorio esuna tabla que asocia cada nombre de fichero con sus atributos.

Las operaciones� que se pueden realizar con un directorio están referidas a lagestión de ficheros (no al contenido de los ficheros). Así, tenemos operacionescomo las siguientes:

• &����� ��� �������. Al crear un fichero se debe añadir una entrada en eldirectorio.

• )����������������. Cuando ya no se necesitan los datos de un archivo, se debeborrar la entrada correspondiente del directorio.

• &������� �,� ������� �� ��� �����0�. Si cambia el contenido o el uso de unfichero, se debe poder cambiar su nombre.

• )������ ��� �������. Para realizar cualquiera de las acciones anteriores, lagestión de un directorio debe ofrecer un mecanismo de búsqueda rápida de laentrada del directorio correspondiente a cada fichero.

• (������������������. Se debe poder obtener la lista de todos los ficheros de undirectorio, con sus atributos correspondientes.

• 1�������� ���� �,� ���������� ��������. A veces se realizan operaciones queabarcan a todos los ficheros de un directorio, como por ejemplo cuando serealiza una copia de seguridad de todo un sistema de ficheros.

������ ����� ������ ��� ������Por lo que hemos visto hasta ahora, en un disco puede haber una o variasparticiones, dentro de cada cual se encuentra una serie de ficheros, cuyos nombresy atributos están contenidos en un único directorio. Pero es muy posible que elnúmero de los ficheros que comprende una partición sea muy elevado, yseguramente con contenidos muy heterogéneos, por lo que el trabajo con una lista

Page 12: [004] Sistemas Operativos - Gestion de Ficheros

������������������

���� ��������������

6LVWHPDV�2SHUDWLYRV�, 6LVWHPDV�GH�)LFKHURV����

�������������� �� �#� ���� ���"������������������� ����������� ���.��%������

4�.������ $���'� ���������� ��

#� ���� ��

���� ��!� �������-

#� ���� ��

���� ��!� �������/

#� ���� ��

���� ��!� �������,

#��,3��9 #��,3��:

)��������������������������� ���������� ������������+������ ����������� ���������� ������

���$�� �� �������� �� �� ��������� � �� ������� ����� �� ������

���$���� ����� �� �����

�� ������

�� ������

�� ������

�� ������

��� ������ ������� ������

/���� ����� �, �� �������� �/� � �������� �"���� �#� ���� ��

,����� ����� �������� �2��� � ������������������ ��

� �

Page 13: [004] Sistemas Operativos - Gestion de Ficheros

������������������

�������������� ����

muy grande de ficheros puede resultar engorroso. Por ello, puede ser convenienteorganizar los ficheros en jerarquías, según su contenido o con cualquier otro criterio.Esto quiere decir que se necesitan estructuras de directorios dentro de cadapartición. Veamos a continuación las más usuales.

�������� ��� ���������!�"��

La estructura más simple es, desde luego, la que consta de un único directorio porpartición. Ya que todos los ficheros están en el mismo directorio, resulta fácil deimplementar y mantener.

Los problemas con los directorios de un solo nivel aparecen cuando se comparteentre varios usuarios, pues ya que todos los ficheros están en el mismo directoriodeben tener nombres distintos para poder distinguirlos, lo cual resulta problemáticocuando dos usuarios quieren llamar ��� a su fichero de pruebas.

Incluso con un único usuario, a medida que aumenta el número de ficheros,empieza a resultar difícil asignarles nombres únicos, pues, además, en algunossistemas la longitud de los nombres está bastante limitada (MS-DOS permite 11caracteres); otros sistemas, como Unix, permiten hasta un máximo de 255caracteres.

�������� ��� ������� ��!�"����

El principal problema que presentan los directorios de un solo nivel es la colisión denombres de ficheros de distintos usuarios. La solución obvia es crear directoriosseparados para cada usuario.

En la estructura de directorios de dos niveles, hay un Directorio Maestro y múltiplesDirectorios de Usuario (DU). Todos los DU’s tienen la misma estructura, pero cadauno de ellos contiene los nombres de fichero de un único usuario. Cuando unusuario se conecta al sistema, se busca en el Directorio Maestro, indexando en éstepor el nombre o su número de cuenta, obteniendo una entrada que apunta a su DU.

Cuando un usuario se refiere a un cierto fichero, solamente se busca en sudirectorio de usuario, por lo que diferentes usuarios pueden tener ficheros con elmismo nombre con tal de que todos los nombres dentro de cada directorio deusuario sean únicos.

La estructura de dos niveles resuelve el conflicto de la colisión de nombres dedistintos usuarios, pero todavía tiene algunos inconvenientes. Como hemos visto,con dos niveles de directorios se aísla a los usuarios entre sí, lo cual es una ventajacuando los usuarios son completamente independientes, pero puede suponerciertas trabas cuando un grupo de usuarios quieren cooperar en alguna tarea ynecesitan acceder a ciertos ficheros con datos comunes. En algunos sistemas no sepermite acceder a ficheros que no sean del propio directorio de usuario, otros sí lotoleran. En este último caso, para referenciar un directorio hay que indicar su

Page 14: [004] Sistemas Operativos - Gestion de Ficheros

������������������

���� ��������������

6LVWHPDV�2SHUDWLYRV�, 6LVWHPDV�GH�)LFKHURV����

#� ���� ��� �)�� ���� �����#� ���� ���#� ���� ��

���� ��

correo protocol pruebas bin libro proyecto

����������������� ��

antonio paco pilar carmen

datos bin libro test

#� ���� ������� �

#� ���� ����*��� ��� datos bin lechex abcso1

������������������������������� ����

�������������������������������

sistema cont usr

datos prog lib datos prog lib

p1 p2 p3

v1 v2

antonio paco pilar

datos bin libro so1 hex abc

cap1 cap2 cap3 notas trans

Page 15: [004] Sistemas Operativos - Gestion de Ficheros

������������������

�������������� ����

������ completo desde la raíz del sistema, es decir, hay que hacer constar elnombre del usuario propietario del fichero seguido del nombre del fichero. Lasintaxis para expresar el camino completo de acceso a un fichero varía con cadasistema.

Un caso especial del problema de la compartimiento de ficheros se produce con losficheros del sistema, o sea, aquellos programas que se proporcionan como parte delsistema operativo (cargadores, ensambladores, bibliotecas de programas, etc.),programas que normalmente se ofrecen en la forma de ficheros ejecutables.Cuando se teclea un comando, el intérprete de comandos del sistema operativotrata el nombre del comando como el nombre de un fichero, procediendo acontinuación a cargarlo y ejecutarlo; pero claro, lo busca en el directorio del usuarioactual, por lo que habría que copiar a cada usuario todos los ficheros del sistemapara poder ejecutar los comandos. Parece obvio que la copia de todos los ficherosdel sistema a todos los usuarios sería un enorme desperdicio de espacio.

La solución a este problema es complicar ligeramente el mecanismo de búsquedade ficheros. Se tiene un directorio de usuario especial que contiene los ficheros delsistema (por ejemplo, el usuario 0). Siempre que se escribe un comando en elteclado, el sistema operativo busca el nombre de fichero correspondiente en eldirectorio del usuario y si no lo encuentra procede a buscarlo en el directorio delusuario 0. A la secuencia de directorios en los que se realiza la búsqueda de unfichero se le conoce con el nombre de ����������2�3���. Esta idea se puedeampliar, para que el camino de búsqueda contenga una lista de directorios a serexplorados en la búsqueda cuando se escribe un comando en el terminal. Estemétodo lo utilizan sistemas como Unix y MS-DOS.

�������� ��� ��������#����

Una vez que hemos representado los directorios de dos niveles como un árbol dedos niveles, la generalización natural es extender la estructura de directorios a unárbol de profundidad arbitraria. Esta generalización permite a los usuarios crear suspropios directorios, para organizar sus ficheros con cualquier estructura deseada.

El árbol de directorios tiene un ���������� ��45, el cual puede contener ficheros ysubdirectorios. (Estrictamente hablando, “directorio” es el que se encuentra en laraíz del sistema de ficheros, mientras que los “subdirectorios” son los directorios delos demás niveles. No obstante, aquí nos referiremos a ambos de forma indistinta).Un directorio es simplemente otro fichero, pero con una estructura interna conocidapor el sistema operativo, el cual lo trata de forma especial. Para saber si un ficherocontiene datos o es un directorio, un campo de la correspondiente entrada deldirectorio que lo contiene indica el tipo de fichero (datos/directorio).

Page 16: [004] Sistemas Operativos - Gestion de Ficheros

������������������

���* ��������������

������ !�������$����% ��� �������&��'�En la estructura de árbol de directorios, cada fichero tiene un único nombrecompleto o ���������������. El nombre de camino suele estar formado por trespartes (Figura 7):

- Partición- Directorio- Nombre de fichero

Donde ������� es la secuencia de directorios por los que hay que atravesar,desde la raíz, para llegar al subdirectorio que lo contiene. Como se puede ver en laFigura 7, los tres componentes del camino suelen formar una ristra de caracteres sinblancos y separados por algún carácter especial. El propio nombre del fichero figuracomo último componente del nombre completo.

El inconveniente que se le puede presentar a un usuario es que el acceso a ciertosficheros muy utilizados puede resultar muy engorroso, por tener que estarsuministrando continuamente nombres de camino absolutos (desde la raíz). En unmomento determinado, se dice que cada usuario está trabajando con los ficheros desu �����������������6� (en uno de los subdirectorios de su estructura). Esto quieredecir que si se hace referencia a un fichero únicamente por su nombre, el sistemabusca el fichero en el directorio de trabajo actual, y no hay necesidad de estarutilizando el nombre completo (camino desde la raíz). Para esto, los sistemasoperativos ofrecen comandos (cd en Unix y MS-DOS) para poder establecer eldirectorio de trabajo más apropiado a las necesidades de cada momento.

Otra forma de referenciar ficheros es utilizando caminos relativos, es decir, elcamino que hay desde el directorio de trabajo (no desde la raíz) hasta el fichero encuestión.

Page 17: [004] Sistemas Operativos - Gestion de Ficheros

������������������

�������������� ���+

6LVWHPDV�2SHUDWLYRV�, 6LVWHPDV�GH�)LFKHURV����

�������������� �� � �#� ���� ���

;,����2��� ����� �������� �����< ���=

�����������,������-�������

/bin/juegos/aviones/topgun

c:\bin\juegos\aviones\topgun

!� ������

#� ���� ��

���� �

)������������������������� �����.������'�������������

0�� ��������������(�����1

������������������������������������ �

cd /bin/juegos/aviones

topgun

doom

. . .

. . .

cp topgun /copias/juegos

Page 18: [004] Sistemas Operativos - Gestion de Ficheros

������������������

���- ��������������

������ ��������(���� ���La información de los ficheros que se mantienen en memoria secundaria debeprotegerse tanto de los daños físicos como de un acceso indebido. Para que undispositivo de memoria secundaria tenga protegidos sus datos frente a dañosfísicos, debe tener �����,��; mientras que para evitar un acceso indebido a losdatos, debe ofrecer mecanismos de ��������!�.

Los ficheros pueden deteriorarse por problemas del hardware (como errores delectura o escritura), fallos de alimentación, polvo, temperaturas extremas, etc.,incluso pueden borrarse accidental o malintencionadamente. La fiabilidad delsistema ante estas situaciones normalmente viene dada mediante la duplicación dela información. Las salvaguardas pueden realizarse manualmente oautomáticamente. En este último caso el sistema realiza las copias de seguridad aintervalos regulares de tiempo sin intervención alguna del operador.

Aquí vamos a centrarnos, principalmente, en los mecanismos de protección quedeben ofrecerse en entornos multiusuario.

La necesidad de proteger los ficheros es consecuencia directa de la posibilidad deacceso a los mismos. En los sistemas que no permiten acceder a ficheros de otrosusuarios, la protección no es necesaria. Este es un extremo, es decir, proporcionarprotección completa prohibiendo el acceso de otros usuarios. El otro extremo esofrecer un acceso libre sin ningún tipo de protección. Estos dos enfoques sondemasiado radicales, obviamente lo que se requiere es un �������������,��.

Los mecanismos de protección controlan el acceso a los ficheros limitando los tiposde acceso que se pueden realizar. Algunas de las operaciones básicas que sepueden realizar con los ficheros son:

• (��� de un fichero.• '������� o sobreescribir en un fichero.• '6������ un fichero. O sea, cargarlo en memoria y ejecutarlo.• (����� el nombre y otros atributos de un fichero.

Pueden encontrarse diversos sistemas de protección, donde cada uno tieneventajas e inconvenientes, y se debe seleccionar uno dependiendo del número deusuarios y el tipo de aplicaciones. Veamos a continuación los dos más utilizados.

������ )������� ���%*�����La solución más común al problema de la protección suele consistir en hacer que elpermiso de acceso dependa de la identidad del usuario, puesto que distintosusuarios pueden necesitar distintos permisos de acceso a un mismo fichero. Así,una cosa que se puede hacer es asociar una ,����� �� ������ a cada fichero odirectorio, indicando en ella el nombre de cada usuario autorizado con susrespectivos permisos de acceso (lectura, escritura, ejecución).

Page 19: [004] Sistemas Operativos - Gestion de Ficheros

������������������

�������������� ���.

6LVWHPDV�2SHUDWLYRV�, 6LVWHPDV�GH�)LFKHURV����

�������������� �� �! ��������"������ �������������� ��������� ��

�������� ���$� ���

#�+��>����0�������1

-������������0! ��������1

����� �3"*,�3�)�

"�� �-�����

� �������������

! ����� �������������� ������� ���

"����������������� ������������� ������������������������� ��

������������������������ ��������������������� ����'�

"))2 )?),*�-2

)�,2�/�2 /322-2

-@-#�2 "���-2�-�2�/*�3�

Page 20: [004] Sistemas Operativos - Gestion de Ficheros

������������������

���/ ��������������

Cuando un usuario solicita el acceso a un fichero, el sistema operativo comprueba lalista de acceso asociada al fichero. Si el usuario figura en la lista con el permisooportuno, se le concede el acceso; en caso contrario, se le deniega. Este sistema deprotección lo utiliza el sistema operativo VMS de Digital y Windows-NT.

El principal problema de las listas de acceso se debe a su tamaño. Si se quierepermitir que todo el mundo pueda leer un fichero, se deben enumerar todos losusuarios con su correspondiente permiso, lo cual genera dos desafortunadasconsecuencias:

• La construcción de la lista puede ser una labor tediosa, sobre todo si no seconoce con antelación la relación de todos los usuarios del sistema. Además,cada vez que se da de alta un nuevo usuario, hay que actualizar las listas deacceso de todos los ficheros públicos del sistema.

• Las entradas del directorio, tienen que ser de tamaño variable, con lo que sugestión resulta más complicada.

Estos problemas pueden resolverse si se utiliza una versión condensada de la listade acceso, es decir, clasificar a todos los usuarios del sistema en tres grupos:

• #����������: el usuario que creó el fichero.

• 7����: el conjunto de usuarios que comparten el fichero y requieren permisossimilares.

• ��0����: el resto de los usuarios del sistema

A cada uno de estos conjuntos de usuarios se les puede definir permisos de lectura,escritura y ejecución, por lo que se requieren tan solo 9 bits para indicar lospermisos de acceso de cada fichero para todos los usuarios del sistema.

Este tipo de protección, utilizado en Unix, implica que se debe poder crear grupos detrabajo, lo cual es tarea del administrador del sistema. La asignación de lospermisos a cada una de estas tres categorías de usuarios es responsabilidad delpropietario del fichero.

Windows NT también dispone de grupos de usuarios, para evitar el problema de lasaltas y actualizaciones de usuarios en grupos de trabajo.

No debemos olvidar que los directorios también son ficheros, pero los permisos quese les puede asignar difieren de aquellos de los ficheros de datos. A un directorio sele puede poner permisos de acceso, entre otras cosas, para:

• Poder crear y borrar directorios.• Poder listar su contenido (nombres de fichero y sus atributos).• Poder pasar a través de él para acceder a ficheros de subdirectorios suyos.

Page 21: [004] Sistemas Operativos - Gestion de Ficheros

������������������

�������������� ����

6LVWHPDV�2SHUDWLYRV�, 6LVWHPDV�GH�)LFKHURV����

�������������� �� � ! ��������"����� ��������������

�������������������������� ��

,�������� ����� ���� ������������ ��������������������������������������� ���.��� �����

���������� �������� �'���

��,3�A)��)��)�

,���� ���������������� �� ��� ���������������

���� ���

)�� �������� ���� ��������$������ �����

B������������������������������

C��3"*,�D��E

,������ ����"�������-���������������

!23!�)�-2�3 B2*!3 2)��3�#)�*�*-2�3�

0 F%1 0 F%1 0 F%1

G )��� ������ ����������� ������������������ �����

G )��������� �� ������������$����������������� ������$ ����

"���� ���� ���������&����������� ��� ����������������, �������.��� ������ ���� �����"��������� ���� ����0����� ���.������� ������1

Page 22: [004] Sistemas Operativos - Gestion de Ficheros

������������������

���� ��������������

��+���������� ���������������� �����Habiendo visto en los apartados anteriores las características que ofrece el sistemade ficheros, pasaremos a abordar ciertas cuestiones relativas a su implementaciónsobre el dispositivo más común de memoria secundaria: el disco magnético.

Trataremos diversos modos de asignación del espacio de disco y de surecuperación cuando se libere. También veremos mecanismos para llevar la cuentadel espacio de disco libre y ocupado.

��+��� ����� ���������������� �����En esencia, en cuanto a la gestión de ficheros, el sistema operativo debeencargarse de las siguientes funciones:

1. Traducción y representación de nombres de fichero a direcciones en eldispositivo de memoria secundaria.

2. Administración del espacio del disco. Encargándose tanto de laasignación/recuperación del espacio como de llevar la cuenta del espacio libre.

3. Organización de la estructura de directorios.

Para llevar a cabo estas funciones, el sistema de ficheros está compuesto por unaestructura de varios niveles, donde cada uno tiene su propio cometido y se apoya enel nivel inferior. Veamos algunas características de estos niveles que se indican enla Figura 10-inferior.

• 8��������0��. Los discos magnéticos se suelen utilizar como dispositivos dememoria secundaria sobre los que se mantienen los sistemas de ficheros. Paramejorar la eficiencia en el acceso, las transferencias de datos entre la memoriaprincipal y el disco se realizan en unidades denominadas �,�3���, donde cadauno de los cuales está compuesto de uno o más sectores. El tamaño de lossectores varía de 32 a 4096 bytes, y normalmente suele ser de 512 ó 1024 bytes.

Los discos tienen ciertas características que los convierten en un medioadecuado para el almacenamiento de múltiples ficheros:

− Puede contener una gran cantidad de datos permanentemente.

− Se puede acceder directamente a cualquier bloque de información.

− Es fácil modificar la información, es decir, resulta muy sencillo leer un bloquede disco, modificarlo y volver a escribirlo en la misma dirección que ocupaba.

• &�����,� de� '9. Este nivel, muy dependiente del hardware, lo componen los ����� de dispositivo y las rutinas de tratamiento de sus interrupciones. Un ����de dispositivo es el programa que sabe traducir órdenes de alto nivel a loscomandos correspondientes del hardware propio del disco utilizado, es decir,

Page 23: [004] Sistemas Operativos - Gestion de Ficheros

������������������

�������������� ����

comandos dirigidos a los registros o puertos del controlador del disco, para

Page 24: [004] Sistemas Operativos - Gestion de Ficheros

������������������

���� ��������������

6LVWHPDV�2SHUDWLYRV�, 6LVWHPDV�GH�)LFKHURV�����

�������������� �� �����������������)���������������� ��� ������������ ��������� ����� ����

� !����������� �$ ������������������� ������������

�������������� �� �������������������� ������������� ������

�)��������������� �������� ������

���)����������3�� ����������� ������ �����

�� ��������.� �� ����������������� ��

�B�����������������

�"����� ���� ��������� ���� ���

6 -��$������72����� �����������������������

6 B��������������������� �

! �$ �������-���������

��������"�$���������� ��

��������3 $���'������������ ��

��������/������������ ��

,��� �����)7�

#�����������)�� ���� �������������������� ��

Page 25: [004] Sistemas Operativos - Gestion de Ficheros

������������������

�������������� ����

realizar posicionamiento de cabezas sobre pistas, búsqueda de sectores,formateo de pistas, comprobación de códigos de detección de errores, etc.

• ������� �:����� �� ��������. Aquí se realiza la traducción de las ordenes delectura/escritura de bloques en comandos genéricos de acceso en los que setraducen los números de bloque a direcciones de disco del tipo “disco 1, cilindro27, pista 12, sector 4”.

• ;!�,�� �� ��<���5���!�� �� ��������. La función de este módulo es latraducción de bloques lógicos en bloques físicos, así como de la gestión delespacio libre del disco (métodos de asignación de espacio y administración delespacio libre).

• ������� ,!<������ ��������. Este nivel se encarga, por último, de la estructurade directorios, incluyendo los mecanismos de protección y seguridad vistosanteriormente.

��+��� ���,� ��������� ��)����En un disco magnético, por su gran capacidad, se almacenan una gran cantidad deficheros. El principal problema que se presenta es cómo asignar espacio a estosficheros de tal forma que el espacio del disco se utilice eficientemente (sindesperdiciarlo) y sin perjuicio de la velocidad de acceso a todos los datoscomponentes de cada fichero.

Veamos a continuación los tres métodos de asignación de espacio más utilizado:asignación contigua, encadenada e indexada.

��+����� ���,� ���$����,�

Con este método se requiere que cada fichero ocupe una serie de bloquescontiguos en el disco. Ya que los bloques están adyacentes, no se requierenmovimientos de la cabeza lectora para pasar de un bloque a otro, excepto en elcambio a la pista siguiente en cuyo caso el movimiento es mínimo. Esto quiere decirque el tiempo de posicionamiento no es significativo.

Puesto que los bloques ocupados por un archivo son consecutivos, en las entradasdel directorio solamente se necesita indicar el bloque de comienzo y la longitud delfichero (Figura 11).

Con este sistema de asignación de espacio se soporta bien cualquier método deacceso. Para realizar un acceso secuencial, simplemente se requiere que el sistemaoperativo lleve la cuenta del último bloque accedido, para pasar al siguiente en lapróxima operación de lectura/escritura. En cuanto al acceso directo, también esinmediato; ya que el tamaño de los bloques es fijo, solamente es necesaria unamultiplicación para calcular la dirección de cualquier bloque de un fichero.

Page 26: [004] Sistemas Operativos - Gestion de Ficheros

������������������

���* ��������������

6LVWHPDV�2SHUDWLYRV�, 6LVWHPDV�GH�)LFKHURV�����

������������������� �-��$���������)������4�.������ ������ ����

6�*����'������)�������6�-������2����

�&�������-��$��������)������

��-��$�������,����$����"�����)���������-��$����������%��

��-��$�������,����$��,�������� �����������������������������$���������������������

0 1 2 3

4 5 6 7

8 9 10 11

12 13 14 15

16 17 18 19

20 21 22 23

24 25 26 27

28 29 30 31

carta

fi

prog

libro

lista

�,4)23 #�2 "3�B

carta 0 2fi 6 2prog 14 3libro 19 6lista 28 4

A)��-?-�6������������������

6�/������� ���������� G -������� ����G -����������������

��,3�A)��)��)�6�;,������ ���������+����%������������ �=

6� �$����������)%�� ��

2����� ��,�����������

Page 27: [004] Sistemas Operativos - Gestion de Ficheros

������������������

�������������� ���+

Los problemas que presenta esta asignación contigua aparecen a la hora deencontrar espacio en el disco para un nuevo fichero. El problema de la asignacióndel espacio de disco es similar al de la gestión de memoria principal, en el que hayque satisfacer una petición de tamaño � a partir de una lista de huecos libres. Así, ������� ��� ����� o �� ������� �� � ��� son los algoritmos más comúnmenteutilizados. El inconveniente que presentan estos algoritmos es la fragmentaciónexterna, pues a medida que se crean y borran ficheros el espacio libre del disco seva descomponiendo en huecos cada vez más pequeños (no aprovechables). Laúnica solución a este problema es la compactación, pero por su alto coste entiempo, raramente se suele realizar.

Otro gran problema de esta asignación contigua es cómo determinar cuánto espaciose va a necesitar para un fichero, es decir, cómo saber en el momento de lacreación de un fichero cuál va a ser su tamaño máximo. Cuando el fichero va a serla copia de otro existente, no es ningún problema, pero cuando se trata de lacreación del fichero de salida de una aplicación, puede resultar difícil hacer unaestimación. Si se le asigna poco espacio, pronto nos podemos encontrar con que elfichero no se puede ampliar, en cuyo caso habría que volver a realizar el proceso decreación desde del principio, eligiendo un área inicial mayor; o mover o copiar elfichero a otra área del disco con un mayor tamaño, lo cual puede consumir untiempo considerable.

Incluso aunque se conozca por adelantado el tamaño final de un archivo, obsérveseque si el tamaño final es muy grande pero crece muy despacio, va a haber durantemucho tiempo un área de disco asignada a un fichero e inutilizada (hasta que elfichero crezca y la llene), o lo que es lo mismo, se va a producir fragmentacióninterna.

��+����� )����� �����

Como se puede ver en la Figura 12, con este método de asignación, cada ficheroestá compuesto por una lista de bloques encadenados, de tal forma que ahora cadabloque puede estar situado en cualquier lugar del disco. Por ejemplo, un ficheropuede comenzar en el bloque número 7, continuar en el 24, después el 12, y porúltimo terminar en el 5. Cada bloque debe contener un puntero al siguiente bloquede la lista. Obviamente, estos punteros no están accesibles al usuario, pero si cadabloque es de 512 bytes, por ejemplo, y cada puntero requiere 4 bytes, el área dedatos de cada bloque queda reducida a 508 bytes.

De esta manera, en las entradas del directorio solamente hay que indicar cuál es elprimero y el último bloque de cada fichero.

Con la asignación mediante lista encadenada, ya no se produce fragmentaciónexterna, y cualquier bloque libre puede aprovecharse para satisfacer una petición deespacio. Nótese también que ahora no es necesario indicar el tamaño en la creaciónde un fichero; a medida que va creciendo se van añadiendo bloques a su listaencadenada y, desde luego, nunca se requiere una compactación.

Page 28: [004] Sistemas Operativos - Gestion de Ficheros

������������������

���- ��������������

6LVWHPDV�2SHUDWLYRV�, 6LVWHPDV�GH�)LFKHURV�����

������������������� � -��$���������)������

0 1 2 3

4 5 6 7

8 9 10 11

12 13 14 15

16 17 18 19

20 21 22 23

24 25 26 27

28 29 30 31

��"�����)�������)������� �����$�� ���������������������������������������

�,4)23 ,3��)�H3 ��

pipo 9 25

���� �����

2516

10

-1

1

A)��-?-�

������� ����������� ���������

�������.�� �$�����������%�� ��

��,3�A)��)��)�

���������������� ���������� ����

��)��������� ����������� ��

��������������

������������������������� ������� �������� ����������������.� �� �$���������

"�� - � ��������������! ����������-������#� ����

I

:9J

KKL

M9N

M9N

���

KKL

)�� �����#� ���� �� test . . . 217

nombre comienzo

��������������������������'��

��"��-��������� $� ������2-�

Page 29: [004] Sistemas Operativos - Gestion de Ficheros

������������������

�������������� ���.

No obstante, también presenta ciertos inconvenientes. El principal es que solamentese puede utilizar eficientemente para acceso secuencial, pues para acceder alenésimo bloque de un fichero, es necesario empezar por el primer bloque e irrecorriéndolos uno por uno hasta llegar el bloque �, y teniendo en cuenta que losbloques están dispersos en el espacio de direcciones, cada acceso a un bloque paraleer el puntero al siguiente puede consumir un tiempo muy significativo.

Además, aunque es un mal menor, se debe tener en cuenta que los punterosconsumen espacio, así, en un bloque de 512 bytes, si el puntero ocupa 4 bytes, serequiere un 0,78% del disco dedicado a espacio para punteros. Este problema suelesolventarse utilizando ��� �� como unidades de asignación. Un ������ es ungrupo de � bloques, de tal forma que en cada ������ hay un puntero indicando ladirección del siguiente ������ de datos. Claramente, el espacio dedicado a punterosqueda dividido por �. Además de esto, se mejora el tiempo dedicado aposicionamiento, ya que en cada ������ los � bloques están consecutivos; ytambién disminuye el tamaño de la lista de bloques libres, pues están agrupados de� en �. El problema de los ������� es que generan fragmentación interna. Noobstante, se suelen utilizar en la mayoría de los sistemas operativos.

Un último problema que presenta la lista encadenada es la fiabilidad. Ya que losbloques de datos de un fichero están formados por una lista de punteros dispersospor el disco, la pérdida o daño de uno de ellos ocasiona también la pérdida de lainformación del fichero contenida en los restantes bloques de la lista. Hay algunassoluciones parciales, como la utilización de listas de doble enlace, pero tambiéngeneran una mayor sobrecarga en el tiempo de gestión de la lista.

Una importante variación de este método de asignación es la utilización de la ���,��� ���<����!�� �� �������� (FAT). Este sistema, utilizado por MS-DOS y OS/2,consiste en tener una tabla al comienzo de cada partición del disco, la cual contieneuna entrada por cada bloque del disco, y están ordenadas por número de bloque. Sinos fijamos en la parte inferior de la Figura 12 podemos ver que la entrada de latabla correspondiente al primer bloque de un fichero contiene el número delsiguiente bloque; la entrada de ese siguiente bloque contiene a su vez la direccióndel siguiente, y así sucesivamente hasta llegar a una entrada cuyo contenido es ���,indicando el fin de la lista encadenada. Los bloques no utilizados para ningún ficheroaparecen con un 0 en la FAT, indicando que están libres.

Un beneficio inmediato de la FAT es que mejora significativamente el tiempo deacceso directo, pues las búsquedas se realizan sobre la tabla, no sobre los bloquesdel disco. Para mejorar las prestaciones de este sistema, conviene tener cargada laFAT en memoria principal o caché, para evitar así acceder al disco en la gestión dela tabla.

Page 30: [004] Sistemas Operativos - Gestion de Ficheros

������������������

���/ ��������������

��+����� ���,� �������-�

La asignación indexada trata de solventar los problemas de la lista encadenada conel acceso directo. Para ello, lo que hace es reunir todos los punteroscorrespondientes a los bloques de un fichero en un único lugar: el �,�3��� �4����� (Figura 13).

Cada fichero tiene su propio bloque de índices, que consiste en un vector ordenadode los números de bloque del fichero, de tal forma que la enésima entrada del vectorcontiene el número del enésimo bloque del fichero. Como se puede apreciar, esteesquema es similar al de la paginación de memoria principal, en el que nosservíamos de una tabla de páginas.

Cuando se crea el fichero, todas las entradas del bloque de índices contienen elvalor ���; a medida que el fichero crece y se van añadiendo bloques, se vananotando sus números sucesivamente en el bloque de índices.

En el directorio simplemente hay que hacer constar la dirección del bloque deíndices de cada fichero.

Ahora sí se soporta bien el acceso directo sin sufrir fragmentación externa, pues aligual que en la lista encadenada, cualquier bloque libre del disco sirve parasatisfacer una petición de espacio.

El problema que presenta este sistema es el desperdicio de espacio, pues eltamaño del bloque de índices normalmente es mayor que el requerido para lospunteros en la lista encadenada. Si consideramos el caso de un fichero pequeño(uno o dos bloques de datos), se requiere un bloque de índices entero aunquesolamente se utilicen una o dos entradas. Como siempre, se plantea el dilema: si elbloque de índices es grande, se desaprovecha mucho espacio; si es pequeño,puede que no quepan todos los índices de un fichero extenso.

Una buena solución a este problema es el utilizado por Unix (Figura 14). Unixmantiene unos cuantos punteros a bloques de datos en el I-nodo (punterosdirectos), pero en caso de que se llenen estos bloques, entonces utiliza otro puntero(puntero indirecto) que indica la dirección de un bloque de índices, el cual contienepunteros a bloques de datos. Si también se utilizan todos esos bloques, en el I-nodose dispone de punteros con doble y triple indirección a bloques de datos.

Al igual que con la FAT, para mejorar los tiempos de acceso, se pueden cargar losbloques de índices en memoria principal, aunque nunca se evita el tiempo deposicionamiento, ya que los bloques de datos se encuentran desperdigados por eldisco.

Page 31: [004] Sistemas Operativos - Gestion de Ficheros

������������������

�������������� ����

6LVWHPDV�2SHUDWLYRV�, 6LVWHPDV�GH�)LFKHURV�����

������������������� � -��$���������)��������-��$����������%��

�������������� ������������������ ���������������������>����������������� ���������������������

0 1 2 3

4 5 6 7

8 9 10 11

12 13 14 15

16 17 18 19

20 21 22 23

24 25 26 27

28 29 30 31

�,4)23 /"3O*)�#)�P�#�,)�

pipo 19

L:I9

9I:Q6969 � � � �

!23/")�-��;����+�����/��������P�����=

���)��B2-�#)

,�������� ��������+��������� ��������������������������

���)��!)O*)@3

!��������������������������>����������

����� ��$ ���

�3"*,�3�)���/���������>����������'���

��� �������*��%

Page 32: [004] Sistemas Operativos - Gestion de Ficheros

������������������

���� ��������������

6LVWHPDV�2SHUDWLYRV�, 6LVWHPDV�GH�)LFKHURV�����

$VLJQDFLyQ�GH�(VSDFLR �-��$����������%����������*��%

3HUPLVRV

3URSLHWDULR

)HFKDV

7DPDxR

1��EORTXHV

%ORTXHV

'LUHFWRV

6LPSOH�LQGLUHFWR

'REOH�LQGLUHFWR

7ULSOH�LQGLUHFWR

'DWRV

'DWRV

'DWRV

'DWRV

'DWRV

'DWRV

���

'DWRV

'DWRV

'DWRV

'DWRV�����

��+��� *������������ ��)����Ya que el espacio del disco no es infinito, es necesario reutilizar el espacio de losficheros borrados para ficheros nuevos. Si partimos de la base de que la unidad deasignación de espacio es el �,�3��, para saber en cada momento el espacio libredel disco, es necesario mantener una lista de los bloques libres, es decir aquellosque no están asignados a ningún fichero o directorio.

Para crear un fichero se busca en la lista de bloque libres el número de bloquesnecesarios para satisfacer el espacio requerido para el nuevo fichero. Entonces, losbloques seleccionados se borran de la lista de bloques libres. Cuando se borra unfichero, los bloques que lo componen se añaden a la lista de bloques libres.

Antes de ver dos mecanismos distintos para llevar la cuenta del espacio libre (mapade bits y lista encadenada), se debe establecer cuál va a ser el tamaño del bloque.

��+����� &�.����/��0��

Dado el modo en el que están organizados los discos, parece que los candidatos aser unidad de asignación son: el sector, la pista y el cilindro.

Page 33: [004] Sistemas Operativos - Gestion de Ficheros

������������������

�������������� ����

6LVWHPDV�2SHUDWLYRV�, 6LVWHPDV�GH�)LFKHURV�����

������������������� �B����������)�������"�� �"���������������������������$������������������

;�����+������������=

B2-�#)

�$������������� ��

!)O*)@3

-����������������� �

���������!������������������"��#���

!�������� K: JMN��.���

� �������� 9M���

����������������� KI���KI�R�N�R�0S7K: JMN1�%�9M

:II

9QI

9II

QI

I

9II�T

JQ�T

QI�T

:Q�T

I�T

S�.���7�-� ������������

�������

9:N :QM Q9: ��9�S :�S U�S N�S����+�����������

����������������������

����+���� ������/�����

Q9:�6�:�S�

Utilización del espacio de disco

Vtransferencia

Page 34: [004] Sistemas Operativos - Gestion de Ficheros

������������������

���� ��������������

Volvemos a la eterna disyuntiva. Si elegimos al cilindro como bloque de asignación,entonces todos los ficheros, incluso los de un solo byte, tendrán al menos un cilindroasignado. Algunos estudios han mostrado que el tamaño medio de los ficheros deentornos Unix está alrededor de 1 Kbyte, por lo que la utilización de cilindros de 32K como unidad de asignación significaría un desaprovechamiento de 31/32, o lo quees lo mismo, el 97% del espacio del disco. Por otra parte, la utilización de pequeñasunidades de asignación implica que cada fichero estará formado por muchosbloques. Ya que la lectura de cada bloque requiere un tiempo de posicionamiento yun retardo rotacional, la lectura de un fichero formado por muchos bloquespequeños será lenta. (Véase el ejemplo de la Figura 15, en el que se muestra eltiempo de lectura de un bloque de K bytes).

Las curvas de la Figura 15-inferior nos muestran la velocidad de transferencia y elaprovechamiento del espacio del disco en función del tamaño del bloque, supuestoque el tamaño de los ficheros es de 1 Kbyte. La línea continua muestra la velocidadde transferencia; a medida que aumenta el tamaño del bloque, vemos que la escalade la parte izquierda indica una mayor velocidad de transferencia. Sin embargo, lalínea de trazos pone de manifiesto cómo se empobrece el aprovechamiento delespacio del disco (en la escala de la parte derecha) a medida que aumenta eltamaño del bloque. Como siempre, la eficiencia en tiempo de respuesta yaprovechamiento del espacio están en conflicto.

El compromiso suele llevar a un tamaño de bloque de 512 bytes a 2 Kbytes. Si seelige un bloque de 1 K para un disco con sectores de 512 bytes, entonces siemprese leerán 2 sectores consecutivos y se les tratará como una unidad indivisible.

��+����� ����/���

Este método de administración de los bloques libres es similar al visto anteriormenteen la gestión de la memoria principal. Consiste en tener un mapa de bits en el quecada bloque del disco está representado por un bit. Así, si el bloque está libre, su bitcorrespondiente tendrá un 1. Si, por el contrario, está ocupado, el bit tendrá un 0.

La principal ventaja de este sistema es su simplicidad y eficiencia, puesnormalmente resulta fácil encontrar el primer bloque libre, o los � bloques libresconsecutivos, especialmente ahora que los procesadores suelen disponer deinstrucciones especiales para la búsqueda de series de bits en memoria. Estoimplica que el mapa de bits debe copiarse a la memoria principal para realizar lagestión, y ocasionalmente copiarlo a disco para mantenerlo coherente.

Mantener el mapa de bits en memoria principal no presenta ningún inconveniente enlos discos pequeños, pero con discos de gran capacidad (del orden de gigabytes) elmapa de bits para bloques de 512 bytes puede llegar a ser considerable (más de300 Kbytes). La técnica de los ������� puede ayudar a disminuir el tamaño delmapa de bits.

Page 35: [004] Sistemas Operativos - Gestion de Ficheros

������������������

�������������� ����

6LVWHPDV�2SHUDWLYRV�, 6LVWHPDV�GH�)LFKHURV�����

������������������� � B����������)�������"�� �

0 1 2 3

4 5 6 7

8 9 10 11

12 13 14 15

16 17 18 19

20 21 22 23

24 25 26 27

28 29 30 31

"���/���������#����9 ���������.�������$�������������� �: �-���� � ��������� ��������������

������������������ ���������������������������

��������������������

,����� ����������������������� � �������������� �

��� � ���������C E

��������� !��������

3� ����������������"�#�������

/�������"�� ��� :��K��U��Q��N��L��9I��99��9:��9K��9J��9N��:Q��:M��:J

�������/���� II9999II999999III99IIIIII999III� � �

��)���������.����������

���������������� ����2-�

��C�3�����������������$ �����E

Page 36: [004] Sistemas Operativos - Gestion de Ficheros

������������������

���* ��������������

��+����� )����� ����

Al igual que sucedía con la gestión de la memoria principal, otra opción para llevar lacuenta del espacio libre de disco consiste en mantener una lista de los bloqueslibres.

En una dirección prefijada del disco se guarda el puntero al primer bloque libre; esteprimer bloque contiene un puntero al siguiente bloque libre; y así sucesivamentehasta llegar al último bloque libre, cuyo puntero tendrá un valor ��� (Ver Figura 16).

El problema de esta solución es su ineficiencia, pues para ir recorriendo la lista hayque ir leyendo cada uno de los bloques, que por estar dispersos por el discoconlleva un tiempo substancial. Afortunadamente, no es habitual tener que recorrerla lista, ya que normalmente sólo se requiere un único bloque libre (el primero), puesla asignación de espacio libre a los ficheros se suele ir realizando poco a poco, amedida que el fichero va creciendo.

Recordando en qué consistía la FAT, vemos que constaba de un mapa de bloquesencadenados en el que las entradas correspondientes a bloques libres tenían uncero. Como se puede apreciar, utilizando este método de asignación de espacio nose requieren listas adicionales para llevar la cuenta de los bloques libres.

��+��� ��������� �������� ��� ������Un directorio es un fichero más, con la particularidad de que los datos que contieneson precisamente la información sobre los ficheros que contienen los datos deusuario. Esta información suele consistir, básicamente, en una lista de los ficherosde usuario junto con sus atributos correspondientes o la dirección del bloque deatributos. La estructura del directorio es conocida por el sistema operativo, que estáencargado de la gestión del Sistema de Ficheros.

Sobre la implementación del directorio, la principal consideración que hay que teneres sobre la organización y algoritmos de acceso a sus entradas.

Hay dos algoritmos básicos para organizar y gestionar las entradas de un directorio:la lista lineal y la tabla ����. Veámoslos en detalle.

• (�����(����,. El método más simple para implementar un directorio consiste enutilizar una lista lineal de nombres de ficheros con sus correspondientes atributosy punteros a los bloques de datos. Aunque este método resulta muy fácil deimplementar, con una lista lineal de entradas de directorio se requiere unabúsqueda igualmente lineal para encontrar una entrada concreta, lo que consumeun tiempo importante. Este tiempo puede resultar molesto, sobre todo si tenemosen cuenta que es necesario buscar en el directorio la entrada correspondiente deun fichero para crearlo, leer o escribir en él, borrarlo, etc. El tiempo de respuestapuede verse muy mejorado si se mantiene la imagen del directorio en unamemoria caché. Una lista ordenada permitiría realizar búsquedas binarias,reduciendo el tiempo de búsqueda, sin embargo el mantenimiento de la lista

Page 37: [004] Sistemas Operativos - Gestion de Ficheros

������������������

�������������� ���+

ordenada también genera una sobrecarga significativa a la hora de crear y borrarficheros. Quizás un árbol binario pueda resultar más conveniente.

• ���,���� �. Este sistema consiste en añadir una tabla o algoritmo ���� a la listalineal de las entradas del directorio. La función ���� toma como entrada elnombre de un fichero y devuelve como valor de salida la dirección de su entradaen la lista lineal del directorio. Así, obviamente decrece en gran medida el tiempode búsqueda. Como para cualquier algoritmo ����, se deben tomar medidas parael tratamiento de las ��,�������, es decir, las situaciones en las que para dosnombres distintos de ficheros se obtiene la misma dirección en el directorio.

El problema que se puede presentar es que los algoritmos ���� se realizan paraun número fijo de entradas de directorio (por ejemplo, de 0 a 127), pero si eldirectorio se llena y se requiere una ampliación (hasta 255), habría que modificarel algoritmo ���� para cambiar el rango de direcciones que genera. Esto obligaríaa tener que rehacer todo el directorio utilizando la nueva función ����.

Page 38: [004] Sistemas Operativos - Gestion de Ficheros

������������������

���- ��������������

6LVWHPDV�2SHUDWLYRV�, 6LVWHPDV�GH�)LFKHURV�����

������������������� �"���#� ���� ���;,����3 $���'� �����)�� �������#� ���� ���=

��"�����"�����

��������$��%

� )���������������������

;,������ � ��������� �

� )������������������������ �

6����� �����������

6�/�������� ������ �

�� ��� �� ���� ������� �� ���� �

/(�����"�����C E

���� ��������/(������/��� ��

0���������������������1

"������������R�-�$� �����%��%

���� ����� �

-�$� ����$��%

P����������������������

! ���������,����������� ����+������

����������

����������>�

��������������%��% C2�� $���'� ��������� ���� ��E