Você está na página 1de 38

 6LVWHPDV GH )LFKHURV

El sistema de ficheros es uno de los aspectos ms visibles del sistema operativo, pues proporciona el mecanismo para el almacenamiento masivo de programas y datos, tanto del propio sistema operativo como de todos los usuarios del ordenador. El sistema de ficheros est formado por dos partes esenciales: una coleccin de ILFKHURV, conteniendo cada uno de ellos datos relacionados, y una HVWUXFWXUD GH GLUHFWRULRV que organiza y proporciona informacin de todos los ficheros del sistema. En este captulo trataremos aspectos sobre los ficheros y directorios, el compartimiento entre varios procesos y la proteccin necesaria en entornos con mltiples usuarios. Tambin abordaremos cuestiones concernientes al almacenamiento y acceso de ficheros en el ms comn de los dispositivos de memoria secundaria: el disco. Examinaremos distintos modos de asignacin y recuperacin de espacio en el disco, y veremos tambin cmo se puede llevar la cuenta del espacio que ocupan los ficheros en el disco.

$SXQWHV GH 62 ,



6LVWHPDV GH )LFKHURV

 ,QWURGXFFLyQ
Todos los programas necesitan almacenar y recuperar la informacin. Mientras un proceso se ejecuta, puede guardar una cierta cantidad de informacin en su propio espacio de direcciones, es decir, la memoria principal; pero la capacidad de sta est limitada, como mucho, al tamao de la memoria virtual. Para algunos programas, esta cantidad de espacio es suficiente, pero para otros, como por ejemplo reservas areas o aplicaciones bancarias, resulta pequea. Otro problema que se tiene al guardar la informacin en la memoria principal es que cuando el proceso termina la informacin se pierde y, claro, para muchas aplicaciones, como las bases de datos, la informacin debe retenerse durante semanas, meses, o incluso para siempre. Frecuentemente resulta necesario que mltiples procesos accedan a cierta informacin al mismo tiempo. Por ejemplo, si se mantiene una gua telefnica en el espacio de memoria de un proceso, solamente ese proceso puede acceder a la informacin, por lo que nicamente se puede buscar un nmero de telfono a la vez, dando lugar a que los procesos que desean obtener un nmero deben ir accediendo a la gua de uno en uno. La manera de resolver este problema es haciendo que la informacin sea independiente del espacio de direcciones de los procesos. As, tenemos tres requisitos esenciales para el almacenamiento de memoria a largo plazo: 1. Se debe poder almacenar una cantidad de informacin muy grande. 2. La informacin debe permanecer despus de la terminacin de los procesos que la utilizan. 3. Mltiples procesos deben poder acceder a la informacin concurrentemente. La solucin a todos estos problemas es almacenar la informacin en discos u otros dispositivos externos de almacenamiento masivo, en unidades llamadas ILFKHURV. Los procesos pueden leer, escribir o crear ficheros nuevos. La informacin almacenada en los ficheros es persistente, es decir, no se ve afectada por la creacin o terminacin de los procesos. Un fichero slo desaparece cuando su propietario lo borra explcitamente. Los ficheros se manejan a travs del sistema operativo. La parte del sistema operativo que se encarga de la gestin de ficheros recibe el nombre de VLVWHPD GH ILFKHURV. Para guardar y gestionar la informacin, el sistema de ficheros utiliza dos objetos importantes: los ficheros y los directorios. Como ya dijimos, los ficheros constituyen, desde el punto de vista del usuario, la unidad de almacenamiento de la informacin, mientras que los directorios contienen las listas de los ficheros junto con la informacin necesaria para su gestin: nombre, atributos y permisos de acceso, ubicacin en el disco, etc.
 $SXQWHV GH 62 ,

6LVWHPDV GH )LFKHURV

6LVWHPD GH )LFKHURV

,QWURGXFFLyQ

7RGD OD LQIRUPDFLyQ TXH PDQHMD XQ SURFHVR SXHGH HVWDU HQ PHPRULD SULQFLSDO SHUR SXHGH TXH 3 1HFHVLWH PXFKR PiV HVSDFLR 3 1R GHED VHU YROiWLO 3 1R VH SXHGD FRPSDUWLU OD LQIRUPDFLyQ HQ 03

/D LQIRUPDFLyQ GHEH VHU LQGHSHQGLHQWH GH ORV SURFHVRV 6H QHFHVLWD XQ PHGLR GH DOPDFHQDPLHQWR GH OD LQIRUPDFLyQ WDO TXH + 'HEH SRGHU DOPDFHQDU JUDQ FDQWLGDG GH LQIRUPDFLyQ + /D LQIRUPDFLyQ GHEH FRQWLQXDU H[LVWLHQGR GHVSXpV GHO ILQ GHO SURFHVR TXH OD XWLOL]D + 0~OWLSOHV SURFHVRV GHEHQ SRGHU DFFHGHU FRQFXUUHQWHPHQWH D OD LQIRUPDFLyQ

/D LQIRUPDFLyQ VH DOPDFHQD HQ GLVFRV X RWURV GLVSRVLWLYRV HQ XQLGDGHV OODPDGDV ),&+(526 (O VLVWHPD RSHUDWLYR VH HQFDUJD GHOD JHVWLyQ GH ORV ILFKHURV PHGLDQWH HO 6LVWHPD GH )LFKHURV

)LFKHURV
6LVWHPDV2SHUDWLYRV,

'LUHFWRULRV
6LVWHPDVGH)LFKHURV

$SXQWHV GH 62 ,



6LVWHPDV GH )LFKHURV

 )LFKHURV
Un fichero es una coleccin, con nombre, de informacin relacionada que se graba y mantiene, normalmente, en memoria secundaria. Desde el punto de vista del usuario, un fichero es la unidad lgica ms pequea de memoria secundaria, es decir, que no se pueden escribir datos en memoria secundaria a menos que sea dentro de un fichero. Normalmente, los ficheros contienen programas (tanto en formato fuente como objeto) y datos. Los ficheros de datos pueden ser de cualquier tipo: numrico, alfabtico, alfanumrico o binario; y pueden tener un formato libre, como los ficheros de texto; o una estructura rgida en la que todos los registros componentes tienen un mismo patrn, como un fichero de empleados o de nminas. En general, un fichero contiene simplemente informacin estructurada de la forma ms conveniente en cada caso. Esta estructura puede ser una secuencia de bits, bytes, lneas o registros cuyo significado lo conocen los programas o personas que los crean y los utilizan. Un fichero tambin puede verse como un tipo abstracto de datos, es decir, un objeto con unos atributos y unas operaciones asociadas. Veamos en primer lugar estos atributos y operaciones, y posteriormente pasaremos a comentar la estructura interna que pueden tener los datos de los ficheros y los mtodos para acceder a los registros que lo componen.

 $WULEXWRV
Los atributos de un fichero varan de un sistema operativo a otro, pero tpicamente suelen ser los siguientes: 1RPEUH. Los ficheros son un mecanismo de abstraccin que proporcionan el modo de almacenar informacin y poder recuperarla posteriormente, y que esconden los detalles de cmo y cundo se almacena la informacin. La caracterstica ms importante de la abstraccin es el modo en el que los objetos o ficheros se manejan y se nombran. Cuando un proceso crea un fichero, le asigna un nombre; cuando el proceso finaliza, el fichero contina existiendo, por lo que otros procesos pueden acceder a su contenido mediante su nombre. ste consta, normalmente, de una serie de caracteres alfanumricos. Los caracteres especiales permitidos o la distincin entre maysculas o minsculas depende de cada sistema operativo. 7LSR. 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 intenta imprimir un fichero objeto (en binario), normalmente produce un listado irreconocible, lo cual podra haberse prevenido si el sistema operativo detecta el tipo del fichero e impide la impresin al tiempo que avisa del error. Una tcnica comn para indicar el tipo de fichero consiste en incluir el identificador de tipo como parte del nombre. Para ello, el nombre se divide en dos partes: el nombre propiamente dicho y la extensin, normalmente separados por un punto. De esta forma, tanto el sistema operativo como el usuario pueden deducir el contenido del fichero simplemente a partir de la extensin del nombre.



$SXQWHV GH 62 ,

6LVWHPDV GH )LFKHURV

8ELFDFLyQ. Indica la direccin (cilindro o pista y sector) del comienzo del fichero en el disco. 7DPDxR. Expresa el tamao actual del fichero, expresado en bytes o bloques de datos. Tambin puede indicar el mximo tamao permitido para el archivo. 3URWHFFLyQ. Indica los permisos de acceso para los usuarios del sistema. )HFKD \ +RUD. Contiene el momento de creacin, modificacin y/o ltimo acceso al fichero.

 2SHUDFLRQHV
En la gestin de ficheros hay ciertas operaciones que son bsicas, as que el sistema operativo debe proporcionar operaciones para: crear, escribir, leer, posicionar, borrar, etc.; mientras que otras se pueden implementar a partir de las bsicas, como por ejemplo: cambiar el nombre, copiar, aadir, ... &UHDFLyQ. Antes de trabajar con un fichero hay que crearlo y para ello se requieren dos pasos principales: asignarle espacio en el disco y darle una entrada en el directorio correspondiente indicando, al menos, su nombre y ubicacin. (Si el tamao vara dinmicamente, no se asigna espacio inicialmente). (VFULWXUD. Para escribir en un fichero hay que realizar una llamada al sistema indicando el nombre y la informacin que se desea escribir. El sistema operativo mantiene un puntero que indica la posicin de lectura o escritura en el fichero, para que sucesivas operaciones de escritura, aadan los datos de forma consecutiva. El sistema operativo se encarga de encontrar la posicin del fichero en el disco a partir del nombre. /HFWXUD. El usuario debe indicar el nombre del fichero a leer y la direccin de un buffer de memoria local para depositar el contenido de la lectura solicitada. Al igual que en la operacin de escritura, despus de cada operacin de lectura se actualiza la posicin del puntero de L/E. 3RVLFLRQDPLHQWR. Esta operacin permite establecer el valor del puntero de L/E del fichero. %RUUDGR. Para borrar un fichero simplemente hay que indicar su nombre. El sistema operativo busca el nombre en el directorio y libera el espacio que ocupa en el disco y la propia entrada en el directorio. La mayora de estas operaciones requieren buscar en el directorio la entrada correspondiente al nombre del fichero, y puesto que ste se encuentra en disco, da lugar a que los tiempos de respuesta en las operaciones de L/E consuman un tiempo muy significativo. Para evitar esta bsqueda constante, la mayora de los sistemas disponen de la operacin DEULU ILFKHUR. Esta operacin DEULU ILFKHUR debe realizarse antes que cualquier otra instruccin sobre un fichero. Su cometido es copiar la entrada del directorio (en el disco) a la
$SXQWHV GH 62 , 

6LVWHPDV GH )LFKHURV

6LVWHPD GH )LFKHURV

)LFKHURV

8Q )LFKHUR HV XQD FROHFFLyQ FRQ QRPEUH GH LQIRUPDFLyQ UHODFLRQDGD JUDEDGD HQ PHPRULD VHFXQGDULD 3DUD HO XVXDULR HV OD XQLGDG OyJLFD GLUHFFLRQDEOH PiV SHTXHxD GH PHPRULD VHFXQGDULD 3XHGH WHQHU FXDOTXLHU WLSR GH LQIRUPDFLyQ HVWUXFWXUDGD GH OD PDQHUD PiV FRQYHQLHQWH

(V XQ WLSR DEVWUDFWR GH GDWRV $WULEXWRV 1RPEUH 7LSR 8ELFDFLyQ 7DPDxR 3URWHFFLyQ )HFKD \ KRUD FUHDFLyQ DFFHVR  2SHUDFLRQHV &UHDFLyQ (VFULWXUD /HFWXUD 3RVLFLRQDPLHQWR $xDGLU %RUUDU  5HQRPEUDU &RSLDU %~VTXHGD HQ HO 'LUHFWRULR $%5,5 &(55$5 7DEOD GH )LFKHURV $ELHUWRV GHO VLVWHPD &RQWDGRU GH $SHUWXUDV 'LUHFFLyQ HQ HO 'LVFR
6LVWHPDVGH)LFKHURV

7DEOD GH )LFKHURV $ELHUWRV GHO SURFHVR 3XQWHUR GH 3RVLFLyQ $FWXDO

6LVWHPDV2SHUDWLYRV,



$SXQWHV GH 62 ,

6LVWHPDV GH )LFKHURV

WDEOD GH ILFKHURV DELHUWRV que se mantiene en memoria principal. De esta manera, a partir de ese momento, cada operacin con ese fichero ya no implica un acceso al disco para obtener la informacin del directorio, sino que se obtiene directamente de la tabla de ficheros abiertos, cuyo acceso es mucho ms rpido. La operacin de apertura del fichero devuelve un GHVFULSWRU GH ILFKHUR, el cual se debe suministrar, en lugar del nombre, como un parmetro ms en las llamadas a las posteriores operaciones con ese fichero. El descriptor suele ser el ndice de acceso a la tabla de ficheros abiertos, con lo que la entrada del fichero se obtiene de forma inmediata. Cuando un fichero no se va a utilizar ms de forma activa, debe procederse a FHUUDU HO ILFKHUR, lo cual elimina o libera la entrada correspondiente de la tabla de ficheros abiertos. La implementacin de las operaciones de abrir y cerrar ficheros se complica un poco en el caso de sistemas multiusuarios, en los que varios usuarios pueden realizar accesos concurrentes a un mismo fichero. En este caso, el sistema operativo mantiene dos niveles de tablas de ficheros abiertos. La WDEOD ORFDO GHO SURFHVR mantiene la informacin relativa al fichero segn el uso del proceso, y suele consistir en el puntero de posicin de lectura/escritura, ms un puntero a una entrada de la WDEOD GHO VLVWHPD, la cual contiene informacin independiente de los procesos, como por ejemplo: la direccin del fichero en el disco, fechas de acceso, tamao, etc. Una vez que se abre un fichero, las sucesivas aperturas por otros procesos simplemente aaden una entrada en la tabla local con el correspondiente puntero a su entrada en la tabla del sistema. Normalmente, la tabla de ficheros abiertos del sistema contiene un contador de aperturas en la entrada de cada fichero, indicando, en cada momento, el nmero de procesos que lo tienen abierto. Cada operacin de cierre del fichero borra la entrada de la tabla local de ficheros abiertos y decrementa el contador de aperturas, de tal forma que cuando alcanza el valor cero se borra la entrada del la tabla del sistema, puesto que ya no lo utiliza ningn proceso.

 (VWUXFWXUD GH ORV )LFKHURV


Algunos sistemas operativos (de DEC e IBM) imponen la estructura interna de los ficheros dependiendo del tipo de estos, y utilizan un mtodo de acceso distinto para cada una de las estructuras prefijadas que gestionan. No obstante, hoy da la estructura de los ficheros suele ser independiente del sistema operativo, concernindole nicamente al programa que lo crea o lo utiliza. Este es el caso de Unix o MS-DOS, que consideran cada fichero como una secuencia de bytes y no realizan ninguna interpretacin de su contenido, por lo que tampoco ofrecen ningn soporte para el tratamiento de los distintos tipos de ficheros. Por esto, cada programa debe disponer de su propio cdigo para interpretar la estructura de los ficheros que maneja. Sin embargo, todos los sistemas operativos deben soportar al menos la estructura de un tipo de ficheros: los programas ejecutables, es decir, deben saber que un

$SXQWHV GH 62 ,



6LVWHPDV GH )LFKHURV

programa ejecutable est compuesto por una secuencia de registros de carga que contienen cdigo mquina, instrucciones de reserva de espacio, constantes, etc. Esta estructura debe conocerla el cargador de programas para saber las necesidades de memoria del programa a cargar y la informacin a ubicar en memoria. Tambin pueden contener lo que se conoce como UHFXUVRV y GDWRV. Para entender lo que son recursos y datos, pensemos, por ejemplo, en un moderno procesador de texto de tipo WYSIWYG (ZKDW \RX VHH LV ZKDW \RX JHW) en el que se dispone de mens y ayuda en el idioma espaol (aunque el procesador est diseado en otro pas). El conjunto de texto de interfaz que tiene un programa, que es configurable para cada pas, puede estar en registros especiales del fichero ejecutable, formando los GDWRV. Tambin puede haber ciertos dibujos o imgenes que se muestran como parte de la interfaz a modo de ERWRQHV o ayudas para utilizacin con el ratn, formando lo que se conoce como UHFXUVRV.

 0pWRGRV GH $FFHVR


Los ficheros almacenan informacin, y cuando se utilizan se debe acceder a esta informacin para leerla y llevarla a la memoria principal. Hay varios mtodos para acceder a la informacin de los archivos. Algunos sistemas operativos ofrecen un nico mtodo de acceso, mientras que otros, como los de IBM, soportan diferentes mtodos. La eleccin del ms apropiado en cada caso es una cuestin de diseo a tener muy en cuenta. A continuacin veremos los dos principales mtodos de acceso: acceso secuencial y acceso directo. No obstante, a partir del acceso directo pueden construirse algunas variantes, como son el DFFHVR LQGH[DGR y el VHFXHQFLDO LQGH[DGR.

 $FFHVR 6HFXHQFLDO En este modo de acceso (el ms simple y comn) la informacin se procesa en orden secuencial, es decir, un registro detrs de otro. La mayor parte de las operaciones de acceso a un fichero son lecturas y escrituras. Una lectura consiste en leer la siguiente porcin de texto y avanzar el puntero del fichero que indica el punto actual de lectura/escritura. De forma similar, una escritura aade informacin al final del fichero y avanza el puntero hasta el final de los datos recin escritos, o sea, hasta el nuevo fin del fichero. Tambin se puede realizar una operacin de rebobinado o retroceso hasta el principio del fichero, que pone el puntero de L/E apuntando al comienzo de ste. Algunos sistemas tambin disponen de operaciones para saltar registros hacia adelante y hacia atrs. El modo de acceso secuencial est basado en el modelo de la cinta magntica, pero puede utilizarse tanto en dispositivos de acceso secuencial (cintas) como en los de acceso directo (discos).



$SXQWHV GH 62 ,

6LVWHPDV GH )LFKHURV

 $FFHVR 'LUHFWR Los ficheros de acceso directo estn compuestos por registros de longitud fija, de tal forma que se permite que los programas puedan leer o escribir registros en cualquier posicin sin ningn orden concreto. Un ejemplo clsico de ficheros que requieren este modo de acceso son los de bases de datos. Para poder realizar un acceso directo a un fichero, se requiere que el dispositivo que lo soporta sea de acceso directo, como el disco magntico, que permite acceder a cualquier punto de su superficie sin recorrer todos los anteriores. Un fichero de acceso directo se ve como una secuencia numerada de registros en la que se permite leer o escribir cualquiera de ellos, indicando simplemente su nmero de orden. Por esto, las operaciones de L/E deben especificar, como un parmetro ms, el nmero del registro al que desean acceder, o bien realizar en primer lugar una operacin de posicionamiento y a continuacin una operacin de lectura o escritura convencional (sin nmero de registro). El nmero de orden suele ser un nmero relativo al comienzo del fichero, y dado que los registros son de longitud fija y se conoce la direccin de comienzo del fichero, resulta inmediato el clculo de la posicin de cualquier registro. Algunos sistemas que disponen de ambos tipos de acceso (secuencial y directo) indican en el momento de creacin del fichero el tipo de acceso permitido, de tal forma que si se declara como de acceso directo luego no se puede tratar secuencialmente; pero no obstante, con acceso directo siempre se puede simular fcilmente un acceso secuencial.

$SXQWHV GH 62 ,



6LVWHPDV GH )LFKHURV

6LVWHPD GH )LFKHURV

)LFKHURV

(6758&785$ '( /26 ),&+(526 1RUPDOPHQWH OD HVWUXFWXUD LQWHUQD GH ORV ILFKHURV HV LQGHSHQGLHQWH GHO 62 \ OH FRQFLHUQH VRODPHQWH DO SURJUDPD GH DSOLFDFLyQ TXH OR FUHD \ OR XWLOL]D (O 62 LPSRQH OD HVWUXFWXUD GH ORV GLUHFWRULRV \ GH ORV SURJUDPDV HMHFXWDEOHV  6HFXHQFLD GH UHJLVWURV GH FDUJD  5HFXUVRV \ 'DWRV 0e72'26 '( $&&(62 + $FFHVR 6HFXHQFLDO 3 /D LQIRUPDFLyQ GHO ILFKHUR VH SURFHVD HQ RUGHQ SRVLFLRQDO 8Q UHJLVWUR GHWUiV GH RWUR
3ULQFLSLR 3RVLFLyQ $FWXDO )LQ

5HERELQDU

/HHU(VFULELU

3 6H XWLOL]D HQ GLVSRVLWLYRV + $FFHVR 'LUHFWR

6HFXHQFLDOHV 'H $FFHVR 'LUHFWR

3 (O ILFKHUR HVWi IRUPDGR SRU UHJLVWURV GH ORQJLWXG ILMD \ ORV SURJUDPDV SXHGHQ DFFHGHU UiSLGDPHQWH D FXDOTXLHU UHJLVWUR VLQ QLQJ~Q RUGHQ SDUWLFXODU HM EDVHV GH GDWRV  3 /DV RSHUDFLRQHV GH /( LQFOX\HQ HO Q GH UHJLVWUR R VH UHTXLHUH XQD LQVWUXFFLyQ GH SRVLFLRQDPLHQWR 3 (Q XQ VLVWHPD GH DFFHVR GLUHFWR HV IiFLO VLPXODU HO DFFHVR VHFXHQFLDO
6LVWHPDV2SHUDWLYRV, 6LVWHPDVGH)LFKHURV



$SXQWHV GH 62 ,

6LVWHPDV GH )LFKHURV

 'LUHFWRULRV
Los sistemas de ficheros pueden ser muy extensos, por lo que se requiere alguna organizacin. Normalmente esta organizacin se realiza en dos niveles: particiones y directorios (Figura 5). En primer lugar, el sistema de ficheros se divide en SDUWLFLRQHV o volmenes, de tal forma que cada disco contiene una o ms particiones. En algunas ocasiones las particiones se utilizan para proporcionar reas separadas de disco, tal que se tratan como dispositivos diferentes, mientras que otras veces se tienen particiones que ocupan ms de un dispositivo, agrupando varios discos en una nica estructura lgica, abstrayndole al usuario de la representacin fsica de la estructura de ficheros. Cada particin debe incluir informacin o atributos sobre los ficheros que contiene. Estos atributos se guardan en el GLUHFWRULR. Los atributos de un fichero son datos como el nombre, tamao, tipo, direccin en el disco, etc. De hecho, el directorio es una tabla que asocia cada nombre de fichero con sus atributos. Las operaciones que se pueden realizar con un directorio estn referidas a la gestin de ficheros (no al contenido de los ficheros). As, tenemos operaciones como las siguientes: &UHDU XQ ILFKHUR. Al crear un fichero se debe aadir una entrada en el directorio. %RUUDU XQ ILFKHUR. Cuando ya no se necesitan los datos de un archivo, se debe borrar la entrada correspondiente del directorio. &DPELDU HO QRPEUH GH XQ DUFKLYR. Si cambia el contenido o el uso de un fichero, se debe poder cambiar su nombre. %XVFDU XQ ILFKHUR. Para realizar cualquiera de las acciones anteriores, la gestin de un directorio debe ofrecer un mecanismo de bsqueda rpida de la entrada del directorio correspondiente a cada fichero. /LVWDU XQ GLUHFWRULR. Se debe poder obtener la lista de todos los ficheros de un directorio, con sus atributos correspondientes. 5HFRUUHU WRGR HO VLVWHPD GH ILFKHURV. A veces se realizan operaciones que abarcan a todos los ficheros de un directorio, como por ejemplo cuando se realiza una copia de seguridad de todo un sistema de ficheros.

 (VWUXFWXUDV GH 'LUHFWRULRV


Por lo que hemos visto hasta ahora, en un disco puede haber una o varias particiones, dentro de cada cual se encuentra una serie de ficheros, cuyos nombres y atributos estn contenidos en un nico directorio. Pero es muy posible que el nmero de los ficheros que comprende una particin sea muy elevado, y seguramente con contenidos muy heterogneos, por lo que el trabajo con una lista
$SXQWHV GH 62 , 

6LVWHPDV GH )LFKHURV

6LVWHPD GH )LFKHURV

'LUHFWRULRV
+D\ TXH RUJDQL]DU ORV ILFKHURV

/RV VLVWHPDV GH ILFKHURV SXHGHQ VHU PX\ H[WHQVRV

'LUHFWRULR 3DUWLFLyQ % 3DUWLFLyQ $ )LFKHURV 3DUWLFLyQ & ',6&2 

'LUHFWRULR )LFKHURV 'LUHFWRULR )LFKHURV ',6&2 

(O 'LUHFWRULR FRQWLHQH HO QRPEUH WLSR GLUHFFLyQ WDPDxR HWF GH ORV ILFKHURV GH OD SDUWLFLyQ DWULEXWRV DWULEXWRV DWULEXWRV DWULEXWRV

MXHJRV FRUUHR OLEUR WUDEDMR

DWULEXWRV DWULEXWRV DWULEXWRV DWULEXWRV

MXHJRV FRUUHR OLEUR WUDEDMR

2SHUDFLRQHV FRQ 'LUHFWRULRV %XVFDU )LFKHUR &UHDU XQ )LFKHUR %RUUDU XQ )LFKHUR /LVWDU 'LUHFWRULR &DPELDU 1RPEUH GH )LFKHUR 5HFRUUHU HO 6LVWHPD GH )LFKHURV 
6LVWHPDV2SHUDWLYRV, 6LVWHPDVGH)LFKHURV



$SXQWHV GH 62 ,

6LVWHPDV GH )LFKHURV

muy grande de ficheros puede resultar engorroso. Por ello, puede ser conveniente organizar los ficheros en jerarquas, segn su contenido o con cualquier otro criterio. Esto quiere decir que se necesitan estructuras de directorios dentro de cada particin. Veamos a continuacin las ms usuales.

 'LUHFWRULR GH XQ 1LYHO La estructura ms simple es, desde luego, la que consta de un nico directorio por particin. Ya que todos los ficheros estn en el mismo directorio, resulta fcil de implementar y mantener. Los problemas con los directorios de un solo nivel aparecen cuando se comparte entre varios usuarios, pues ya que todos los ficheros estn en el mismo directorio deben tener nombres distintos para poder distinguirlos, lo cual resulta problemtico cuando dos usuarios quieren llamar WHVW a su fichero de pruebas. Incluso con un nico usuario, a medida que aumenta el empieza a resultar difcil asignarles nombres nicos, pues, sistemas la longitud de los nombres est bastante limitada caracteres); otros sistemas, como Unix, permiten hasta caracteres. nmero de ficheros, adems, en algunos (MS-DOS permite 11 un mximo de 255

 'LUHFWRULR GH 'RV 1LYHOHV El principal problema que presentan los directorios de un solo nivel es la colisin de nombres de ficheros de distintos usuarios. La solucin obvia es crear directorios separados para cada usuario. En la estructura de directorios de dos niveles, hay un Directorio Maestro y mltiples Directorios de Usuario (DU). Todos los DUs tienen la misma estructura, pero cada uno de ellos contiene los nombres de fichero de un nico usuario. Cuando un usuario se conecta al sistema, se busca en el Directorio Maestro, indexando en ste por el nombre o su nmero de cuenta, obteniendo una entrada que apunta a su DU. Cuando un usuario se refiere a un cierto fichero, solamente se busca en su directorio de usuario, por lo que diferentes usuarios pueden tener ficheros con el mismo nombre con tal de que todos los nombres dentro de cada directorio de usuario sean nicos. La estructura de dos niveles resuelve el conflicto de la colisin de nombres de distintos usuarios, pero todava tiene algunos inconvenientes. Como hemos visto, con dos niveles de directorios se asla a los usuarios entre s, lo cual es una ventaja cuando los usuarios son completamente independientes, pero puede suponer ciertas trabas cuando un grupo de usuarios quieren cooperar en alguna tarea y necesitan acceder a ciertos ficheros con datos comunes. En algunos sistemas no se permite acceder a ficheros que no sean del propio directorio de usuario, otros s lo toleran. En este ltimo caso, para referenciar un directorio hay que indicar su

$SXQWHV GH 62 ,



6LVWHPDV GH )LFKHURV

'LUHFWRULRV

(VWUXFWXUDV GH 'LUHFWRULRV
correo protocol pruebas bin libro proyecto

'LUHFWRULR )LFKHURV

'LUHFWRULR GH XQ 1LYHO
'LUHFWRULR 0DHVWUR
antonio paco pilar carmen

'LUHFWRULR datos bin libro test GH 8VXDULRV

so1

hex abc

datos bin

lec

(VWUXFWXUD GH 'LUHFWRULRV GH 'RV 1LYHOHV


sistema cont usr

datos

prog

lib

antonio

paco

pilar

datos p1 p2 p3

bin

libro

so1

hex

abc

v1

v2

cap1

cap2

cap3

notas

trans

(VWUXFWXUD GH 'LUHFWRULRV HQ UERO


6LVWHPDV2SHUDWLYRV, 6LVWHPDVGH)LFKHURV



$SXQWHV GH 62 ,

6LVWHPDV GH )LFKHURV

FDPLQR completo desde la raz del sistema, es decir, hay que hacer constar el nombre del usuario propietario del fichero seguido del nombre del fichero. La sintaxis para expresar el camino completo de acceso a un fichero vara con cada sistema. Un caso especial del problema de la compartimiento de ficheros se produce con los ficheros del sistema, o sea, aquellos programas que se proporcionan como parte del sistema operativo (cargadores, ensambladores, bibliotecas de programas, etc.), programas que normalmente se ofrecen en la forma de ficheros ejecutables. Cuando se teclea un comando, el intrprete de comandos del sistema operativo trata el nombre del comando como el nombre de un fichero, procediendo a continuacin a cargarlo y ejecutarlo; pero claro, lo busca en el directorio del usuario actual, por lo que habra que copiar a cada usuario todos los ficheros del sistema para poder ejecutar los comandos. Parece obvio que la copia de todos los ficheros del sistema a todos los usuarios sera un enorme desperdicio de espacio. La solucin a este problema es complicar ligeramente el mecanismo de bsqueda de ficheros. Se tiene un directorio de usuario especial que contiene los ficheros del sistema (por ejemplo, el usuario 0). Siempre que se escribe un comando en el teclado, el sistema operativo busca el nombre de fichero correspondiente en el directorio del usuario y si no lo encuentra procede a buscarlo en el directorio del usuario 0. A la secuencia de directorios en los que se realiza la bsqueda de un fichero se le conoce con el nombre de FDPLQR GH E~VTXHGD. Esta idea se puede ampliar, para que el camino de bsqueda contenga una lista de directorios a ser explorados en la bsqueda cuando se escribe un comando en el terminal. Este mtodo lo utilizan sistemas como Unix y MS-DOS.

 'LUHFWRULRV HQ UERO Una vez que hemos representado los directorios de dos niveles como un rbol de dos niveles, la generalizacin natural es extender la estructura de directorios a un rbol de profundidad arbitraria. Esta generalizacin permite a los usuarios crear sus propios directorios, para organizar sus ficheros con cualquier estructura deseada. El rbol de directorios tiene un GLUHFWRULR UDt], el cual puede contener ficheros y subdirectorios. (Estrictamente hablando, directorio es el que se encuentra en la raz del sistema de ficheros, mientras que los subdirectorios son los directorios de los dems niveles. No obstante, aqu nos referiremos a ambos de forma indistinta). Un directorio es simplemente otro fichero, pero con una estructura interna conocida por el sistema operativo, el cual lo trata de forma especial. Para saber si un fichero contiene datos o es un directorio, un campo de la correspondiente entrada del directorio que lo contiene indica el tipo de fichero (datos/directorio).

$SXQWHV GH 62 ,



6LVWHPDV GH )LFKHURV

 1RPEUH GH &DPLQR \ 'LUHFWRULR GH 7UDEDMR


En la estructura de rbol de directorios, cada fichero tiene un nico nombre completo o QRPEUH GH FDPLQR. El nombre de camino suele estar formado por tres partes (Figura 7): - Particin - Directorio - Nombre de fichero Donde 'LUHFWRULR es la secuencia de directorios por los que hay que atravesar, desde la raz, para llegar al subdirectorio que lo contiene. Como se puede ver en la Figura 7, los tres componentes del camino suelen formar una ristra de caracteres sin blancos y separados por algn carcter especial. El propio nombre del fichero figura como ltimo componente del nombre completo. El inconveniente que se le puede presentar a un usuario es que el acceso a ciertos ficheros muy utilizados puede resultar muy engorroso, por tener que estar suministrando continuamente nombres de camino absolutos (desde la raz). En un momento determinado, se dice que cada usuario est trabajando con los ficheros de su GLUHFWRULR GH WUDEDMR (en uno de los subdirectorios de su estructura). Esto quiere decir que si se hace referencia a un fichero nicamente por su nombre, el sistema busca el fichero en el directorio de trabajo actual, y no hay necesidad de estar utilizando el nombre completo (camino desde la raz). Para esto, los sistemas operativos ofrecen comandos (cd en Unix y MS-DOS) para poder establecer el directorio de trabajo ms apropiado a las necesidades de cada momento. Otra forma de referenciar ficheros es utilizando caminos relativos, es decir, el camino que hay desde el directorio de trabajo (no desde la raz) hasta el fichero en cuestin.



$SXQWHV GH 62 ,

6LVWHPDV GH )LFKHURV

6LVWHPD GH )LFKHURV

 'LUHFWRULRV

&yPR 5HIHUHQFLDU XQ )LFKHUR GHO UERO"


,QGLFDQGR VX &DPLQR $EVROXWR

/bin/juegos/aviones/topgun c:\bin\juegos\aviones\topgun
)LFKHUR 'LUHFWRULR 3DUWLFLyQ

(O DFFHVR DEVROXWR D ILFKHURV PX\ XWLOL]DGRV HV WHGLRVR SRU HO FDPLQR GH E~VTXHGD

'LUHFWRULR GH 7UDEDMR  &DPLQR 5HODWLYR

cd /bin/juegos/aviones topgun doom . . . . . . cp topgun /copias/juegos

6LVWHPDV2SHUDWLYRV,

6LVWHPDVGH)LFKHURV

$SXQWHV GH 62 ,



6LVWHPDV GH )LFKHURV

 0HFDQLVPRV GH 3URWHFFLyQ


La informacin de los ficheros que se mantienen en memoria secundaria debe protegerse tanto de los daos fsicos como de un acceso indebido. Para que un dispositivo de memoria secundaria tenga protegidos sus datos frente a daos fsicos, debe tener ILDELOLGDG; mientras que para evitar un acceso indebido a los datos, debe ofrecer mecanismos de SURWHFFLyQ. Los ficheros pueden deteriorarse por problemas del hardware (como errores de lectura o escritura), fallos de alimentacin, polvo, temperaturas extremas, etc., incluso pueden borrarse accidental o malintencionadamente. La fiabilidad del sistema ante estas situaciones normalmente viene dada mediante la duplicacin de la informacin. Las salvaguardas pueden realizarse manualmente o automticamente. En este ltimo caso el sistema realiza las copias de seguridad a intervalos regulares de tiempo sin intervencin alguna del operador. Aqu vamos a centrarnos, principalmente, en los mecanismos de proteccin que deben ofrecerse en entornos multiusuario. La necesidad de proteger los ficheros es consecuencia directa de la posibilidad de acceso a los mismos. En los sistemas que no permiten acceder a ficheros de otros usuarios, la proteccin no es necesaria. Este es un extremo, es decir, proporcionar proteccin completa prohibiendo el acceso de otros usuarios. El otro extremo es ofrecer un acceso libre sin ningn tipo de proteccin. Estos dos enfoques son demasiado radicales, obviamente lo que se requiere es un DFFHVR FRQWURODGR. Los mecanismos de proteccin controlan el acceso a los ficheros limitando los tipos de acceso que se pueden realizar. Algunas de las operaciones bsicas que se pueden realizar con los ficheros son: /HHU de un fichero. (VFULELU o sobreescribir en un fichero. (MHFXWDU un fichero. O sea, cargarlo en memoria y ejecutarlo. /LVWDU el nombre y otros atributos de un fichero.

Pueden encontrarse diversos sistemas de proteccin, donde cada uno tiene ventajas e inconvenientes, y se debe seleccionar uno dependiendo del nmero de usuarios y el tipo de aplicaciones. Veamos a continuacin los dos ms utilizados.

 /LVWDV GH $FFHVR \ *UXSRV


La solucin ms comn al problema de la proteccin suele consistir en hacer que el permiso de acceso dependa de la identidad del usuario, puesto que distintos usuarios pueden necesitar distintos permisos de acceso a un mismo fichero. As, una cosa que se puede hacer es asociar una OLVWD GH DFFHVR a cada fichero o directorio, indicando en ella el nombre de cada usuario autorizado con sus respectivos permisos de acceso (lectura, escritura, ejecucin).



$SXQWHV GH 62 ,

6LVWHPDV GH )LFKHURV

6LVWHPD GH )LFKHURV

3URWHFFLyQ

/D LQIRUPDFLyQ HQ PHPRULD VHFXQGDULD VH GHEH SURWHJHU GHO

'DxR )tVLFR
)LDELOLGDG %DFNXS

$FFHVR ,QGHELGR
3URWHFFLyQ

62/8&,21(6 /LEUH $FFHVR $FFHVR &RQWURODGR 3URKLELU HO DFFHVR D RWURV XVXDULRV

/RV PHFDQLVPRV GH SURWHFFLyQ FRQWURODQ HO DFFHVR D ORV ILFKHURV OLPLWDQGR ORV WLSRV GH RSHUDFLRQHV TXH VH SXHGHQ UHDOL]DU /((5 (6&5,%,5 $f$',5 (-(&87$5 %255$5 /,67$5 $75,%8726

6LVWHPDV2SHUDWLYRV,

6LVWHPDVGH)LFKHURV

$SXQWHV GH 62 ,



6LVWHPDV GH )LFKHURV

Cuando un usuario solicita el acceso a un fichero, el sistema operativo comprueba la lista de acceso asociada al fichero. Si el usuario figura en la lista con el permiso oportuno, se le concede el acceso; en caso contrario, se le deniega. Este sistema de proteccin lo utiliza el sistema operativo VMS de Digital y Windows-NT. El principal problema de las listas de acceso se debe a su tamao. Si se quiere permitir que todo el mundo pueda leer un fichero, se deben enumerar todos los usuarios con su correspondiente permiso, lo cual genera dos desafortunadas consecuencias: La construccin de la lista puede ser una labor tediosa, sobre todo si no se conoce con antelacin la relacin de todos los usuarios del sistema. Adems, cada vez que se da de alta un nuevo usuario, hay que actualizar las listas de acceso de todos los ficheros pblicos del sistema. Las entradas del directorio, tienen que ser de tamao variable, con lo que su gestin resulta ms complicada. Estos problemas pueden resolverse si se utiliza una versin condensada de la lista de acceso, es decir, clasificar a todos los usuarios del sistema en tres grupos: 3URSLHWDULR: el usuario que cre el fichero. *UXSR: el conjunto de usuarios que comparten el fichero y requieren permisos similares. 8QLYHUVR: el resto de los usuarios del sistema A cada uno de estos conjuntos de usuarios se les puede definir permisos de lectura, escritura y ejecucin, por lo que se requieren tan solo 9 bits para indicar los permisos de acceso de cada fichero para todos los usuarios del sistema. Este tipo de proteccin, utilizado en Unix, implica que se debe poder crear grupos de trabajo, lo cual es tarea del administrador del sistema. La asignacin de los permisos a cada una de estas tres categoras de usuarios es responsabilidad del propietario del fichero. Windows NT tambin dispone de grupos de usuarios, para evitar el problema de las altas y actualizaciones de usuarios en grupos de trabajo. No debemos olvidar que los directorios tambin son ficheros, pero los permisos que se les puede asignar difieren de aquellos de los ficheros de datos. A un directorio se le 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 travs de l para acceder a ficheros de subdirectorios suyos.



$SXQWHV GH 62 ,

6LVWHPDV GH )LFKHURV

6LVWHPD GH )LFKHURV

3URWHFFLyQ

/RV SHUPLVRV GH DFFHVR GHSHQGHQ GH OD LGHQWLGDG GHO XVXDULR &DGD ILFKHUR R GLUHFWRULR SXHGH WHQHU DVRFLDGD XQD OLVWD GH DFFHVR FRQ ORV QRPEUHV \ SHUPLVRV GH ORV XVXDULRV DXWRUL]DGRV ,1&219(1,(17(6 &RQVWUXFFLyQ WHGLRVD SDUD GDU SHUPLVR D WRGRV ORV XVXDULRV (QWUDGDV GHO GLUHFWRULR GHO ORQJLWXG YDULDEOH *HVWLyQ GHO HVSDFLR PiV FRPSOLFDGD 62/8&,1

&RQGHQVDU OD /LVWD GH $FFHVR HQ 1LYHOHV


3523,(7$5,2 UZ[ + *5832 UZ[ 5(672 '( 868$5,26 UZ[

(O SURSLHWDULR GHO ILFKHUR HVWDEOHFH ORV SHUPLVRV (O DGPLQLVWUDGRU GHO VLVWHPD JHVWLRQD ORV PLHPEURV GHO JUXSR

/RV GLUHFWRULRV WDPELpQ GHEHQ WHQHU SHUPLVRV GH DFFHVR


3 &UHDFLyQ \ ERUUDGR GH GLUHFWRULRV 3 /LVWDGR GH GLUHFWRULRV ILFKHURV \ VXV DWULEXWRV

6LVWHPDV2SHUDWLYRV,

6LVWHPDVGH)LFKHURV

$SXQWHV GH 62 ,



6LVWHPDV GH )LFKHURV

 ,PSOHPHQWDFLyQ GHO 6LVWHPD GH )LFKHURV


Habiendo visto en los apartados anteriores las caractersticas que ofrece el sistema de ficheros, pasaremos a abordar ciertas cuestiones relativas a su implementacin sobre el dispositivo ms comn de memoria secundaria: el disco magntico. Trataremos diversos modos de asignacin del espacio de disco y de su recuperacin cuando se libere. Tambin veremos mecanismos para llevar la cuenta del espacio de disco libre y ocupado.

 (VWUXFWXUD GHO 6LVWHPD GH )LFKHURV


En esencia, en cuanto a la gestin de ficheros, el sistema operativo debe encargarse de las siguientes funciones: 1. Traduccin y representacin de nombres de fichero a direcciones en el dispositivo de memoria secundaria. 2. Administracin del espacio del disco. Encargndose tanto de la asignacin/recuperacin del espacio como de llevar la cuenta del espacio libre. 3. Organizacin de la estructura de directorios. Para llevar a cabo estas funciones, el sistema de ficheros est compuesto por una estructura de varios niveles, donde cada uno tiene su propio cometido y se apoya en el nivel inferior. Veamos algunas caractersticas de estos niveles que se indican en la Figura 10-inferior. 'LVSRVLWLYRV. Los discos magnticos se suelen utilizar como dispositivos de memoria secundaria sobre los que se mantienen los sistemas de ficheros. Para mejorar la eficiencia en el acceso, las transferencias de datos entre la memoria principal y el disco se realizan en unidades denominadas EORTXHV, donde cada uno de los cuales est compuesto de uno o ms sectores. El tamao de los sectores vara de 32 a 4096 bytes, y normalmente suele ser de 512 1024 bytes. Los discos tienen ciertas caractersticas que los convierten en un medio adecuado para el almacenamiento de mltiples ficheros: Puede contener una gran cantidad de datos permanentemente. Se puede acceder directamente a cualquier bloque de informacin. Es fcil modificar la informacin, es decir, resulta muy sencillo leer un bloque de disco, modificarlo y volver a escribirlo en la misma direccin que ocupaba. &RQWURO de (6. Este nivel, muy dependiente del hardware, lo componen los GULYHUV de dispositivo y las rutinas de tratamiento de sus interrupciones. Un GULYHU de dispositivo es el programa que sabe traducir rdenes de alto nivel a los comandos correspondientes del hardware propio del disco utilizado, es decir,



$SXQWHV GH 62 ,

6LVWHPDV GH )LFKHURV

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

$SXQWHV GH 62 ,



6LVWHPDV GH )LFKHURV

6LVWHPD GH )LFKHURV

,PSOHPHQWDFLyQ

+ (O 6LVWHPD GH )LFKHURV UHVLGH HQ PHPRULD VHFXQGDULD SRUTXH 3 3XHGH FRQWHQHU JUDQ FDQWLGDG GH GDWRV SHUPDQHQWHPHQWH 3 6H SXHGH DFFHGHU GLUHFWDPHQWH D FXDOTXLHU EORTXH GH LQIRUPDFLyQ 3 (V IiFLO PRGLILFDU OD LQIRUPDFLyQ + (O 6LVWHPD 2SHUDWLYR GHEH SUHRFXSDUVH GH 3 7UDGXFFLyQ \ UHSUHVHQWDFLyQ GH QRPEUHV  $VLJQDFLyQ5HFXSHUDFLyQ GHO HVSDFLR GHO GLVFR 3 *HVWLyQ GHO HVSDFLR  *HVWLyQ GHO HVSDFLR OLEUH 3 /D HVWUXFWXUD GH ORV GLUHFWRULRV

3URJUDPDV GH $SOLFDFLyQ 6LVWHPD /yJLFR GH )LFKHURV 0yGXOR GH 2UJDQL]DFLyQ GH )LFKHURV 6LVWHPD %iVLFR GH )LFKHURV &RQWURO GH (6
(VWUXFWXUD GH XQ 6LVWHPD GH )LFKHURV
6LVWHPDV2SHUDWLYRV,

'LVSRVLWLYRV
6LVWHPDVGH)LFKHURV



$SXQWHV GH 62 ,

6LVWHPDV GH )LFKHURV

realizar posicionamiento de cabezas sobre pistas, bsqueda de sectores, formateo de pistas, comprobacin de cdigos de deteccin de errores, etc. 6LVWHPD EiVLFR GH ILFKHURV. Aqu se realiza la traduccin de las ordenes de lectura/escritura de bloques en comandos genricos de acceso en los que se traducen los nmeros de bloque a direcciones de disco del tipo disco 1, cilindro 27, pista 12, sector 4. 0yGXOR GH RUJDQL]DFLyQ GH ILFKHURV. La funcin de este mdulo es la traduccin de bloques lgicos en bloques fsicos, as como de la gestin del espacio libre del disco (mtodos de asignacin de espacio y administracin del espacio libre). 6LVWHPD OyJLFR GH ILFKHURV. Este nivel se encarga, por ltimo, de la estructura de directorios, incluyendo los mecanismos de proteccin y seguridad vistos anteriormente.

 $VLJQDFLyQ GHO (VSDFLR /LEUH


En un disco magntico, por su gran capacidad, se almacenan una gran cantidad de ficheros. El principal problema que se presenta es cmo asignar espacio a estos ficheros de tal forma que el espacio del disco se utilice eficientemente (sin desperdiciarlo) y sin perjuicio de la velocidad de acceso a todos los datos componentes de cada fichero. Veamos a continuacin los tres mtodos de asignacin de espacio ms utilizado: asignacin contigua, encadenada e indexada.

 $VLJQDFLyQ &RQWLJXD Con este mtodo se requiere que cada fichero ocupe una serie de bloques contiguos en el disco. Ya que los bloques estn adyacentes, no se requieren movimientos de la cabeza lectora para pasar de un bloque a otro, excepto en el cambio a la pista siguiente en cuyo caso el movimiento es mnimo. Esto quiere decir que el tiempo de posicionamiento no es significativo. Puesto que los bloques ocupados por un archivo son consecutivos, en las entradas del directorio solamente se necesita indicar el bloque de comienzo y la longitud del fichero (Figura 11). Con este sistema de asignacin de espacio se soporta bien cualquier mtodo de acceso. Para realizar un acceso secuencial, simplemente se requiere que el sistema operativo lleve la cuenta del ltimo bloque accedido, para pasar al siguiente en la prxima operacin de lectura/escritura. En cuanto al acceso directo, tambin es inmediato; ya que el tamao de los bloques es fijo, solamente es necesaria una multiplicacin para calcular la direccin de cualquier bloque de un fichero.

$SXQWHV GH 62 ,



6LVWHPDV GH )LFKHURV

,PSOHPHQWDFLyQ GHO 6)

$VLJQDFLyQ GH (VSDFLR
0pWRGRV GH $VLJQDFLyQ GH (VSDFLR
3 $VLJQDFLyQ &RQWLJXD 3 /LVWD (QFDGHQDGD 3 $VLJQDFLyQ ,QGH[DGD

+D\ TXH SUHRFXSDUVH GH  8WLOL]DFLyQ (IHFWLYD  $FFHVR 5iSLGR

+ $VLJQDFLyQ &RQWLJXD
&DGD ILFKHUR VH DOPDFHQD HQ EORTXHV FRQWLJXRV GH GDWRV HQ HO GLVFR

0 4 8 12 16 20 24 28

carta 1 5 9 13

2 6 10

3 fi 7

),&+(52 carta fi prog libro lista

',5 0 6 14 19 28

/21* 2 2 3 6 4

11 prog 14 15 19 23

17 18 libro 21 22 25 29

26 27 lista 30 31

9(17$-$6

 )iFLO GH LPSOHPHQWDU  %XHQDV SUHVWDFLRQHV $FFHVR GLUHFWR $FFHVR VHFXHQFLDO

,1&219(1,(17(6

 &XiO VHUi HO WDPDxR Pi[LPR GHO ILFKHUR"  )UDJPHQWDFLyQ ([WHUQD 5HTXLHUH &RPSDFWDFLyQ

6LVWHPDV2SHUDWLYRV,

6LVWHPDVGH)LFKHURV



$SXQWHV GH 62 ,

6LVWHPDV GH )LFKHURV

Los problemas que presenta esta asignacin contigua aparecen a la hora de encontrar espacio en el disco para un nuevo fichero. El problema de la asignacin del espacio de disco es similar al de la gestin de memoria principal, en el que hay que satisfacer una peticin de tamao Q a partir de una lista de huecos libres. As, HO SULPHUR TXH VLUYD o HO TXH PHMRU VH DGDSWH son los algoritmos ms comnmente utilizados. El inconveniente que presentan estos algoritmos es la fragmentacin externa, pues a medida que se crean y borran ficheros el espacio libre del disco se va descomponiendo en huecos cada vez ms pequeos (no aprovechables). La nica solucin a este problema es la compactacin, pero por su alto coste en tiempo, raramente se suele realizar. Otro gran problema de esta asignacin contigua es cmo determinar cunto espacio se va a necesitar para un fichero, es decir, cmo saber en el momento de la creacin de un fichero cul va a ser su tamao mximo. Cuando el fichero va a ser la copia de otro existente, no es ningn problema, pero cuando se trata de la creacin del fichero de salida de una aplicacin, puede resultar difcil hacer una estimacin. Si se le asigna poco espacio, pronto nos podemos encontrar con que el fichero no se puede ampliar, en cuyo caso habra que volver a realizar el proceso de creacin desde del principio, eligiendo un rea inicial mayor; o mover o copiar el fichero a otra rea del disco con un mayor tamao, lo cual puede consumir un tiempo considerable. Incluso aunque se conozca por adelantado el tamao final de un archivo, obsrvese que si el tamao final es muy grande pero crece muy despacio, va a haber durante mucho tiempo un rea de disco asignada a un fichero e inutilizada (hasta que el fichero crezca y la llene), o lo que es lo mismo, se va a producir fragmentacin interna.

 /LVWD (QFDGHQDGD Como se puede ver en la Figura 12, con este mtodo de asignacin, cada fichero est compuesto por una lista de bloques encadenados, de tal forma que ahora cada bloque puede estar situado en cualquier lugar del disco. Por ejemplo, un fichero puede comenzar en el bloque nmero 7, continuar en el 24, despus el 12, y por ltimo terminar en el 5. Cada bloque debe contener un puntero al siguiente bloque de la lista. Obviamente, estos punteros no estn accesibles al usuario, pero si cada bloque es de 512 bytes, por ejemplo, y cada puntero requiere 4 bytes, el rea de datos de cada bloque queda reducida a 508 bytes. De esta manera, en las entradas del directorio solamente hay que indicar cul es el primero y el ltimo bloque de cada fichero. Con la asignacin mediante lista encadenada, ya no se produce fragmentacin externa, y cualquier bloque libre puede aprovecharse para satisfacer una peticin de espacio. Ntese tambin que ahora no es necesario indicar el tamao en la creacin de un fichero; a medida que va creciendo se van aadiendo bloques a su lista encadenada y, desde luego, nunca se requiere una compactacin.

$SXQWHV GH 62 ,



6LVWHPDV GH )LFKHURV

,PSOHPHQWDFLyQ GHO 6)

$VLJQDFLyQ GH (VSDFLR

+ /LVWD (QFDGHQDGD
(O ILFKHUR VH JXDUGD HQ XQD OLVWD HQFDGHQDGD GH EORTXHV GH GLVFR 'LUHFWRULR ),&+(52 pipo 9(17$-$6
0 4 8 12 1 10 2 5 6 3 7

&20,(1=2 9

),1 25

3 6LQ SUREOHPDV GH FUHFLPLHQWR 3 1R KD\ IUDJPHQWDFLyQ H[WHUQD ,1&219(1,(17(6 3 ,QHILFLHQWH SDUD DFFHVR GLUHFWR 3 (VSDFLR SDUD ORV SXQWHURV &OXVWHUV J 0HQRV HVSDFLR SDUD SXQWHURV J 0HMRUD HO 7DFFHVR L 0D\RU IUDJPHQWDFLyQ

9 16 10 25 11 13 14 18 22 15 19 23 27 31

16 1 17 20 24 28 21

25 -1 26 29 30

3 0HQRV )LDEOH /D )$7 6ROXFLRQD HO 3UREOHPD GHO $FFHVR 'LUHFWR


(QWUDGD GHO 'LUHFWRULR

test
nombre

...

217
comienzo

     QLO 

J 0HQRV PRYLPLHQWRV GH FDEH]DV J /D )$7 SXHGH FDUJDUVH HQ 5$0

6LVWHPDV2SHUDWLYRV,

6LVWHPDVGH)LFKHURV



$SXQWHV GH 62 ,

6LVWHPDV GH )LFKHURV

No obstante, tambin presenta ciertos inconvenientes. El principal es que solamente se puede utilizar eficientemente para acceso secuencial, pues para acceder al ensimo bloque de un fichero, es necesario empezar por el primer bloque e ir recorrindolos uno por uno hasta llegar el bloque Q, y teniendo en cuenta que los bloques estn dispersos en el espacio de direcciones, cada acceso a un bloque para leer el puntero al siguiente puede consumir un tiempo muy significativo. Adems, aunque es un mal menor, se debe tener en cuenta que los punteros consumen espacio, as, en un bloque de 512 bytes, si el puntero ocupa 4 bytes, se requiere un 0,78% del disco dedicado a espacio para punteros. Este problema suele solventarse utilizando FOXVWHUV como unidades de asignacin. Un FOXVWHU es un grupo de Q bloques, de tal forma que en cada FOXVWHU hay un puntero indicando la direccin del siguiente FOXVWHU de datos. Claramente, el espacio dedicado a punteros queda dividido por Q. Adems de esto, se mejora el tiempo dedicado a posicionamiento, ya que en cada FOXVWHU los Q bloques estn consecutivos; y tambin disminuye el tamao de la lista de bloques libres, pues estn agrupados de Q en Q. El problema de los FOXVWHUV es que generan fragmentacin interna. No obstante, se suelen utilizar en la mayora de los sistemas operativos. Un ltimo problema que presenta la lista encadenada es la fiabilidad. Ya que los bloques de datos de un fichero estn formados por una lista de punteros dispersos por el disco, la prdida o dao de uno de ellos ocasiona tambin la prdida de la informacin del fichero contenida en los restantes bloques de la lista. Hay algunas soluciones parciales, como la utilizacin de listas de doble enlace, pero tambin generan una mayor sobrecarga en el tiempo de gestin de la lista. Una importante variacin de este mtodo de asignacin es la utilizacin de la 7DEOD GH $VLJQDFLyQ GH )LFKHURV (FAT). Este sistema, utilizado por MS-DOS y OS/2, consiste en tener una tabla al comienzo de cada particin del disco, la cual contiene una entrada por cada bloque del disco, y estn ordenadas por nmero de bloque. Si nos fijamos en la parte inferior de la Figura 12 podemos ver que la entrada de la tabla correspondiente al primer bloque de un fichero contiene el nmero del siguiente bloque; la entrada de ese siguiente bloque contiene a su vez la direccin del siguiente, y as sucesivamente hasta llegar a una entrada cuyo contenido es QLO, indicando el fin de la lista encadenada. Los bloques no utilizados para ningn fichero aparecen con un 0 en la FAT, indicando que estn libres. Un beneficio inmediato de la FAT es que mejora significativamente el tiempo de acceso directo, pues las bsquedas se realizan sobre la tabla, no sobre los bloques del disco. Para mejorar las prestaciones de este sistema, conviene tener cargada la FAT en memoria principal o cach, para evitar as acceder al disco en la gestin de la tabla.

$SXQWHV GH 62 ,



6LVWHPDV GH )LFKHURV

 $VLJQDFLyQ ,QGH[DGD La asignacin indexada trata de solventar los problemas de la lista encadenada con el acceso directo. Para ello, lo que hace es reunir todos los punteros correspondientes a los bloques de un fichero en un nico lugar: el EORTXH GH tQGLFHV (Figura 13). Cada fichero tiene su propio bloque de ndices, que consiste en un vector ordenado de los nmeros de bloque del fichero, de tal forma que la ensima entrada del vector contiene el nmero del ensimo bloque del fichero. Como se puede apreciar, este esquema es similar al de la paginacin de memoria principal, en el que nos servamos de una tabla de pginas. Cuando se crea el fichero, todas las entradas del bloque de ndices contienen el valor QLO; a medida que el fichero crece y se van aadiendo bloques, se van anotando sus nmeros sucesivamente en el bloque de ndices. En el directorio simplemente hay que hacer constar la direccin del bloque de ndices de cada fichero. Ahora s se soporta bien el acceso directo sin sufrir fragmentacin externa, pues al igual que en la lista encadenada, cualquier bloque libre del disco sirve para satisfacer una peticin de espacio. El problema que presenta este sistema es el desperdicio de espacio, pues el tamao del bloque de ndices normalmente es mayor que el requerido para los punteros en la lista encadenada. Si consideramos el caso de un fichero pequeo (uno o dos bloques de datos), se requiere un bloque de ndices entero aunque solamente se utilicen una o dos entradas. Como siempre, se plantea el dilema: si el bloque de ndices es grande, se desaprovecha mucho espacio; si es pequeo, puede que no quepan todos los ndices de un fichero extenso. Una buena solucin a este problema es el utilizado por Unix (Figura 14). Unix mantiene unos cuantos punteros a bloques de datos en el I-nodo (punteros directos), pero en caso de que se llenen estos bloques, entonces utiliza otro puntero (puntero indirecto) que indica la direccin de un bloque de ndices, el cual contiene punteros a bloques de datos. Si tambin se utilizan todos esos bloques, en el I-nodo se dispone de punteros con doble y triple indireccin a bloques de datos. Al igual que con la FAT, para mejorar los tiempos de acceso, se pueden cargar los bloques de ndices en memoria principal, aunque nunca se evita el tiempo de posicionamiento, ya que los bloques de datos se encuentran desperdigados por el disco.



$SXQWHV GH 62 ,

6LVWHPDV GH )LFKHURV

,PSOHPHQWDFLyQ GHO 6)

$VLJQDFLyQ GH (VSDFLR

+ $VLJQDFLyQ ,QGH[DGD
6ROXFLRQD HO SUREOHPD GHO DFFHVR GLUHFWR OOHYDQGR WRGRV ORV tQGLFHV GH FDGD ILFKHUR D XQ %ORTXH GH QGLFHV ),&+(52 pipo %/248( '( 1',&(6 19

0 4 8 12 16 20 24 28

1 5 9 13 17 21 25 29

2 6 10 14 18 22 26 30

3 7 11 15 19 23 27 31

        

352%/(0$ 7DPDxR GHO %ORTXH GH QGLFHV" 6, (6 *5$1'( &RQ ILFKHURV SHTXHxRV VH GHVDSURYHFKD HO HVSDFLR GHO EORTXH 62/8&,21(6 6, (6 3(48(f2 3XHGH TXH QR TXHSDQ WRGRV ORV tQGLFHV GH XQ ILFKHUR JUDQGH 3 %ORTXHV GH tQGLFHV HQOD]DGRV 3 ,1RGRV GH 8QL[

6LVWHPDV2SHUDWLYRV,

6LVWHPDVGH)LFKHURV

$SXQWHV GH 62 ,



6LVWHPDV GH )LFKHURV

$VLJQDFLyQGH(VSDFLR

 $VLJQDFLyQ ,QGH[DGD

, 1RGR GH 8QL[
3HUPLVRV 3URSLHWDULR )HFKDV 7DPDxR 1EORTXHV

'DWRV 'DWRV 'DWRV

%ORTXHV 'LUHFWRV

'DWRV 'DWRV

6LPSOHLQGLUHFWR 'REOHLQGLUHFWR 7ULSOHLQGLUHFWR

'DWRV

'DWRV

'DWRV 'DWRV 'DWRV

, 1RGR

6LVWHPDV2SHUDWLYRV,

6LVWHPDVGH)LFKHURV

 *HVWLyQ GHO (VSDFLR /LEUH


Ya que el espacio del disco no es infinito, es necesario reutilizar el espacio de los ficheros borrados para ficheros nuevos. Si partimos de la base de que la unidad de asignacin de espacio es el EORTXH, para saber en cada momento el espacio libre del disco, es necesario mantener una lista de los bloques libres, es decir aquellos que no estn asignados a ningn fichero o directorio. Para crear un fichero se busca en la lista de bloque libres el nmero de bloques necesarios para satisfacer el espacio requerido para el nuevo fichero. Entonces, los bloques seleccionados se borran de la lista de bloques libres. Cuando se borra un fichero, los bloques que lo componen se aaden a la lista de bloques libres. Antes de ver dos mecanismos distintos para llevar la cuenta del espacio libre (mapa de bits y lista encadenada), se debe establecer cul va a ser el tamao del bloque.

 7DPDxR GHO %ORTXH Dado el modo en el que estn organizados los discos, parece que los candidatos a ser unidad de asignacin son: el sector, la pista y el cilindro.



$SXQWHV GH 62 ,

6LVWHPDV GH )LFKHURV

,PSOHPHQWDFLyQ GHO 6)

*HVWLyQ GHO (VSDFLR /LEUH


7DPDxR GHO EORTXH "

/D XQLGDG GH HVSDFLR GH GLVFR DVLJQDEOH HV HO EORTXH

*5$1'(

3(48(f2

)UDJPHQWDFLyQ ,QWHUQD

L ,QHILFLHQWH

$FFHVR

7LHPSR GH /HFWXUD GH XQ %ORTXH GH . E\WHV


3LVWD GH  7URWDFLyQ 7SRVLFLRQDPLHQWR
.E\WHVV

 E\WHV  PV  PV
$SURYHFKDPLHQWR GHO GLVFR

    . [ 

    

Utilizacin del espacio de disco

   

Vtransferencia





 . . 7DPDxR GHO EORTXH

.

.

3DUD )LFKHURV GH  .E\WH


7DPDxR 1RUPDO GHO %ORTXH    .E

6LVWHPDV2SHUDWLYRV,

6LVWHPDVGH)LFKHURV

$SXQWHV GH 62 ,



6LVWHPDV GH )LFKHURV

Volvemos a la eterna disyuntiva. Si elegimos al cilindro como bloque de asignacin, entonces todos los ficheros, incluso los de un solo byte, tendrn al menos un cilindro asignado. Algunos estudios han mostrado que el tamao medio de los ficheros de entornos Unix est alrededor de 1 Kbyte, por lo que la utilizacin de cilindros de 32 K como unidad de asignacin significara un desaprovechamiento de 31/32, o lo que es lo mismo, el 97% del espacio del disco. Por otra parte, la utilizacin de pequeas unidades de asignacin implica que cada fichero estar formado por muchos bloques. Ya que la lectura de cada bloque requiere un tiempo de posicionamiento y un retardo rotacional, la lectura de un fichero formado por muchos bloques pequeos ser lenta. (Vase el ejemplo de la Figura 15, en el que se muestra el tiempo de lectura de un bloque de K bytes). Las curvas de la Figura 15-inferior nos muestran la velocidad de transferencia y el aprovechamiento del espacio del disco en funcin del tamao del bloque, supuesto que el tamao de los ficheros es de 1 Kbyte. La lnea continua muestra la velocidad de transferencia; a medida que aumenta el tamao del bloque, vemos que la escala de la parte izquierda indica una mayor velocidad de transferencia. Sin embargo, la lnea de trazos pone de manifiesto cmo se empobrece el aprovechamiento del espacio del disco (en la escala de la parte derecha) a medida que aumenta el tamao del bloque. Como siempre, la eficiencia en tiempo de respuesta y aprovechamiento del espacio estn en conflicto. El compromiso suele llevar a un tamao de bloque de 512 bytes a 2 Kbytes. Si se elige un bloque de 1 K para un disco con sectores de 512 bytes, entonces siempre se leern 2 sectores consecutivos y se les tratar como una unidad indivisible.

 0DSD GH %LWV Este mtodo de administracin de los bloques libres es similar al visto anteriormente en la gestin de la memoria principal. Consiste en tener un mapa de bits en el que cada bloque del disco est representado por un bit. As, si el bloque est libre, su bit correspondiente 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, pues normalmente resulta fcil encontrar el primer bloque libre, o los Q bloques libres consecutivos, especialmente ahora que los procesadores suelen disponer de instrucciones especiales para la bsqueda de series de bits en memoria. Esto implica que el mapa de bits debe copiarse a la memoria principal para realizar la gestin, y ocasionalmente copiarlo a disco para mantenerlo coherente. Mantener el mapa de bits en memoria principal no presenta ningn inconveniente en los discos pequeos, pero con discos de gran capacidad (del orden de gigabytes) el mapa de bits para bloques de 512 bytes puede llegar a ser considerable (ms de 300 Kbytes). La tcnica de los FOXVWHUV puede ayudar a disminuir el tamao del mapa de bits.



$SXQWHV GH 62 ,

6LVWHPDV GH )LFKHURV

,PSOHPHQWDFLyQ GHO 6)

*HVWLyQ GHO (VSDFLR /LEUH


 6H SLGHQ \ VH DVLJQDQ D XQ ILFKHUR  $O ERUUDU HO ILFKHUR VH GHYXHOYHQ

/RV %ORTXHV GH 'LVFR

+D\ TXH OOHYDU OD FXHQWD GH ORV EORTXHV OLEUHV

/LVWD GH %ORTXHV /LEUHV


&DEHFHUD GH OLVWD GHO HVSDFLR OLEUH
0 4 8 12 16 20 24 28 1 5 9 13 17 21 25 29 2 6 10 14 18 22 26 30 3 7 11 15 19 23 27 31

,QHILFLHQWH SDUD UHFRUUHU OD OLVWD

%ORTXH GH

QGLFHV /LEUHV

2WUD SRVLELOLGDG

0DSD GH %LWV
   

%ORTXHV /LEUHV                0DSD GH %LWV

3 (V VLPSOH \ HILFLHQWH 3 6H GHEH PDQWHQHU HQ 5$0 3 2MR FRQ ORV GLVFRV JUDQGHV

6LVWHPDV2SHUDWLYRV,

6LVWHPDVGH)LFKHURV

$SXQWHV GH 62 ,



6LVWHPDV GH )LFKHURV

 /LVWD (QFDGHQDGD Al igual que suceda con la gestin de la memoria principal, otra opcin para llevar la cuenta del espacio libre de disco consiste en mantener una lista de los bloques libres. En una direccin prefijada del disco se guarda el puntero al primer bloque libre; este primer bloque contiene un puntero al siguiente bloque libre; y as sucesivamente hasta llegar al ltimo bloque libre, cuyo puntero tendr un valor QLO (Ver Figura 16). El problema de esta solucin es su ineficiencia, pues para ir recorriendo la lista hay que ir leyendo cada uno de los bloques, que por estar dispersos por el disco conlleva un tiempo substancial. Afortunadamente, no es habitual tener que recorrer la lista, ya que normalmente slo se requiere un nico bloque libre (el primero), pues la asignacin de espacio libre a los ficheros se suele ir realizando poco a poco, a medida que el fichero va creciendo. Recordando en qu consista la FAT, vemos que constaba de un mapa de bloques encadenados en el que las entradas correspondientes a bloques libres tenan un cero. Como se puede apreciar, utilizando este mtodo de asignacin de espacio no se requieren listas adicionales para llevar la cuenta de los bloques libres.

 ,PSOHPHQWDFLyQ GH ORV 'LUHFWRULRV


Un directorio es un fichero ms, con la particularidad de que los datos que contiene son precisamente la informacin sobre los ficheros que contienen los datos de usuario. Esta informacin suele consistir, bsicamente, en una lista de los ficheros de usuario junto con sus atributos correspondientes o la direccin del bloque de atributos. La estructura del directorio es conocida por el sistema operativo, que est encargado de la gestin del Sistema de Ficheros. Sobre la implementacin del directorio, la principal consideracin que hay que tener es sobre la organizacin y algoritmos de acceso a sus entradas. Hay dos algoritmos bsicos para organizar y gestionar las entradas de un directorio: la lista lineal y la tabla KDVK. Vemoslos en detalle. /LVWD /LQHDO. El mtodo ms simple para implementar un directorio consiste en utilizar una lista lineal de nombres de ficheros con sus correspondientes atributos y punteros a los bloques de datos. Aunque este mtodo resulta muy fcil de implementar, con una lista lineal de entradas de directorio se requiere una bsqueda igualmente lineal para encontrar una entrada concreta, lo que consume un tiempo importante. Este tiempo puede resultar molesto, sobre todo si tenemos en cuenta que es necesario buscar en el directorio la entrada correspondiente de un fichero para crearlo, leer o escribir en l, borrarlo, etc. El tiempo de respuesta puede verse muy mejorado si se mantiene la imagen del directorio en una memoria cach. Una lista ordenada permitira realizar bsquedas binarias, reduciendo el tiempo de bsqueda, sin embargo el mantenimiento de la lista



$SXQWHV GH 62 ,

6LVWHPDV GH )LFKHURV

ordenada tambin genera una sobrecarga significativa a la hora de crear y borrar ficheros. Quizs un rbol binario pueda resultar ms conveniente. 7DEOD +DVK. Este sistema consiste en aadir una tabla o algoritmo KDVK a la lista lineal de las entradas del directorio. La funcin KDVK toma como entrada el nombre de un fichero y devuelve como valor de salida la direccin de su entrada en la lista lineal del directorio. As, obviamente decrece en gran medida el tiempo de bsqueda. Como para cualquier algoritmo KDVK, se deben tomar medidas para el tratamiento de las FROLVLRQHV, es decir, las situaciones en las que para dos nombres distintos de ficheros se obtiene la misma direccin en el directorio. El problema que se puede presentar es que los algoritmos KDVK se realizan para un nmero fijo de entradas de directorio (por ejemplo, de 0 a 127), pero si el directorio se llena y se requiere una ampliacin (hasta 255), habra que modificar el algoritmo KDVK para cambiar el rango de direcciones que genera. Esto obligara a tener que rehacer todo el directorio utilizando la nueva funcin KDVK.

$SXQWHV GH 62 ,



6LVWHPDV GH )LFKHURV

,PSOHPHQWDFLyQ GHO 6)

/RV 'LUHFWRULRV

&yPR 2UJDQL]DU ODV (QWUDGDV GHO 'LUHFWRULR "

+ /LVWD /LQHDO
J (V VLPSOH GH LPSOHPHQWDU &yPR ERUUDU XQ ILFKHUR  1RPEUH HQ EODQFR  %LW GH HQWUDGD OLEUH SDUD FUHDUOR SDUD DFFHGHU SDUD ERUUDU

L (V OHQWR EXVFDQGR XQ ILFKHUR

%~VTXHGD /LQHDO

PDQWHQLPLHQWR FRVWRVR

0HMRUD FRQ OD %~VTXHGD %LQDULD

+ 7DEOD +DVK
/LVWD OLQHDO  $OJRULWPR KDVK 1RPEUH )LFKHUR $OJRULWPR +DVK QGLFH HQ OD WDEOD OLQHDO

3UREOHPDV
L 7DPDxR ILMR GH OD WDEOD 6L VH DPSOtD 1XHYD IXQFLyQ KDVK
6LVWHPDV2SHUDWLYRV,

L &ROLVLRQHV

5HRUJDQL]DU WRGR HO GLUHFWRULR


6LVWHPDVGH)LFKHURV



$SXQWHV GH 62 ,