sistema so perati vos
DESCRIPTION
bvccTRANSCRIPT
Capítulo 6
Sistemas de archivos
L A computadora fue creada básicamente para el procesamiento de información, es mucho
más útil cuando se tienen que procesar miles o millones de datos y como sabemos, la me-
moria principal es limitada. Existen algunas aplicacionespara las cuales el almacenamiento en
memoria es suficiente puesto que la información que entreganpuede visualizarse directamente
en pantalla y después de ello, ésta puede perderse, pero hay otras como los bases de datos, que
deben manejar cantidades enormes de datos y además mantenertambién en algún lugar los re-
sultados obtenidos. En cuyo caso, la memoria principal es muy poca y su volatilidad un gran
problema, puesto que no puede permitirse la pérdida de información. La mayoría de los maneja-
dores de bases de datos deben de mantener su información por meses, incluso años. Es posible
también que deba tener registros históricos que no deben de perderse nunca.
Otro problema importante es que este manejador de bases de datos tenga la oportunidad de
proporcionar información a más de un usuario a la vez, permitiendo así que puedan acceder a
diferentes datos al mismo tiempo o a un mismo dato de forma secuencial garantizando de esta
forma la integridad de la bases de datos.
La forma de resolver estos problemas es diseñando los procesos de modo tal que éstos sean
completamente independientes de los datos y viceversa, haciendo que las llamadas del sistema
permitan una homogeneidad total para el acceso a los datos. Así, definiremos los requisitos
mínimos necesarios para almacenar la información a largo plazo:
Almacenar grandes cantidades de información.Este punto es usualmente cubierto utilizan-
do discos duros o cintas magnéticas de gran capacidad. Como se vio en la sección 2.1.1.2
existen actualmente discos duros que pueden llegar al Terabyte o más aún en discos que
son usados para atender a miles de usuarios. En caso de que se necesite más espacio los
discos físicos pueden agruparse en unidades lógicas de modoque el usuario los vean como
uno solo.
251
252 6.1. CONCEPTO
Los procesos deben poder guardar información para cuando larequieran. El sistema ope-
rativo debe proporcionar los mecanismos adecuados para queun proceso pueda guardar
su información a discos o cintas y también los medios para quepueda recuperar esa infor-
mación en otro momento.
Acceso concurrente a la información.El sistema operativo debe permitir que dos o más pro-
cesos accedan simultáneamente a la información contenida en disco. Por ejemplo, en caso
de accesos de sólo lectura y en accesos de escritura debe serializar los procesos para ga-
rantizar la integridad de la información.
6.1. Concepto
La estructura de datos que utiliza el sistema operativo paralograr sus objetivos se le llama
archivo. De este modo, cuando un proceso requiere guardar información, le solicita al sistema
operativo la creación de un archivo, hace las operaciones necesarias sobre él y al final, el proceso
solicita el cierre del archivo. Desde este momento, el archivo ha quedado guardado y el proceso
podrá acceder a éste en el momento en que lo desee, no importando si el proceso muere y luego
es corrido nuevamente.
El sistema operativo debe de ser capaz de manejar todos los archivos que le sean solicitados
por diferentes procesos. A la estructura de datos que usa el sistema operativo para este propósito,
se le denominasistema de archivos. Esta estructura permite mantener información importante
acerca de los archivos como por ejemplo:
nombre del archivo. Es el que le asigna el usuario para poder acceder a éste.
El propietario del archivo. Es la persona que ha creado el archivo y que puede indicar qué
operaciones pueden realizarse en él.
Los grupos u otras personas que pueden acceder al archivo.El propietario indica a qué per-
sonas o grupos de ellas puede dar acceso de lectura, escritura o ambas.
Ubicación en disco.Indica en qué lugar del disco se encuentra almacenada la información.
Tipo. En algunos sistemas operativos es importante el tipo, por que permite cargar la aplicación
asociada con el archivo de modo que pueda ser interpretado correctamente.
Fecha y hora. Indican cuando se creó el archivo y a qué hora, algunos sistemas de archivos
indican simplemente la fecha y la hora de la última modificación.
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 253
El sistema operativo maneja una abstracción de datos denominadaarchivo que permite ocul-
tar al usuario todos los detalles relativos al almacenamiento de la información. De esta forma,
lo único que tiene que saber el usuario es la manera de crear unarchivo, abrirlo si ya está crea-
do, leer o escribir en éste y cerrarlo para liberar las estructuras proporcionadas por el sistema
operativo.
Un archivo es una colección de datos relacionados, el usuario le asigna un nombre y el
archivo puede entonces crearse, escribir en él, leer bytes oregistros sobreescribir en algunas
posiciones y cerrar el archivo para asegurarse de que toda lainformación se ha vaciado de los
búferes intermedios al disco o cinta. Para un usuario normal, los archivos son la única forma que
tiene para guardar alguna información a disco, no importa que solamente necesite guardar uno
o dos registros o incluso sólo algunos caracteres. Será necesario hacerlo mediante un archivo.
La información de los archivos es almacenada en la estructura de directorios que el sistema
operativo guarda también en el almacenamiento secundario.Una entrada de directorio típica es-
tá compuesta del nombre del archivo y de un identificador de usuario que es único en todo el
sistema. El identificador a su vez, permite localizar los otros atributos del archivo. En muchos
sistemas de archivos es normal que cada entrada de archivo necesite al menos un kilobyte de
almacenamiento. En sistemas donde se tienen muchos archivos, podría ser un problema de ren-
dimiento el tener la estructura de directorios en disco, porlo que en sistemas de tipo servidor, es
común que el sistema operativo coloque buena parte de la estructura de directorios en memoria
para mejorar la eficiencia del sistema. Esto implica que si enalgún momento se tiene una caída
de la alimentación de la energía eléctrica, esta estructurade directorios en memoria se pierda
sin haberla podido reflejar en disco, lo que implica un daño severo a la estructura de directorios
de disco. Si estas caídas de alimentación eléctrica persisten, puede llegar el momento en que
el sistema de archivos quede inutilizado. De ahí la importancia de proporcionar un sistema de
respaldo de energía eléctrica a estos servidores de modo queel sistema operativo pueda apa-
garse correctamente, permitiendo una sincronización adecuada de la estructura de directorios
contenida en memoria con la contenida en disco.
6.1.1. Operaciones con los archivos
El sistema operativo se encarga de proporcionar un conjuntode llamadas al sistema que
constituyen todas las operaciones que pueden realizarse sobre un archivo. Las llamadas que
proporciona el sistema operativo son para crear, escribir,leer, reposicionar, borrar, y truncar
archivos. En seguida damos una descripción más detallada sobre estas operaciones.
Creación. Cuando se crea un archivo, el usuario proporciona el nombre,el sistema ope-
rativo creará una entrada de directorio y le asignará los permisos por defecto si es que el
254 6.1. CONCEPTO
usuario no los proporcionó.
Escritura. Para escribir datos en un archivo, debe de abrirse en modo escritura proporcio-
nando el nombre del archivo en el que se desea escribir y elegir el tipo de transferencia
que se efectuará, seleccionando la llamada al sistema correspondiente, que puede ser mo-
do caracter o modo bloque. Con esta información, el sistema operativo busca el nombre
dentro de su estructura de directorios y lleva un apuntador en el lugar en que debe de rea-
lizarse la siguiente escritura. Si se añade más información, el apuntador se actualiza en el
lugar correspondiente.
Lectura. Para leer de un archivo, éste debe abrirse en modo lectura, especificando el nom-
bre del archivo que se desea leer. Después de hace una llamadaal sistema que puede ser
usando una llamada de lectura de bloque o de caracter, especificando la variable apun-
tador que proporcione la dirección en memoria en donde debe guardarse la información
leída. El sistema operativo lleva también un apuntador de archivo que indica la posición
siguiente que debe ser leída.
Reposicionamiento.Permite reubicar los apuntadores de lectura o escritura dentro de un
archivo. Esta operación se conoce también comoseeko búsqueda dentro del archivo.
Borrado. Para eliminar un archivo, el usuario proporciona el nombre yentonces el sistema
operativo recorre su estructura de directorios, si lo encuentra, entonces se libera todo el
espacio ocupado por el archivo y la entrada se elimina de la estructura de directorios.
Truncado. En ocasiones es necesario borrar el contenido de un archivo,pero sin cambiar
su nombre ni sus atributos, excepto por supuesto el tamaño del archivo, o en se defecto
sólo es necesario borrar parte de éste. En lugar de borrar y crear nuevamente el archivo
esta operación permite eliminar parte o toda la informaciónque contiene el archivo, es-
to dependerá de la posición del apuntador de archivo. Si éstese encuentra al principio,
borrará todo el contenido, si está en medio solo truncará a partir de esa posición.
Estas son las operaciones básicas. En un sistema operativo real, habrá muchas más llamadas
a función como por ejemplo, aquellas que se utilizan para obtener los atributos de un archivo, y
las llamadas al sistema para el manejo de errores de entrada salida del sistema, entre otras.
6.1.2. Jerarquía de datos
Básicamente todos los tipos de datos que encontramos en un lenguaje de programación son
susceptibles de ser almacenados en disco. Para ello, el sistema operativo solamente proporcio-
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 255
nará dos maneras de acceso a un archivo:
1. Acceso por caracter o byte por byte.
2. Acceso por bloque o lectura de muchos caracteres o bytes almismo tiempo.
Mediante estas dos formas de acceso, el usuario tendrá que traducir todos los datos que vaya
a manejar a bytes o bloques, de manera que pueda guardar su información a disco. El usuario,
por la tanto, es el responsable de interpretar correctamente el tipo de dato que está guardado en
el archivo. En general, los tipos de datos que puede manejar un lenguaje de programación son
los siguientes:
char. Representa un byte o un caracter. Un byte es un número que desde 0 hasta28 o que puede
representar un número entre±27.
int. Un número entero está representado por una palabra. Las palabras varían de acuerdo a la
arquitectura de la computadora que se esté usando y puede ir desde los 16, 32, hasta los
64 bits. De acuerdo a esto varía la cantidad que puede guardaruna palabra. Por ejemplo,
si tenemos una palabra de 16 bits entonces podremos guardar enteros positivos que van
desde 0 hasta216. Si queremos representar número negativos y positivos. El rango sería
de±215.
float. El tamaño que usa en bytes es 4 el valor máximo es1037 y el mínimo es10−37.
long. Usa también 4 bytes y sus valores van desde 2,147,483,647 consigno (4294967295 cuan-
do es unsigned) y el mínimo es -2,147,483,648 (0 cuando es unsigned).
long long. Su Tamaño en bytes es 8. El valor máximo es:
9,223,372,036,854,775,807 (18,446,744,073,709,551,616 cuando es unsigned).
Su valor mínimo es 9,223,372,036,854,775,808 (0 cuando es unsigned).
short. Tiene solamente 2 bytes y su valor máximo es 32767 (65,535 cuando es unsigned). Su
valor mínimo es -32768 (0 cuando es unsigned).
double. Ocupa 8 bytes, su exponente máximo es10308 y su exponente mínimo es10−308.
void. Es un tipo especial en donde se le exige al usuario conocer el número de bytes que ocupa
su datos y al momento de usarlo debe de indicar cómo quiere quese trate esa cantidad de
bytes.
256 6.2. NOCIÓN DE ARCHIVO REAL Y VIRTUAL
Después de los tipos de datos básicos, el siguiente nivel sonlos arreglos y matrices de datos
simples. Estos pueden almacenarse como bloques de bytes a disco o pueden guardarse byte a
byte, debiendo entonces ser nuevamente interpretados de acuerdo a las necesidades del usuario.
El siguiente nivel en los lenguajes de programación son las estructuras. Una estructura es
un conjunto de variables de datos de distintos tipos pero agrupados bajo un sólo nombre y que
pueden entonces ser manejados como tal.
El último nivel son los objetos, que agrupan a un conjunto de variables de datos de distintos
tipos junto con las operaciones que pueden realizarse en ellas. En realidad, cuando se guarda
un objeto a disco, solamente se guardan los datos contenidosen éste el código es tomado del
programa objeto. A diferencia de una estructura, con un objeto es posible mandar a guardar a
otros objetos que estén dentro de éste y si estos subobjetos están definidos por otros objetos,
entonces es posible a su vez guardar también sus contenidos.De esta forma se pueden guardar
varios niveles de objetos con una sola llamada al objeto principal, permitiendo así recuperar
exactamente el estado del objeto en el momento en que fue guardado. Este comportamiento sería
muy difícil de conseguir con estructuras ordinarias. El único requisito para poder hacer esto es
permitir primeramente a los subobjetos que guarden su información correspondiente y luego el
objeto principal deberá guardar la suya. Al momento de leer la información, el objeto principal
deberá leer sus datos y enseguida indicar a sus subobjetos que hagan lo propio, siguiendo el
mismo orden.
Es común que todos los arreglos, las matrices, las estructuras y los objetos se guarden como
bloques, puesto que sería más ineficiente guardarlos byte a byte.
Algunos lenguajes de programación como Pascal imponen al usuario que en la creación del
archivo se indique el tipo de dato que va a ser guardado en el archivo. En otros como en C el
usuario es el responsable de interpretar los bytes que escribe y lee de disco.
Los archivos, a nivel programación se consideran también tipos de datos, y es claro para el
programador que debe primeramente declarar variables de tipo archivo para poder hacer uso de
ellas. Estas variables tendrán diferentes nombres dependiendo del lenguaje de programación.
Por ejemplo, en C tenemos solamente variables del tipo FILE.En C++ se cuenta también con
flujos o streams. Ambos enfoques están orientados a byte o bloque. Depende del programador
el significado que vaya a darles a la secuencia de bytes que leeo escribe.
6.2. Noción de archivo real y virtual
Cuando un proceso crea un archivo, le asigna un nombre, realiza un conjunto de operaciones
sobre éste y cuando el proceso termina, debe cerrar el archivo correspondiente. Después que ha
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 257
terminado el proceso, el archivo persiste almacenado en disco y otros procesos pueden hacer uso
del archivo usando su nombre como referencia. A los datos almacenados en el disco se le llama
archivo real y al nombre asignado al archivo se le conoce comoarchivo virtual .
Las reglas que se usan para nombrar archivos tiene que ver másen cómo facilitarles a los
usuarios la tarea de recordar los contenidos que en hacer un uso más eficiente del espacio de
almacenamiento de las entradas de directorios. Por lo tanto, la evolución de la manera en que se
nombran los archivos ha seguido esta línea.
En los primeros sistemas personales, era común nombrar a losarchivos hasta con ocho letras
para el nombre un punto y tres letras para la extensión. No permitían el uso de caracteres espe-
ciales. En la medida en que se hicieron evidentes las desventajas, se fue haciendo más versátil
la forma de nombrar archivos. Actualmente, la mayoría de lossistemas soportan sistemas de
archivos que pueden almacenar hasta 255 caracteres como nombre de un archivo y es posible
que el usuario haga uso de prácticamente cualquier caracterpara incluirlo dentro de un archivo,
ya sean caracteres alfanuméricos o caracteres especiales.
En los sistemas personales basados enMS-DOSera común que el sistema operativo no hicie-
ra distinción entre las letras mayúsculas y minúsculas. En los sistemas basados en UNIX/Linux
y en los sistemas de archivos NTFS de Windows 2000 en adelantetodos ellos hacen distinción
entre mayúsculas y minúsculas. Esta nueva forma permite másvariedad cuando se nombran
archivos y a su vez permiten crear contraseñas más fuertes, siendo más difícil decodificarlas.
Muchos sistemas de archivos manejan nombres de archivos en dos partes, separadas con
un punto. La parte que va después del punto se llama extensióny es usada para determinar
la aplicación que debe ser lanzada cuando se haga referenciaa ese archivo. En los sistemas
UNIX/Linux, los archivos pueden tener dos o más extensiones. Esto indica que el archivo ha
sido procesado por más de una aplicación. Por ejemplo un archivo que se llamerespaldo.tar.gz
indica que el archivo fue generado por el archivadortar y luego fue comprimido porgzip. Por
lo tanto, debe primerodescomprimirsey luegodesarchivarsepara poder hacer uso del archivo.
En los sistemas operativos orientados a usuario es común quelas extensiones estén asociadas
a ciertas aplicaciones. En la tabla 6.1 damos un listado de las asociaciones más comunes.
Como se comentó, en los sistemas tipos UNIX/Linux es responsabilidad del usuario y de
las aplicaciones asignar un significado a una extensión específica. el sistema operativo no tiene
cuidado de cómo usarlas. En realidad quien lleva a cabo estasasociaciones es elfront-endgráfico
o la interfaz gráfica. Por ejemplo,KDE, GNOMEo CDE.
En un sistema operativo basado en Windows, éste lleva un registro de las extensiones y el
programa correspondiente asociado con la misma. Si existe más de una aplicación que puede
manejar esa extensión, el sistema operativo podrá mostrar mediante una ventana secundaria
qué aplicaciones están disponibles para el archivo. Pero por omisión utilizará un sólo programa
258 6.2. NOCIÓN DE ARCHIVO REAL Y VIRTUAL
archivo.bat Archivo de órdenes de comandos
archivo.c Programa fuente de un programa en C
archivo.html Archivo de internet de marcado de hipertexto
archivo.mp3 Archivo de música comprimido con MPEG capa 3
archivo.jpg Archivo de imagen fija codificada con JPEG
archivo.o Archivo objeto de salida aún no ligado
archivo.ps Archivo postcript
archivo.tex Archivo fuente para el programa TEX
archivo.zip Archivo comprimido
archivo.txt Archivo de texto
archivo.tar Archivo que contiene más archivos y/directorios
archivo.ogg Archivo de música comprimido en formato libre
Tabla 6.1: Extensiones más comunes
asociado.
6.2.1. Tipos de archivos
Varios sistemas operativos hacen la distinción entre los archivos de usuario y los archivos
del sistema. Es común que a los archivos de usuario de les denomine archivos normalesy a
ciertos archivos del sistema se les denominearchivos especiales. Por ejemplo En los sistemas
UNIX/Linux y Windows tenemos directorios y archivos normales. UNIX/Linux manejan ade-
más archivos especiales orientados a caracteres y archivosorientados a bloques. Un archivo
normal mantiene información específica de los usuarios, como imágenes, texto y música.
Los directorios son archivos de sistema especiales que mantienen listas de archivos o di-
rectorios de modo que pueda construirse la estructura de directorios y forma parte esencial del
sistema de archivos.
Los archivos especiales de caracteres se usan para modelar dispositivos serie como el teclado
y las impresoras. Los archivos de bloque se usan para representar a los discos duros formando
parte del manejo de dispositivos de entrada salida y serán tratados en su oportunidad en la
sección 6.6.
Los archivos normales se pueden dividir básicamente en dos tipos:
1. Archivos de texto.
2. Archivos binarios.
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 259
6.2.2. Archivos de texto
Los archivos de texto regularmente son archivos ASCII. Estos consisten en una o más líneas
de texto terminadas con un caracter de retorno de carro. En otros se usa el caracter de salto de
línea y los sistemas basados en MS-DOS usan ambos. Una ventaja de este tipo de archivo es
que puede verse e imprimirsetal como estáteniendo un tipo de letra determinado, del mismo
modo en que se ve puede imprimirse. Este tipo de archivos no soporta gráficos ni tampoco
formateos complejos. Es lo más cercano a lo que podríamos realizar con una máquina de escribir
mecánica. Otra ventaja importante es su velocidad de manejoy su tamaño. También es posible
usar una gran cantidad de editores de texto y además poder hacerlo en diferentes plataformas,
con algunos cambios mínimos, que la mayoría de las veces, lasaplicaciones de intercambio
de archivos como ftp hacen automáticamente. El manejo de archivos de texto facilita mucho la
comunicación entre aplicaciones siendo también posible enviar la salida de un programa hacia
la entrada de otro mediante el uso detuberías, que significa básicamente la redirección de las
salidas a otros programas o dispositivos, siendo una forma estándar de comunicación entre las
utilerías proporcionadas por los sistemas operativos y entre varios programas de aplicación.
Los lenguajes de programación usan comúnmente archivos de texto que se denominanpro-
gramas fuente. El compilador toma estos archivos y genera un archivo objeto que posterior-
mente se enlaza con un conjunto de librerías para finalmente obtener el código binario listo para
ejecutarse. Algunos editores comoLATEX (orientado a estructura) toman también un conjunto
de órdenes de formateo en texto plano y producen un documentoperfectamente legible de alta
calidad. Hay que notar que las órdenes van insertadas en el propio documento de texto al igual
que en otros editores de formateo como openoffice writer (conun enfoque denominado “Lo que
tú ves es lo que obtienes”) pero su salida real se verá solamente bajo el propio editor de texto o
cuando esté impreso el trabajo.
Al igual que sucede con un archivo de código fuente de un lenguaje de programación, el
resultado o código binario no se verá hasta que se haya pasadoel archivo fuente por la fase de
compilación.
Otro ejemplo de uso de archivos tipo texto son las páginas web. El lenguaje denominado
html (Hiper Text Meta Language) permite a los diseñadores Web colocar órdenes de tipo texto
para distribuir todo tipo de información dentro de una página WEB. El archivo no necesita pasar
por ningún proceso de compilación. El resultado se verá a través del navegador de internet el
cual interpretará adecuadamente las órdenes y mostrará el resultado al usuario final. Si vemos
estos archivos en un editor de texto normal, podremos ver lasórdenes que utilizó el diseñador.
Las imágenes estarán indicadas por un enlace a la ubicación de la misma y además seremos
capaces de ver la mayoría del texto plano de la página, tal como sucedería en un archivo de
260 6.2. NOCIÓN DE ARCHIVO REAL Y VIRTUAL
LATEX.
Es común también que la mayoría de los sistemas operativos basados en UNIX/Linux usen
archivos de texto para mantener los archivos de configuración del sistema. De esta forma es
relativamente sencillo agregar o eliminar parámetros de configuración del sistema.
Los sistemas basados en Windows, también usan archivos de configuración basados en texto,
como en el archivo de configuración Windows.ini, pero también usa otro formato que debe ser
previamente procesado para poder ser legible tal como el registro de Windows.
6.2.3. Archivos binarios
Los archivos binarios, simplemente significa que no son archivos ASCII, por lo tanto, no
pueden verse directamente en pantalla o en una impresora y esnecesario alguna aplicación para
poder ver el contenido real. En caso de que llegaran a visualizarse o imprimirse con aplicaciones
que manejan archivos de texto solamente se verán caracteressin coherencia e incluso basura.
Esto es debido a que incluyen caracteres de control que no sonimprimibles. Dentro de este tipo
de archivos tenemos los de imágenes, los archivos portablestipo PDF y los archivos ejecutables
entre otros.
Los archivos ejecutables se caracterizan en windows por dosextensiones muy comunes: los
archivos con extensión .com y los archivos con extensión .exe. Aunque también se manejan otros
tipos como los .bat que son archivos de órdenes y los archivosde librerías dinámicas con .dll.
A diferencia de windows los sistemas basados en UNIX/Linux no necesitan extensión para
que el sistema operativo los identifique como ejecutables. Lo primero que hace el sistema ope-
rativo es analizar sus permisos y si éstos incluyen el permiso de ejecución entonces procederá
a ejecutarlo. Así, si se desea implementar un archivo de órdenes (equivalente a un .bat en win-
dows) solamente se escribe un comando por línea dentro del archivo, se guarda y se agrega el
permiso de ejecución al mismo.
En cuanto a los archivos de código binario, se hace todavía una verificación más: se deter-
mina si el archivo empieza con el denominadonúmero mágico. Todos los archivos binarios
ejecutables empiezan con esta marca. Esto se hace para evitar algún problema intentando ejecu-
tar instrucciones aleatorias que se podrían mal interpretar si se pretende ejecutar un archivo de
texto por ejemplo. Si el archivo no contiene este número entonces el sistema tratará de ejecu-
tarlo como un archivo por lotes e intentará obtener la primera línea del archivo. Por norma, en
UNIX/Linux los archivos por lotes deben identificar en la primera línea el intérprete que debe
ser utilizado para su ejecución. Aún así, si no encuentra esta línea, la tomará entonces como
una orden del shell por defecto y si no se encuentra dentro delrepertorio de instrucciones del
intérprete, éste indicará un error de orden inválida.
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 261
6.2.4. Interfase con el usuario
Cuando se habla de computación personal, lo que se busca es facilidad de manejo. Lo pri-
mero que aprende a manejar cualquier usuario es la creación de nuevas carpetas, creación de
archivos y ejecución de aplicaciones. Con estas bases, el usuario empezará entonces a introducir
datos dentro de los archivos organizarlos y enviar algunos archivos a impresión. ya sea mediante
órdenes del sistema operativo o indirectamente a través de aplicaciones.
El sistema de archivos puede, por tanto, dividirse en dos secciones bien diferenciadas:
1. Los archivos.
2. Las carpetas o directorios.
Los archivos son el elemento básico que guarda la información o el código ejecutable de las
aplicaciones.
La estructura de directorios organiza a los archivos de acuerdo a la solicitud de los usuarios
siendo común que cada aplicación cree sus propios directorios.
Es costumbre también que los sistemas operativos manejen una estructura de directorios
preestablecida para organizar todos los archivos pertenecientes al mismo y sugieran a su vez
otra estructura para el manejo de usuarios.
6.3. Componentes de un sistema de archivos
Un sistema de administración de archivos es un conjunto de librerías del sistema operativo
que proporciona a los usuarios y aplicaciones los serviciosrelativos al empleo de archivos. El
sistema operativo actúa como interface entre los usuarios yel hardware de almacenamiento
(discos, duros, memorias USB, cintas y otros más).
Los componentes de un sistema de archivos típico de acuerdo aStallings [96] son:
1. Controladores de dispositivos.Es el nivel más bajo. Se comunica directamente con los
periféricos. Es responsable de comenzar las operaciones deE/S en in dispositivo y proce-
sar la finalización de E/S.
2. Sistema de archivos básico.Se le conoce también comonivel de E/Sfísica constituye la
interfaz primaria con el entorno exterior. Este nivel tratacon bloques de datos queda son
intercambiados con los sistemas de almacenamiento. Se ocupa de ubicar dichos bloques en
el dispositivo de almacenamiento secundario e intermedio que se encuentra en la memoria
principal, también conocido comobuffer. Este nivel no toma en cuenta ni el contenido
262 6.3. COMPONENTES DE UN SISTEMA DE ARCHIVOS
ni la estructura de los archivos implicados. El sistema de archivos básico forma parte del
sistema operativo.
3. Supervisor básico de E/S.Se encarga de comenzar y finalizar todo tipo de entrada/salida
relacionada con archivos. Este nivel mantiene estructurasde control que se encargan de
las entradas y salidas con los dispositivos, la planificación y el estado de las operacio-
nes realizadas sobre los archivos. Panifica los accesos a losmedios de almacenamiento
para optimizar su rendimiento. En este nivel se asignan los buffer de E/S y se reserva la
memoria secundaria.
4. La entrada/Salida lógica.Es la parte del sistema de archivos que permite a los usuariosy
aplicaciones acceder a los sistemas de archivos. Esto se explica más a detalle en la sección
6.3.1 de llamadas al sistema.
En la figura 6.1 se puede ver la interacción entre sus diversoscomponentes.
Figura 6.1: Componentes y funciones del Sistema de archivos
6.3.1. Llamadas al sistema (systemcalls)
Después de haber analizado la teoría general del sistema de archivos, vamos ahora a dar una
introducción sobre la forma en que están implementadas las instrucciones de manejo de archivos
del sistema.
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 263
6.3.2. Interfaz de la biblioteca estándar
Esta biblioteca contiene las funciones que se utilizan parael manejo de archivos. Tienen
un parámetro de tipo apuntador hacia una estructuraFILE. TantoFILE como las definiciones
prototipo se encuentran en el archivo de cabecera<stdio.h>. Las funciones que vamos a analizar
para el manejo de archivos sonfopen, fread, fwrite y fclose.
6.3.2.1. Fopen
Su declaración es:
#include <stdio.h>
FILE *fopen (const char *file_name, const char type);
Si todo funciona correctamentefopen abre el archivo cuyo nombre está apuntado porfi-
le_name y le asocia un flujo que no es más que una estructura de tipofile. Si la llamada falla
fopen devuelve un apuntadorNULL y errno tendrá el código de error producido.
Type es una cadena que le indica afopen el modo de acceso al archivo. Entre otros, puede
tomar los siguientes valores:
“r” Abrir para leer.
“w” Abrir para escribir.
“a” Abrir para escribir al final del archivo o crar un archivo,si no existe para escribir en
él.
“r+” Abrir para actualizar el archivo (leer y escribir).
“w+” Abrir el archivo para leer y escribir, pero truncando primero su tamaño a 0 bytes. Si
el archivo no existe, se crea para leer y escribir en él.
6.3.2.2. Fread
Permite leer datos de un archivo a través de su flujo asociado.Su declaración es:
#include <stdio.h>
size_t fread (char *ptr, size_t size, size_t nitems, FILE *stream);
Fread copia en el arreglo apuntado porptr nitems bloques de datos procedentes del archivo
apuntado porstream. Cada bloque, o ítem, de datos leído tiene un tamaño desize bytes.
Fread termina su lectura cuando encuentra el final del archivo, se da una condición de error
o ha leído el total de bloques que se le pide. Si la lectura se realiza correctamente,fread devuelve
264 6.3. COMPONENTES DE UN SISTEMA DE ARCHIVOS
el total de bloques leídos. Si el valor devuelto es 0 significaque se ha encontrado el final del
archivo.
6.3.2.3. Fwrite
Fwrite permite escribir datos en un archivo a través de su flujo asociado. Su declaración es:
#include <stdio.h>
size_t fwrite (const char *ptr, size_t size, size_t nitems, FILE *stream); Fwrite copia
en el archivo apuntado porstream nitems bloques, cada uno de tamaño desize bytes. Los
bloques a escribir se encuentran en la zona de memoria apuntada porptr.
Si la llamada se ejecuta correctamente, devuelve el total debloques escritos. Si se da una
condición de error, el número devuelto porfwrite será distinto del número de bloques que se le
pasó como parámetro.
6.3.2.4. Fclose
Fclose cierra un archivo que ha sido abierto confopen. Su declaración es la siguiente:
#include <stdio.h>
int fclose (FILE *stream);
Fclose hace que toda la memoria intermedia de datos asociada astream sea escrita en el
disco, que el espacio de memoria reservado para las memoriasintermedias sea liberado y que el
flujo sea cerrado.
La operación de cerrado se realiza de forma automática sobretodos los archivos abiertos
cuando llamamos a la funciónexit. Fclose devuelve 0 si la llamada se ha ejecutado correcta-
mente yEOF (Final de archivo) en caso de que se produzca un error.
6.3.2.5. Entrada/salida de caracteres con la biblioteca estándar
En la biblioteca estándar existen dos funciones para leer y escribir caracteres (bytes) sobre
un archivo asociado a un flujo. Estas funciones sonfgetc y fputc que se declaran así:
#include <stdio.h>
int fgetc (FILE *stream); /* Lectura de caracteres */
int fputc (int c, FILE *stream) /*Escritura de caracteres*/
Fgetc devuelve el caracter siguiente al último leído del archivo asociado alstream. Aunque
fgetc va a leer los datos del archivo, devuelve un entero, con lo quese consiguen dos objetivos:
el primero es que el byte leído se devuelve como un caracter sin signo, y el segundo, que cuando
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 265
se detecta el final del archivo se puede devolverEOF(-1) sin que haya lugar a confundirlo con
un dato válido.
En fputc, c es el byte que se va a escribir en el archivo. Cuando se produceun error,fputc
devuelveEOF. Si la escritura se produce correctamente,fputc devuelve el valor escrito.
Estas dos funciones tienen dos macros equivalentes:getc y putc, que se sirven de la memoria
intermedia asociada al flujo y de las funciones__fillbuf y __flsbuf para agilizar el proceso de
lectura/escritura.
Las funcionesgetchar y putchar, que actúan sobre la entrada estándar y la salida estándar,
pueden codificarse como macros a partir degetc y putc de la siguiente forma:
#define getchar() getc (stdin)
#define putchar(c) putc ((c), stdout)
6.3.3. Tipos de interfaz
En la sección anterior se detallaron solamente algunas de las llamadas al sistema referentes
al manejo de archivos a nivel programación. La mayoría de lossistemas operativos cuenta con
al menos los siguientes tipos de interfaz:
1. Interfaz de usuario modo consola.
2. Interfaz de usuario modo gráfico.
3. Interfaz para el programador.
6.3.4. Interfaz de usuario modo consola
La interfaz de usuario se asocia comúnmente al manejo de archivos vía consola o vía interfaz
gráfica.
En muchos sistemas basados en UNIX/Linux, es normal hacer solamente una traducción de
las llamadas gráficas a las llamadas de consola. De esta forma, el programador dedicado a los
comandos de consola puede mejorar las capacidades de éstos sin preocuparse por la interfaz
gráfica. Los programadores defront-ends o interfaces gráficas en cambio, se dedican a propor-
cionar una interfaz gráfica agradable sin preocuparse por los detalles internos de las órdenes de
líneas de comandos y solamente interactúan con ellos vía parámetros.
Órdenes de consola o terminal. Se tienen muchas órdenes para interactuar con la computado-
ra a nivel consola. Esta interfaz permite tener un mayor control tanto sobre el sistema operativo
266 6.3. COMPONENTES DE UN SISTEMA DE ARCHIVOS
como sobre el hardware. El problema es que la línea de aprendizaje es larga y la complejidad ma-
yor. En general, para que un usuario haga uso de la consola o terminal de realizar los siguientes
pasos:
1. Entrar al sistema o inicio de sesión.Existen muchos programas que permiten conectarse
con la computadora y que dependen directamente de sistema operativo que se utilice. En
general, si estamos frente a una computadora local, ésta debe de arrancarse. Cuando el
sistema operativo termine de cargar, se presentará una pantalla de bienvenida y a su vez
indicará que introduzcamos un nombre de usuario y una contraseña. Si es administrador
del sistema dio de alta nuestro usuario entonces entraremosal sistema y podemos hacer
uso de el.
Si deseamos entrar a una computadora remota vía terminal, elproceso, no varía mucho,
se arranca la terminal, ésta contactará con el servidor remoto y nuevamente solocitará el
nombre de usuario y contraseña. Si es válida entonces iniciaremos unasesióny podremos
trabajar.
El último caso, es cuando necesitamos conectarnos desde unacomputadora a un servidor.
Es necesario contar con un programa que permita hacer la conexión. Tenemos el más co-
mún llamadotelnet que permite iniciar una sesión bajo una terminal virtual. Elproblema
de esta orden es que envía el nombre de usuario sin incriptar,y es muy sencillo que otros
usuarios puedan ver la contraseña vía unsniffer que se usa para analizar los paquetes de
red y ver su contenido. Existe otro protocolo llamadossh o shell seguropermite enviar
toda la información incriptada al servidor y recibirla de lamisma forma.
Existen otros programas que permiten hacer estas funcionesde diferente forma. Por ejem-
plo, si deseamos solamente enviar archivos y no abrir una sesión de trabajo, se puede
hacer uso de la ordenftp. Otra vez, con este protocolo la información viaja sin incriptar.
Su contraparte incriptada es la ordensftp o protocolo de transferencia de archivos segura.
2. Trabajar en la sesión. Incluye la ejecución de programas, edición de textos, cálculos
matemáticos impresión de documentos, tareas de administración y todas las relacionadas
con el uso de la computadora.
En la actualidad existen demasiadas órdenes que pueden usarse vía consola. A continua-
ción tenemos un listado de las más comunes y la función que realizan.
cd <directorio>. Cambia directorio, sirve para ir a un directorio concreto del sis-
tema. Por ejemplo cd /home hace que vayamos al directorio donde se guardan los
directorios personales de cada usuario del sistema. La orden cd sin parámetros hace
que vayamos a nuestro directorio personal.
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 267
mkdir <nombre directorio>. Crear un directorio vacío, su uso es muy simple, so-
lamente hay que añadir el nombre del nuevo directorio detrásdel comando. Por
ejemplo mkdir prueba.
rm <dir>. Permite borrar el directorio llamado <dir>. Si el directorio no está vacío
no se borra. Si se desea borrarlo con todo y su contenido se usaentoncesrm -R
<dir> .
ls o dir. lista el contenido de un directorio.
df -h. Se usa para ver la cantidad de espacio libre en el disco.
fuser -m <dispositivo>.Muestra todos los usuarios o procesos que están usando
el <dispositivo>. Si se usa la opción -mk permite “matar” losprocesos que están
usándolo de mod que pueda desmontarse.
sudo <comando>.Permite ejecutar una orden con permisos de administrador. Cuan-
do necesitamos algún comando con más privilegios que los quetenemos como usua-
rio usamos entonces la orden sudo.
history. Muestra el historial de órdenes que se han ejecutado últimamente. Podemos
volver a ejecutar una orden del historial escribiendo !<numero de la historia>.
top. Muestra los procesos que se están ejecutando, carga del procesador, memoria
libre y ocupada. Esta información se actualiza constantemente.
ps -aux.La orden ps muestra los procesos activos en nuestra máquina,con la opción
-aux muestra información detallada de cada uno de ellos, como el propietario y el
uso de cpu por parte del proceso.
kill <pid>. Permite eliminar (matar) un proceso del sistema, es necesario conocer el
número del proceso que se desea terminar. Podemos obtener este pid de otras órdenes
como ps por ejemplo.
xkill. Igual que el comando kill pero de forma gráfica, si tienes una ventana que se ha
quedado colgada, ejecuta xkill y selecciona la ventana con el cursor que te aparecerá.
La ventana y el proceso que la creó morirán.
man <orden>. Quizás uno de las más importantes comandos del sistema, muestra
la ayuda detallada de la orden dada en <orden>.
3. Salir de la sesión.Después de trabajar en la computadora es conveniente terminar la
sesión de modo que no pueda hacer uso de ella otra persona. Al hacer esto nos aseguramos
que otros usuarios tengan que entrar con su nombre y contraseña. Se debe evitar en la
268 6.3. COMPONENTES DE UN SISTEMA DE ARCHIVOS
medida de lo posible prestar estos nombres y contraseñas a otros, debido a que pueden
hacer tareas a nuestro nombre que sean dañinas u ofensivas a terceros y por lo tanto,
podemos tener problemas al ser los representantes directosde la cuenta.
6.3.5. Interfaz de usuario modo gráfico
Actualmente la mayoría de los sistemas operativos comerciales hacen uso de una interfaz
gráfica intuitiva de modo que sea relativamente de usar para los usuarios nuevos. Muchas de las
tareas que pueden hacer a nivel consola también se pueden hacer en modo gráfico. El costo del
ambiente gráfico es mucho mayor, tanto en el consumo de energía eléctrica como en ciclos de
CPU, pero dado el aumento de capacidades de los sistemas actuales y la reducción de precios,
es común contar con estas interfaces en nuestras computadoras.
Al igual que con una sesión de consola, es necesario primeramente autenticarse. El siste-
ma operativo solicitará el nombre de usuario y contraseña y si éstas coinciden entonces éste
empezará a cargar nuestra sesión gráfica.
En los sistemas basados en Windows, el medio ambiente gráficoestá integrado al sistema
operativo, lo que permite una respuesta más rápida. En los sistemas basados en UNIX/Linux, es
un programa separado del sistema operativo, lo que permite mayor versatilidad a cambio de un
desempeño un poco menor.
En la figura 6.2 se puede ver cómo el uso de íconos favorece un rápido aprendizaje a nivel
intuitivo acerca de las tareas que puede llevar a cabo una aplicación.
Esta facilidad de uso también tiene un costo: el entorno gráfico en muchas ocasiones no
puede cubrir todas las facilidades que proporciona la consola. Por tanto, para aquellas personas
que pretendan ser administradores de centros de cómputo, esmuy importante que tengan un
dominio completo de la interfaz gráfica y también conocimientos profundos sobre el uso de las
órdenes de consola.
Para los usuarios normales no es estrictamente necesario tener un conocimiento completo
sobre el uso de las órdenes de consola, pero se recomienda queal menos tengan el conocimien-
to básico necesario como para que puedan crear/eliminar directorios y copiar archivos desde la
consola para casos de emergencia en donde el entorno gráfico por alguna situación falló y es ne-
cesario recuperar cierta información. Se recomienda en segundo término, familiarizarse también
con el manejo de particiones, formateo de discos y respaldo de datos.
6.3.5.1. Interfaz para el programador
El sistema operativo proporciona diferentes librerías quepueden ser usadas por los compi-
ladores y éstas a su vez por los programadores, de manera que éstos puedan llevar a cabo sus
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 269
Figura 6.2: Sesión gráfica de KDE
tareas de programación de sistemas o de aplicaciones.
Muchas librerías se usan para la escritura de programas que trabajan a nivel de líneas de
órdenes, interfaces de texto o librerías para que hagan uso de interfaces gráficas. Estas libre-
rías existen a niveles muy bajos de programación. Algunos fabricantes o grupos de personas
se encargan de establecer diferentes niveles de complejidad o subrutinas que agrupan muchas
instrucciones de bajo nivel proporcionadas por el sistema operativo de modo que se facilita la
escritura de programas de aplicación complejos.
Como ejemplo, en todos los sistemas UNIX/Linux tenemos un directorio llamado /usr. En
este directorio tenemos los directorios /include y /lib.
En el directorio /include existen todos los archivos de cabecera que proporciona los nombres
de las funciones correspondientes a las llamadas del sistema y algunas más como rutinas de
manejo de estructuras de datos básicas como pilas, colas, arreglos dinámicos entro otras. Aunque
cada día se agregan nuevas funcionalidades y rutinas de más alto nivel que se incorporan a estas
librerías.
En el directorio /lib tenemos el código objeto correspondiente a las cabeceras definidas en el
directorio /include. Con estos dos directorios es suficiente para programar aplicaciones a nivel
270 6.4. ORGANIZACIÓN LÓGICA Y FÍSICA
consola.
Existen otros directorios que contienen las cabeceras y laslibrerías para el desarrollo de
aplicaciones gráficas que se encuentran también en /includey en /lib. Hay que recordar, sin
embargo, que muchas de éstas deben ser instaladas vía terceras partes y que en sí no forman
parte del sistema operativo.
6.3.6. Lenguaje de comunicación y pipelines o conductos
En la sección 6.3.4 vimos una lista de órdenes pertenecientes al modo consola.
En un sistema basado en Windows a la consola se le conoce comosímbolo del sistema. En
todas las versiones ha sido el mismo y en general ha decaído suuso a tal grado que en vez de
aumentar funcionalidades las nuevas versiones de Windows disminuyen este tipo de órdenes
a las mínimas necesarias. Aunque aún con esas limitaciones algunas aplicaciones de líneas de
órdenes tienen también un muy buen control sobre hardware específico, por ejemplo las órdenes
para el manejo de la tarjeta de red y las conexiones de redes.
En los sistemas UNIX/Linux existen muchos intérpretes de órdenes llamadosshellsque
discutiremos en la siguiente sección.
6.4. Organización lógica y física
6.4.1. Organización lógica
La organización lógica de un sistema de archivos desde un punto de vista de implementación
son las siguientes como está descrita por Stallings [96]: Enla figura 6.3 se pueden observar los
componentes se un sistema de archivos típico.
1. Pilas.Los datos se recogen en el orden en que llegan. Cada registro consta de una ráfaga
de datos. Su finalidad es acumular una masa de datos y guardarla.
2. Archivos secuenciales.En esta estructua se emplea un formato fijo para los registros, son
de la misma longitud y constan del mismo número de campos de tamaño fijo con un orden
determinado. Se necesita almacenar los valores de cada campo; el nombre del campo y
la longitud de cada uno son atributos de la estructura del archivo. Cada registro tiene un
campo clave que lo identifica (generalmente es el primero de cada registro). Los registros
se almacenan en secuencia por la clave. Se utilizan normalmente en aplicaciones de pro-
cesos por lotes, ya que es la única organización de archivos que se puede guardar tanto en
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 271
Figura 6.3: Componentes típicos de un sistema de archivos
cintas como en discos. Para las aplicaciones interactivas que incluyen peticiones o actua-
lizaciones de registros individuales, los archivos secuenciales no son óptimos. El acceso
requiere una búsqueda secuencial de correspondencias con la clave. Si el archivo entero
o gran parte de él pueden traerse a la memoria principal de unasola vez, se podrán apli-
car técnicas de búsquedas más eficientes. Al acceder un registro de un archivo secuencial
grande, se produce un procesamiento extra y un retardo considerable.
3. Archivos secuenciales indexados.Los registros se organizan en una secuencia basada en
un campo clave presentando dos características, un índice del archivo para soportar los
accesos aleatorios y un archivo de desbordamiento. El índice proporciona una capacidad
de búsqueda para llagar rápidamente al registro deseado y elarchivo de desbordamiento
es similar al archivo de registros usado en un archivo secuencial, pero está integrado de
forma que los archivos de desbordamiento se ubiquen siguiendo un puntero desde su regis-
tro predecesor. La estructura más simple tiene como índice un archivo secuencial simple,
cada registro del archivo índice tiene dos campos, un campo clave igual al del archivo
principal y un puntero al archivo principal. Para encontrarun campo especifico se busca
en el índice hasta encontrar el valor mayor de la clave que es iguale o precede al valor
deseado de la clave, la búsqueda continua en el archivo principal a partir de la posición
que indique el puntero. Cada registro del archivo principaltiene un campo adicional que
es un puntero al archivo de desbordamiento. Cuando se inserta un nuevo registro al archi-
vo, también se añade al archivo de desbordamiento. El registro del archivo principal que
272 6.4. ORGANIZACIÓN LÓGICA Y FÍSICA
precede inmediatamente al nuevo registro según la secuencia lógica se actualiza con un
puntero del registro nuevo en el archivo de desbordamiento,si el registro inmediatamente
anterior está también en el archivo de desbordamiento se actualizará el puntero en el regis-
tro. Para procesar secuencialmente un archivo completo losregistros del archivo principal
se procesarán en secuencia hasta encontrar un puntero al archivo de desbordamiento, el
acceso continua en el archivo de desbordamiento hasta que encuentra un puntero nulo,
entonces renueva el acceso donde se abandonó en el archivo principal.
4. Archivos indexados.A los registros se accede solo a través de sus índices. No hay res-
ticción en la ubicación de los registros, al menos un índice contiene un puntero a cada
registro y pueden emplearse registros de longitud variable. Se suelen utilizar dos tipos de
índices, uno exhaustivo que contiene una entrada para cada registro del archivo principal
y se organiza como un archivo secuencial para facilitar la búsqueda, el otro índice es par-
cial que contiene entrada a los registros donde esté el campode interés. Con registro de
longitud variable, algunos registros no contendrán todos los campos y cuando se añade un
registro al archivo principal, todos los archivos de índices deben actualizarse.
5. Archivos directos o de dispersión.Explotan la capacidad de los discos para acceder
directamente a cualquier bloque de dirección conocida. Se requiere un campo clave en
cada registro. Los archivos directos son muy usados donde senecesita un acceso muy
rápido, donde se usan registros de longitud fija y donde siempre se accede a los registros
de una vez.
Desde el punto de vista del usuario la organización lógica dela mayoría de los sistemas
de archivos actual es a través de jerarquías y se les denominan carpetas, directorios o catálogos.
Cada directorio puede contener a su vez, más carpetas o archivos. Estas carpetas pueden contener
todavía más archivos y carpetas, y así sucesivamente. La cantidad de carpetas y archivos que
puede contener el sistema está limitado a la capacidad del medio de almacenamiento y a la
capacidad de direccionamiento del sistema operativo La estructura jerárquica permite mantener
organizados lógicamente los archivos y las carpetas.
6.4.2. Organización física
Los sistemas de archivos se guardan comúnmente en discos, aunque también ahora es posible
en una memoria flash portátil. En la sección 5.4.2 hicimos un resumen acerca de la organización
lógica de un disco y de cómo prepararlo para poder almacenar un sistema de archivos en él.
Ahora pasaremos a las técnicas que existen para lograr este objetivo. Recordando un poco, un
disco se puede dividir en los siguientes bloques básicos:
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 273
Figura 6.4: Vista de usuario del sistema de archivos
El registro Maestro de Arranque (MBR). Master Boot Recordsirve para arrancar la compu-
tadora.
Tabla de particiones. Viene al final del MBR y contiene la dirección inicial y final decada
partición. Una de las particiones de la tabla está marcada como activa.
Varias particiones primarias y lógicas. Pueden contener diferentes sistemas operativos o da-
tos.
Cuando el usuario enciende la computadora, después de realizar la verificación del hardware
buscará los dispositivos de arranque de acuerdo a la prioridad establecida en el BIOS. Una vez
que ha detectado que existe una unidad de arranque válida, leerá el MBR de esta unidad y lo
ejecutará. El programa alamacenado en el MBR, localiza la partición activa y lee entonces el pri-
mer bloque llamadobloque de arranquepara enseguida, ejecutarlo. El programa del bloque de
arranque carga el sistema operativo contenido en esa partición. Por cuestiones de uniformidad,
cada partición comienza con un bloque de arranque aunque no tenga un sistema operativo.
bloque de arranque Superbloque Admon. de espacio libre Nodos-i Dir. raíz Archivos y directorios
Figura 6.5: Organización del sistema de archivos en UNIX/Linux
Estas son las convenciones que la mayoría de sistemas operativos siguen. Después de ello, la
organización del sistema de archivos difiere. Por ejemplo, en los sistemas UNIX/Linux, existen
los elementos mostrados en la figura 6.5. Observe la presencia del superbloque. Aquí se guarda
274 6.5. MECANISMOS DE ACCESO A LOS ARCHIVOS
información referente al tipo de archivos que existe en la partición, el número de bloques que
hay en el sistema de archivos y otros datos. Como esta información es muy importante varios
sistemas mantienen una copia de seguridad en diferentes bloques de la partición.
También hay un área reservada para administrar el espacio libre, el conjunto de nodos-i
almacenados en una estructura que permite conocer todo lo relativo al archivo. Existe una de
ellas por cada archivo, el directorio raíz que viene a ser la estructura más alta dentro de esa
partición y después los archivos y directorios que puede contener la partición.
6.5. Mecanismos de acceso a los archivos
Actualmente la mayoría de los sistemas operativos proporcionan una visión jerárquica de
directorios que contienen archivos y se sugiere que el usuario haga también un análisis ade-
cuado acerca de cómo almacenar sus archivos en carpetas de modo que éstos se encuentren
relacionados por medio de una o más características.
El sistema operativo mapeará los archivos lógicos vistos por el usuario a archivos físicos
almacenados en un disco duro, un CD-ROM o una memoria USB, haciendo transparente al
usuario el almacenamiento de sus archivos en cualquiera de estos y otros dispositivos, incluso,
en la mayoría de los sistemas actuales se permite el acceso remoto a directorios o archivos como
si estuvieran guardando información localmente. Desde el momento en que el usuario se conecta
con un servidor, éste le proporciona una interfaz idéntica acomo si estuviera trabajando local-
mente en el equipo remoto. Así, el usuario o las aplicacionesno se enteran, ni tienen por qué, de
cómo es que el sistema operativo hace las operaciones de entrada salida correspondientes, esto
es, si son realizadas en los dispositivos de entrada salida locales o en los remotos.
6.5.1. Métodos de Acceso
Los métodos de acceso dependen mucho del dispositivo de almacenamiento que se esté
usando. En general se cuentan con dos tipos de tecnologías dealmacenamiento:
Cintas Magnéticas. Éstas sólo permiten al acceso secuencial de los datos, pudiendo rebobi-
narse las veces que sea necesario para poder releer otro dato. La ventaja que tienen estos
dispositivos es su gran capacidad de almacenamiento en comparación con los discos y
su relación muy atractiva de costo/byte. Aunque esto está cambiando muy rápidamente a
favor de los discos.
Discos. Permiten el acceso directo a los discos con cierto tiempo de latencia en la recuperación
de la información, pero mucho más rápidos que el acceso a una cinta. También se incluyen
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 275
en esta categoría a las unidades de CD/DVD y a las memorias USBo pendrive.
Del funcionamiento de estos dispositivos se desprenden también los dos enfoques de acceso
a los archivos. El acceso secuencial y el acceso directo que analizaremos en las dos secciones
siguientes.
6.5.2. Acceso secuencial
Como se comentó, una cinta solamente puede entregar registros uno después de otro, sin po-
der regresar rápidamente a los registros leídos anteriormente, por ende el acceso secuencial solo
permite procesar registro por registro. El sistema operativo mantiene un apuntador de archivo
hacia el siguiente registro a leer. Si se hace una operación de escritura sucede algo similar: el
sistema operativo realiza la operación de escritura y mueveel apuntador de archivo hacia el si-
guiente registro. Si se encuentra al final del archivo, entonces apunta hacia el nuevo espacio que
puede ser ocupado por otro registro. En la figura 6.6 vemos cual es a estructura de un archivo en
cinta.
Figura 6.6: Archivo de acceso secuencial
6.5.3. Acceso directo o aleatorio.
El archivo se compone de registros de tamaño fijo lo que permite a las aplicaciones leer o
escribir información de ese mismo tamaño en cualquier lugarconcreto del archivo. Este método
276 6.5. MECANISMOS DE ACCESO A LOS ARCHIVOS
aprovecha las ventajas de los discos que pueden escribir rápidamente información en un cilindro
dado, permitiendo así el acceso inmediato a cualquier bloque del archivo tanto para lectura como
para escritura.
En general un archivo se considera compuesto de varios bloques de tamaño fijo, por lo tanto,
las aplicaciones o el sistema operativo pueden acceder a cualquier registro en casi el mismo
tiempo, en comparación con los dispositivos de acceso secuencial. También es posible simular
en un dispostivo de acceso aleatorio el acceso secuencial, puesto que también es posible acceder
a los registros en el orden dado.
En la mayoría de los sistemas actuales están orientados a caracteres o bytes y a bloques. Por
lo tanto, el usuario debe de proporcionar el byte o el bloque al que desea acceder. Un disco o un
CD-ROM es común que guarde muchos archivos. El usuario entonces debe de proporcionar el
nombre al que desea acceder y el byte o número de bloque, refiriéndose a partir del byte cero
o al bloque cero del archivo en mención. El sistema operativotraducirá entonces el nombre del
archivo y el número de bloque a una dirección de número de pista y número de sector o de
cilindro para determinar su ubicación exacta dentro del disco. Al número de byte o bloque y
nombre del archivo se le denominanúmero de bloque relativo.
Un número de bloque relativo es un índice referido al comienzo del archivo. Entonces el
primer bloque relativo del archivo será 0, el siguiente 1 y así sucesivamente. El nombre del
archivo se busca en las entradas de directorio, en donde se encuentra almacenado el comienzo
verdadero en disco de ese archivo. Después de haber encontrado el comienzo real en el disco, el
sistema operativo añade el número de bloque solicitado por el usuario para formar su dirección
correcta. Algunos sistemas utilizan el cero como número de bloque inicial dentro del archivo,
mientras que otros utilizan el 1 como inicio del archivo.
Ahora supóngase que un usuario desea acceder al registroN de un archivo. Suponga también
que los registros tienen una longitud lógica deL. El sistema operativo traducirá esta petición en
una solicitud de entrada salida sonde se piden entoncesL bytes a partir de la ubicaciónL ∗ (N)
dentro del archivo. Como los registros lógicos son del mismotamaño, resulta sencillo realizar
operaciones de lectura escritura o borrar registros en cualquier parte del archivo.
El sistema operativo verifica también que el resultado anterior no exceda el tamaño espe-
cificado en la entrada de directorio. Si se excede, entonces generará un error de fin de archivo
alcanzadoEnd Of File (EOF). De esta forma se asegura que un usuario no acceda a otros
archivos para los cuales no tenga autorización.
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 277
6.5.4. Acceso a archivos por índice
Los manejadores de bases de datos utilizan algunos archivosespeciales llamados archivos de
índice los cuales relacionan un dato con una posición específica dentro del archivo, permitiendo
así un acceso extremadamente rápido cuando un usuario realiza búsquedas de datos. De esta
forma el manejador de bases de datos solamente realizará la búsqueda en el archivo índice el
cual es mucho más pequeño que la base de datos original, después que ha encontrado el dato
solicitado, leerá la posición del registro en disco y procederá a leerlo completo de disco para
ponerlo a disposición del usuario.
Figura 6.7: Ejemplo de archivo índice y archivo relativo
Como puede verse en la figura 6.7, el archivo índice tiene almacenados los apellidos de
algunas personas y en otro campo guarda la dirección del registro en donde se localiza toda la
información concerniente a esa persona. Con este método no es forzoso que el archivo relativo
se encuentre ordenado, puesto que es más fácil ordenar el archivo índice.
Un archivo relativo puede tener varios archivos índice asociados, lo que permite una gran
versatilidad al momento de hacer búsquedas. Es común en bases de datos utilizarcampos llave
para generar los archivos de índice. Es lógico que para poderusar un archivo de índice es ne-
cesario primero establecer el campo llave que va a utilizarse y entonces generarlo. Este proceso
de generación de archivos índice puede tardar mucho tiempo de acuerdo al tamaño del archi-
vo relativo. Una vez generado, los accesos serán mucho más rápidos por medio del archivo de
índice. Otro problema que debe tenerse en cuenta es que a medida que se agregue información
al archivo relativo, ésta no se refleja en el archivo índice, por lo que es necesario generarlo de
nuevo o implementar mecanismos que permitan la actualización simultánea de ambos archivos.
278 6.6. MANEJO DE ESPACIO EN MEMORIA SECUNDARIA
6.6. Manejo de espacio en memoria secundaria
Después de que hemos visto la perspectiva del usuario, es momento de pasar a la perspectiva
del implementador. A los usuarios les interesa qué nombres tienen los archivos y qué operacio-
nes pueden realizar sobre ellos, les interesa también sabersi la estructura de directorios es de
tipo árbol y otros aspectos de interfaz. A los implementadores les interesa más qué técnicas y
estructuras de datos deben de usar para implementar lo más eficientemente posible el almacena-
miento de archivos en disco y la implementación de directorios, cómo administrar el espacio de
disco y como hacer que todo funcione de la forma más eficiente yconfiable posible.
6.6.1. Implementación de archivos
La tarea más importante que debe de controlar el sistema de archivos es conocer qué bloques
pertenecen a cada uno y proporcionar los mecanismos de lectura y escritura de los mismos. Para
proporcionar estas funcionalidades existen diferentes técnicas. A continuación daremos las más
comunes.
Asignación contigua. Es el esquema más sencillo. Se define el tamaño de bloque, que puede
ser ya sea por sector, o cluster que es lo más común. Ya definidoel tamaño de bloque, se divide el
tamaño total del archivo entre el tamaño de bloque y se asignaesa cantidad de bloques contiguos
para almacenar el archivo en disco. El sistema operativo registra los bloques asignados como
marcados e indica en la estructura de datos a qué archivo le pertenecen.
La asignación de espacio contiguo en disco tiene dos ventajas importantes:
1. Su implementación es sencilla por que para llevar el control solamente necesita registrar
dos datos: la dirección en disco del primer bloque y el númerode bloques con que cuenta el
archivo. Así es posible localizar cualquier bloque del archivo mediante una simple suma.
2. El desempeño de lectura es excelente porque puede leerse todo el archivo del disco en una
sola operación. Sólo se necesita posicionar el brazo en el primer bloque y los datos podrá
transferirse al máximo ancho de banda. (Lógicamente si el archivo es más grande que un
cilindro entonces necesitará reposicionarse el brazo en elsiguiente al siguiente).
El problema principal de esta técnica es que con el tiempo tiende a fragmentarse. La frag-
mentación significa que, a medida que se van añadiendo y eliminando archivos, puede llegarse
el caso en el que el número de bloques contiguos disponibles no sea suficiente para almacenar
archivos mayores que un bloque.
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 279
Vamos a poner un ejemplo de cómo es que se fragmenta un disco. Supóngase que el arreglo
de la figura 6.8 es el disco. Se define un tamaño de bloque de 10Kby que se necesitan hacer las
siguientes operaciones:
1. Escribir el archivoa de 20Kb.
2. Escribir el archivob de 15Kb.
3. Escribir el archivoc de 10Kb.
4. Borrar el archivob de 15Kb.
5. Escribir el archivod de 30 Kb.
6. Borrar el archivoc de 10Kb
7. Escribir el archivoede 40Kb.
a a b b c
⇓
a a c d d d
⇓
a a d d d e e e e
Figura 6.8: Fragmentación del disco con el almacenamiento secuencial
De acuerdo a las operaciones realizadas, cuando el disco está limpio se escribe sin ningún
problema los archivosa, b y el archivoc. Todos van en secuencia. Cuando se borra el archivob
queda un hueco de dos bloques. La siguiente petición, exige tres bloques libres para el archivod,
de modo que tiene que colocarse al final de los archivos en el espacio libre del disco. Enseguida
viene una petición de eliminación del archivoc de 10Kb. Como está junto con el archivo que se
borró elb tenemos ahora tres bloques libres. La última petición es la escritura del archivoe, pero
éste solicita cuatro bloques de modo que debe de escribirse de nuevo al final de los archivos en
el espacio libre.
Aunque en el ejemplo se observó que cuando se eliminan archivos que están juntos se crean
bloques más grandes, si las nuevas peticiones requieren aúnmás espacio, éstas deben de hacerse
al final de los archivos.
280 6.6. MANEJO DE ESPACIO EN MEMORIA SECUNDARIA
A medida que trascurre el tiempo, se irán acumulando los huecos pequeños, evitando así
escribir archivos grandes aún cuando la suma de todos los huecos sea mayor al tamaño del
archivo que se desea escribir.
Por el problema de fragmentación es que esta técnica ya no se utiliza para la implementación
de sistemas de archivos aunque para el acceso a ellos es muy rápida, por que siempre podemos
acceder a ellos en una sola operación de lectura.
Asignación por lista ligada. Este método consiste en guardar el archivo como una lista ligada
de bloques de modo que cada palabra contenida al principio del bloque indique la posición del
siguiente. El resto del bloque es para datos.
Con este esquema, las entradas de directorio almacena solamente la dirección del primer blo-
que del archivo, siendo entonces más pequeñas. Otra ventajacon respecto a la técnica anterior
es que aquí se utilizan todos los bloques, por tanto no existefragmentación del del disco o frag-
mentación externa. Solamente existe fragmentación interna en el último bloque. La desventaja
es que el acceso a cada bloque implica la lectura del anterior, lo que hace a esta técnica dema-
siado lenta en operaciones de lectura/escritura debido al acceso aleatorio y al reposicionado de
las cabezas de lectura/escritura en busca de cada bloque delarchivo.
2
Bloque 0
8
−→ 13
Bloque 1
2
−→ 15
Bloque 2
13
−→ EOF
Bloque 3
15
Figura 6.9: Uso de listas ligadas de bloques de disco
Como puede verse, otro problema es que el acceso ya no puede hacerse directo. Esto es,
para que el sistema operativo pueda, por ejemplo, alcanzar el último bloque de un archivo es
necesario leern−1 bloques, para poder acceder al número de bloque final, por lo que se pierden
todas las ventajas que puede proporcionar el disco con acceso aleatorio. Otro problema con
este enfoque es que la cantidad de bytes almacenados en un bloque ya no es potencia de 2. La
mayoría de los programadores está acostumbrado a utilizar potencias de dos como tamaño de
bloque, de modo que el sistema operativo necesita concatenar dos bloques para dar la cantidad
de bytes solicitada, lo que disminuye el rendimiento del sistema debido a las operaciones de
copiado.
Estas desventajas pueden eliminarse sacando el apuntador de cada bloque de disco y colo-
cándolo en una tabla en memoria. En la figura 6.10 podemos ver cómo quedaría esta tabla para
el ejemplo de la figura 6.9.
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 281
Bloque Físico
0
1
2 13
3 8
4
5
6
7
8 2
9
10
11
12
13 15
14
15 EOF
←− Aquí empieza el archivo
Figura 6.10: Tabla de Asignación de Archivos
Con este enfoque los programadores pueden hacer uso de los bloques completos. El sistema
operativo tiene la opción de cargar la tabla de asignación dearchivos o FAT (File Allocation
Table) a memoria una sola vez, de modo que el acceso a ésta es muy rápido.
No obstante el problema de fragmentación sigue existiendo aunque a otro nivel. Cuando
el sistema operativo crea por primera vez un archivo, le asigna todos los bloques que necesita
y éstos será muy probable que estén juntos. A medida que se añaden y se eliminan archivos
pequeños y grandes, el sistema operativo empezará a asignarbloques, en donde quiera que
éstos se encuentren. Esto hace que con el tiempo sea más difícil acceder a cada bloque del
archivo, debido a que se tendrá que hacer nuevamente muchos reposicionamientos de las cabezas
lectoras/escritoras. Aunque el sistema puede acceder a todos los bloques, el tiempo de acceso a
los mismos se incrementará en la medida en que éstos se encuentren dispersos por todo el disco.
Los sistemas operativos de microsoft han venido arrastrando el problema de fragmentación
desde el sistema de discos MS-DOS. Aunque era difícil notarlo por la pequeña capacidad de
los discos. A medida que éstos fueron creciendo en capacidad, el problema se hizo mucho más
notorio.
El problema se agrava cuando el sistema operativo tiene que implementar el servicio de
memoria virtual, si éste no define una partición especial en disco. Para poner un ejemplo, los
sistemas operativos de Microsoft siguieron este enfoque. Los diseñadores, no creyeron necesario
tener una partición especial para intercambio a modo de no reducir el espacio útil en disco
duro del usuario. De esta forma, el sistema operativo sigue indicando al usuario que cuenta con
todo su espacio en disco duro, pero el sistema mantiene oculto un archivo de intercambio que
aumenta y disminuye de acuerdo al uso del sistema. Esto ocasiona que muchos bloques queden
reservados por el sistema de intercambio así, los archivos de usuario tienden a fragmentarse
más rápido de lo normal, siendo entonces obligatorio corrercada cierto tiempo una aplicación
282 6.6. MANEJO DE ESPACIO EN MEMORIA SECUNDARIA
para defragmentar el disco duro que viene incluida en el propio sistema operativo o mediante
aplicaciones de terceros.
Otra desventaja de este método es que, para ganar la mayor velocidad posible, toda la tabla
debe de estar en memoria. Para discos pequeños, esto no es problema, pero para un disco de 80
GB con un bloques de 1 KB, la tabla necesitaría 80 millones de entradas. Si cada entrada necesita
tener un mínimo de cuatro bytes, entonces la tabla tendría 320 MB, lo que sería demasiado,
incluso para las computadoras actuales de 1 GB de memoria RAM.
Nodos-i. En este método se asocia a cada archivo una estructura de datos llamadanodos-io
nodos-índiceque contiene los atributos y direcciones en disco de los bloques de archivo. Dado
el nodo-i, es posible encontrar todos los bloques del archivo. La gran ventaja de este esquema
respecto a los métodos anteriores es que el nodo-i sólo tieneque estar en la memoria cuando
el archivo correspondiente está abierto. Si cada nodo-i ocupan bytes y no puede haber más de
k archivos abiertos al mismo tiempo, la memoria total ocupadapor el arreglo que contiene los
nodos-i de los archivos abiertos es de sólokn bytes.
Este arreglo, es mucho más pequeño que el que se utilizaría para mantener la tabla de asigna-
ción de archivos. La razón es simple. La tabla debe tener forzosamente un tamaño proporcional
al tamaño del disco. Si el disco tienen bloques, la tabla necesitan entradas. A medida que
aumenta el tamaño de los discos aumentará también la tabla enla misma proporción. En con-
traste„ el esquema de nodos-i requiere un arreglo en la memoria cuyo tamaño es proporcional al
número máximo de archivos que pueden estar abiertos a la vez.No tiene que ver el tamaño del
disco.
La estructura de un nodo-i la podemos ver en la figura 6.11. Como puede verse, en la es-
tructura se designa la primera parte del bloque para mantener los atributos del archivo, luego
se designan las primeras diez entradas para almacenar direcciones directas simples. Esto es,
almacenan direcciones de bloques de datos directamente.
La dirección de bloque de apuntadores se usa para extender lacapacidad de los apuntadores
directos simples. Estas entradas pueden ser:
Indirecto simple. Es aquella que reserva un bloque de disco para guardar direcciones de tipo
directo simple.
Indirecto doble. Señala un bloque que contiene direcciones de bloques de tipoindirecto simple.
Indirecto triple. Señala un bloque que contiene direcciones de tipo indirectodoble.
Este mecanismo puede extenderse hasta donde sea necesario de modo que puedan guardarse
archivos de tamaño arbitrario. Para hacerlo, simplemente hay que agregar a la tabla de la figura
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 283
Atributos del archivo
Dirección del bloque 0 −→
Dirección del bloque 1 −→
Dirección del bloque 2 −→
Dirección del bloque 3 −→
Dirección del bloque 4 −→
Dirección del bloque 5 −→
Dirección del bloque 6 −→
Dirección del bloque 7 −→
Dirección del bloque 8 −→
Dirección del bloque 9 −→
Dirección de bloque de apuntadores−→ Bloque con más direcciones
Figura 6.11: Estructura de un nodo-i
6.11 más entradas al final especificando el tipo de direccionamiento que manejará, pudiendo ser
incluso, indirecto cuádruple, quíntuple, ... hasta donde sea necesario.
Implementación de directorios. Hasta ahora hemos visto la forma en la que es posible ma-
nejar los archivos en disco. A partir de este momento pasaremos a ver cómo se implementan los
directorios.
Un archivo, debe tener un nombre y atributos que permitan indicar las operaciones que pue-
den llevarse a cabo sobre éste y los usuarios que están autorizados a efectuarlas. Para que un
archivo pueda ser utilizado, es necesario primeramente abrir el archivo. Para ello el usuario debe
proporcionar un nombre, ya sea por medio de una ruta absolutao una relativa. Con esta infor-
mación, el sistema operativo localizará la entrada de directorio correspondiente y comenzará a
efectuar las operaciones solicitadas.
De acuerdo a la técnica de manejo de archivos utilizada la información obtenida de la entrada
de directorio puede variar. Por ejemplo, puede proporcionar el bloque inicial y final si es que se
usa asignación contigua o el primer bloque si el esquema es detipo FAT o nodo-i. En todos los
casos la principal función del sistema de directorios es estableces una correspondencia entre el
nombre de archivo ASCII y la información necesaria para localizar los datos.
Un aspecto muy importante es la manera en la que se relacionanlos atributos con los archivos
y las entradas de directorio, su dueño, la fecha y hora de creación. Muchos sistemas lo hacen en
las entradas de directorios.
La primera opción es usar una estructura de datos con entradas de tamaño fijo, una por cada
284 6.6. MANEJO DE ESPACIO EN MEMORIA SECUNDARIA
archivo, que contiene un nombre de archivo de longitud fija, una estructura con los atributos del
archivo y una o más direcciones de bloques que indica en qué posición en disco se encuentra el
archivo.
En la figura 6.12 vemos cómo pueden distribuirse estos datos en la estructura de datos de
entradas de tamaño fijo.
nombres.txt atributos Bloque inicial
cuentas.dat atributos Bloque inicial
muebles atributos bloque inicial
Figura 6.12: Implementación de directorio con entradas de archivo fijas
El manejo de la estructura presentada en la figura 6.12 es muy fácil de implementar pero tiene
muchos inconvenientes. El primero de ellos es que por ser losnombres demasiado cortos llegan
a ser poco descriptivos, lo que dificulta la búsqueda de éstospor el usuario. Otro problema es el
manejo de subdirectorios que deben de implementarse de otraforma para mantener la estructura
coherente.
En los sistemas que usan nodos-i, se utiliza la misma lista, pero la diferencia es que ahora
usan uno o más nodos-i para guardar la información referentea los atributos en lugar de hacerlo
en las entradas de directorio. De esta forma, la entrada de directorio puede ser más corta: se
incluye solamente el m¿nombre de archivo y un número de nodo-i. En la figura 6.13 vemos
cómo se organiza esta estructura.
nombres.txt
cuentas.dat
muebles
−→
−→
−→
տ
Estructura de
datos con
atributos.
Figura 6.13: Implementación de directorios con nodos-i
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 285
Este enfoque permite organizar lógicamente directorios, subdirectorios y archivos en una
misma estructura diferenciando a un directorio de un archivo con un bit en especial, de manera
que ahora un nodo-i puede contener ya sea datos de un archivo oun nuevo directorio con una
estructura similar.
En la actualidad la mayoría de los sistemas operativos manejan nombres largos, con un
máximo de 255 caracteres para el nombre de un archivo. Para implementar esta facilidad, se
pueden utilizar también entradas de directorio fijas, pero esto implicaría un gran desperdicio de
almacenamiento puesto que no todos los archivos tendrían esa cantidad de caracteres.
Otra opción es utilizar un enfoque en el cual cada entrada de directorio tenga una parte
fija correspondiente a los atributos, fecha de creación y propietario. Otra parte variable que
corresponde al nombre del archivo que puede tener cualquierlongitud de caracteres. El nombre
de archivo termina con el caracternulo o NULL que está indicado por el valor 0 en la tabla de
caracteres ASCII. El problema con este enfoque es que cuandose borra una entrada de directorio
quedará entonces un hueco en donde posiblemente no haya espacio para la siguiente entrada de
directorio, pero existe la posibilidad de compactarlo, porestar la estructura de directorios en
memoria.
El último esquema de manejo de las entradas de directorio, esmediante el uso delheap.
Cada entrada de directorio cuenta entonces con un apuntadorque indica el principio del nombre
del archivo en un lugar denominadomontón o heap. El heap es un lugar en memoria en donde
se encuentran almacenados todos los nombres del archivo separados solamente por un caracter
especial. Comúnmente el caracternulo o NULL que está indicado por el valor 0. De esta forma,
cuando se elimina un archivo, en la lista de directorios queda un hueco de tamaño variable en
donde tal vez no quepa la entrada del siguiente archivo, peroahora sí es factible compactar
puesto que la lista de directorios se encuentra en memoria o en su defecto puede hacerse cuando
se apaga, se inicia el sistema o en momentos en donde la carga del sistema sea muy baja, por
ejemplo, en la noche.
Observe en el ejemplo de la figura 6.15 que el apuntador al nombre del archivo1 contiene el
valor 0 lo que indica que el nombre empieza en la posición cero delmontón. Observe también
que el el apuntador al nombre del archivo 2 contiene el valor de 30, lo que indica que ese
nombre empezará a partir de la posición treinta delmontón. Recuerde también que los nombres
de archivo terminan con un caracter especial, en este caso sigue siendo el caracter cero, nulo o
NULL. representado por el símbolo de⊠.
En todos los esquemas de manejo de directorios vistos hasta ahora, la búsqueda de nombres
se hace recorriendo toda la lista linealmente hasta encontrarlos. Un método más eficiente podría
ser el uso de tablashashpara acelerar la búsqueda. En una tabla hash se asigna un valor llamado
claveo llave que se calcula a partir del nombre del archivo. El cálculo puede realizarse convir-
286 6.6. MANEJO DE ESPACIO EN MEMORIA SECUNDARIA
Entrada
para un
archivo
Longitud de entrada
del archivo1
Atributos del archivo1
c o n t a b
i l i d a d
- - f i n a
n c i e r a
- r e a l ⊠
Longitud de entrada
del archivo2
Atributos del archivo2
v e n t a s
- d e l - m
e s ⊠
Longitud de entrada
del archivo3
Atributos del archivo3
v e n t a ⊠
.
.
.
Figura 6.14: Estructura de directorios incorporados
tiendo los caracteres a sus valores ASCII y, por ejemplo, sumarlos y luego hacer una división
entre un número impar. La tabla consistirá entonces enn-1 entradas donde cada una contendrá
un nombre. Bajo este esquema es necesario manejar lascolisiones. Una colisión sucede cuando
al calcular el valor llave de algún nombre éste ya ha sido ocupado por otro, por lo tanto, esa
posición no puede ser asignada al nuevo nombre. Una forma de solucionar este problema es me-
diante el uso de listas simplemente ligadas, de modo que si esa posición de la tabla está ocupada,
entonces se crea un nuevo nodo de lista y éste se liga a la posición ya ocupada. Esto permite que
siempre haya lugar en la lista no importando cuántas veces haya sido ocupada esa llave. Este
esquema combina la fortaleza de la búsqueda por llaves y una ligera búsqueda lineal dentro de
la lista simplemente ligada.
El problema de este enfoque es que si está mal diseñado el cálculo de las llaves entonces la
tabla hash puede degenerar en una sola o muy pocas listas simplemente ligadas perdiéndose las
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 287
Entrada
para un
archivo
00
06
12
18
24
30
36
42
48
Apuntador al
nombre de archivo1 (00)
Atributos del archivo1
Apuntador al
nombre de archivo2 (30)
Atributos del archivo2
c o n t a b
i l i d a d
- - f i n a
n c i e r a
- r e a l ⊠
v e n t a s
- d e l - m
e s ⊠ v e n
t a ⊠
.
.
.
Figura 6.15: Uso de heap de entradas de directorio
ventajas de la tabla hash.
6.6.2. Servidor de archivos
Dentro de los servicios que proporciona un sistema operativo está el de proporcionar al
usuario los medios adecuados para poder hacer uso de sus archivos. Hasta ahora hemos tratado
solamente la forma de implementar el sistema de archivos analizando los enfoques más comu-
nes. En esta sección nos dedicaremos a otro aspecto muy importante sobre las distintas formas
de presentar al usuario los archivos con los que puede trabajar.
También ahora es común que no sólo los usuarios tengan accesoa un servidor de archivos,
si no que lo hagan directamente algunos programas de computadora como los navegadores que
necesitan acceder a información concerniente a la dirección en la que se encuentra almacenada
alguna página de internet.
Ahora pasaremos a una rápida explicación de un servidor de archivos.
288 6.6. MANEJO DE ESPACIO EN MEMORIA SECUNDARIA
Sobre las implementaciones de los sistemas de archivos a nivel de usuario, el sistema ope-
rativo debe de ser capaz de proporcionar diferentes formas de acceder a los archivos que han
sido guardados en el disco duro. Desde los comienzo de la computación ha sido necesario per-
mitir a un usuario acceder a sus archivos de forma remota vía terminal o por medio de otras
computadoras.
Un servidor de archivos entonces será aquella computadora que sea capaz de proporcionar
acceso a los archivos guardados en algún medio de almacenamiento masivo como un disco duro,
una cinta, un DVD o algún otro a uno o varios usuarios. Entonces en general podemos decir que
cualquier computadora es un servidor de archivos. Cuando las redes de computadoras personales
hicieron su aparición se modificó un poco esta definición. Se excluyen aquellas computadoras
que solamente dan servicio a un solo usuario y se reemplaza por aquellas que pueden propor-
cionar el servicio de archivos a más de un usuario a la vez. Aunque una computadora personal
puede proporcionar archivos a muchos usuarios, debe hacerlo de forma secuencial, éstos so-
lamente pueden usarla un usuario a la vez. Una computadora que es capaz de proporcionar el
servicio de archivos a más de un usuario al mismo tiempo se le denominaservidor de archivos
Actualmente se ha afinado aún más la clasificación de servidores de acuerdo al tipo de servicios
que manejan y podemos encontrar las siguientes:
1. Servidor de archivos.Proporciona servicios de archivos a usuarios de la red.
2. Servidor de Aplicaciones.Proporciona ejecución de aplicaciones locales o remotas a
usuarios de la red.
3. Servidor de bases de datos.Proporciona servicio de bases de datos.
4. Servidor de nombres de dominio.Llamado también DNS (Domain Names Server) Es
aquel que proporciona la traducción de un nombre de dominio,por ejemplo:
www.itapizaco.edu.mx
por su correspondiente dirección IP. Para el caso anterior correspondería a: 148.208.224.1.
5. Servidor de correo.Proporciona servicio de correo electrónico a sus usuarios ya sea local
o de red internet.
6. Servidor FTP. (File Transfer Protocol) Servidor de archivos en red.
7. Servidor de impresión.Proporciona servicios de impresión vía red local o remota.
8. Servidor de juegos.Permite que varios usuario se conecten vía red y compartan los mis-
mos escenarios de un juego, es posible hacer alianzas, comerciar, pagar tributos o inter-
cambiar recursos.
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 289
9. Servidor de noticias.Proporciona automáticamente las noticias actualizadas a sus usuario
suscritos.
10. Servidor proxy. Permite compartir la red internet a varios usuarios con una sola salida
a internet. Restringiendo o privilegiando a distintos usuarios de acuerdo a las pautas del
administrador.
11. Servidor telnet. Servicio de conexión de terminal en el servidor para la ejecución de
aplicaciones, tiene el problema de que envía las contraseñas sin cifrar de modo que pueden
ser “vistas” por terceros.
12. Servidor WEB. El servidor de páginas WEB proporciona los archivos en formato html
para que sean interpretados por el navegador WEB del usuario.
A continuación detallaremos un poco más aquellos que consideramos más importantes.
6.6.2.1. Servidor de archivos
Es aquella computadora que permite la conexión de varios usuarios permitiéndoles las ope-
raciones comunes de archivos. Es posible también que aplicaciones remotas hagan uso de los
archivos locales con los que cuenta el servidor. La mayoría de las veces no permite la ejecución
de aplicaciones en el servidor.
Una definición sencilla puede ser: un servidor de archivos esuna computadora que almacena
diferentes tipos de archivos y los pone a disposición de varios clientes de la red simultáneamente.
Básicamente cualquier servidor puede funcionar como servidor de archivos.
Algunos protocolos que suelen utilizarse en servidores de archivos son:
1. NETBEUI. Protocolo usado por MS-DOS y Windows para compartir archivos vía red.
2. NetWare IPX/PSX. Protocolo usado por Novell para compartir archivos en la red.
3. SMB/CIFS. Protocolo de sistemas de archivos de red para Windows.
4. Samba.Usado por Unix/Linux para compartir información con Windows.
5. NFS.network File System.
6. TCP/IP. (Transfer Control Protocol/Internet Protocol). Es el protocolo de la red por exce-
lencia y va ganando terreno frente a los otros convirtiéndose poco a poco en el estandard
de redes de computadoras. Bajo este protocolo pueden encapsularse varios de los mencio-
nados en los puntos anteriores, haciéndoles fácilmente compatibles. Esto se hace mediante
290 6.6. MANEJO DE ESPACIO EN MEMORIA SECUNDARIA
una técnica conocida comotúnelque permite empaquetar esos protocolos en datagramas
de tipo TCP/IP.
Existen varios protocolos más de comunicación que pueden encontrarse en la literatura de
redes de computadoras.
6.6.2.2. Servidor de aplicaciones
Es una especialización de los servidores de archivos. La diferencia radica en que el sistema
operativo proporciona archivos ejecutables para que el usuario pueda hacer sus tareas. La ejecu-
ción puede ser ya sea local o remota. La mayoría de las veces elservicio se complementa con el
servidor de archivos de modo que el usuario puede ejecutar laaplicación en el servidor mismo
haciendo uso de los archivos que están también en éste. (Application server). Tipo de servidor
que permite el procesamiento de datos de una aplicación de cliente.
Las principales ventajas de la tecnología de los servidoresde aplicaciones es la centralización
y la disminución de la complejidad del desarrollo de aplicaciones, dado que las aplicaciones no
necesitan ser programadas; en su lugar, estas son ensambladas desde utilerías que se encuentran
en el servidor de aplicaciones.
Aunque es aplicable a todas las plataformas, actualmente eltérmino es prácticamente un
sinónimo de la plataforma J2EE de Sun Microsystems. De todasmaneras, abarca servidores
de aplicaciones basadas en web, como plataformas para el comercio electrónico, sistemas de
administración de contenido o creadores de sitios web.
Ventajas de los servidores de aplicaciones.
1. Integridad de la información y código de programas.Al haber administración centra-
lizada en una o pocas computadoras, las actualizaciones se efectúan de manera rápida y
estarán disponibles automáticamente para todos los usuarios del sistema. No hay riesgos
de mezcla de versiones antiguas con nuevas. El código no puede ser alterado por terceros.
Los datos al estar centralizados se actualizan en un solo lugar proporcionando información
actualizada a todos los usuarios.
2. Administración centralizada. Los cambios realizados en los archivos de configuración
de las aplicaciones se reflejarán inmediatamente a todos losusuarios, de manera que no se
necesita recorrer toda el área de una empresa para realizar los cambios.
3. Seguridad. Para poder acceder al servidor el usuario debe de autenticarse. Además las
aplicaciones las proporciona el propio servidor haciendo uso de certificados para poder
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 291
autorizar su ejecución o uso de los archivos de datos del sistema, por lo tanto se consideran
más seguras.
4. Desempeño.Al limitar el tráfico de la red solamente a la visualización deresultados,
bajo el modelo cliente/servidor el usuario solamente enviará sus consultas y recibirá sus
resultados siendo éstos calculados por el servidor logrando así un excelente desempeño
de grandes aplicaciones.
6.6.2.3. Servidor de bases de datos
Un servidor de base de datos es un caso particular de un servidor de archivos. Es un programa
que provee servicios de base de datos a otros programas u otras computadoras, basándose en el
modelo cliente-servidor. Puede hacer referencia a aquellas computadoras dedicadas a ejecutar
los programas llamados manejadores de bases de datos. Esto es, proporciona los mecanismos de
acceso es un manejador de bases de datos que se ejecuta sobre las funciones básicas del servidor
de archivos. El acceso puede ser local o remoto.
Los sistemas de administración de base de datos (SGBD) generalmente proveen funcionali-
dades para servidores de base de datos, en cambio otros (comopor ejemplo, MySQL) solamente
proveen construcción y acceso a la base de datos.
6.6.2.4. Servidor de páginas WEB
Es un servidor que proporciona servicios concernientes a laWWW. Existen dos tipos:
1. Sitios de Intranets.Son aquellos sitios WEB diseñados exclusivamente para el flujo de
información corporativa dentro de una empresa.
2. Sitios de Internet.Son aquellos que se encuentran disponibles para todo el mundo, siendo
necesario contar con al menos un servidor de nombres de dominio, un servidor de páginas
WEB y un servidor de correo electrónico opcional.
Se deben tener al menos una computadora con conexión a internet, y se debe contar con un
conjunto de programas básicos para dar servicio WEB. Existen básicamente dos tipos de páginas
WEB que se manejan actualmente:
Páginas estáticas.Las páginas estáticas son aquellas que se diseñan una sola vez y que
son actualizadas manualmente.
Páginas dinámicas.Son aquellas generadas vía algún lenguaje de programación WEB
como PHP o java en combinación con manejadores de bases de datos, lo que permite la
actualización dinámica o en tiempo real de las mismas.
292 6.6. MANEJO DE ESPACIO EN MEMORIA SECUNDARIA
6.6.3. Seguridad en los archivos
La seguridad de los archivos se refiere tanto al hecho de impedir que personas no autorizadas
accedan a su información como a posibles desastres que inutilicen al sistema de archivos. La
destrucción de un archivo, es problemático. La destrucciónde todo el sistema de archivos es
un desastre. Incluso si se daña la computadora, ésta puede reemplazarse sin muchos problemas.
Pero cuando se daña el sistema de archivos, hay muy poco por hacer. Es posible también intentar
recuperar la tarjeta de interfaz del disco duro siempre y cuando los platos magnéticos no tengan
problema.
Si se pierde en forma definitiva el sistema de archivos, independientemente de fallo del
hardware o por algún problema de software, la recuperación de la información será un proceso
muy largo, difícil y muchas de las veces será imposible. La pérdida de información es algo que
debe de enfrentar todo profesionista que use una computadora.
Aunque el sistema de archivos no podrá nunca prever desastres naturales o daños imprevistos
del hardware, sí puede ayudar a proteger la información de diversas maneras.
Los discos flexibles pasan el control de calidad sin mucho problema, pero a través del uso
y debido a que las cabezas de lectura escritura tienen contacto físico con la superficie, si éstas
bajan un poco más de lo debido pueden causar rayaduras en su superficie. Incluso, si el propio
empaque del disco baja por causa de un golpe o por haber soportado un peso excesivo, puede
causar también rayaduras que dañen a uno o más sectores.
Es posible también que bajo la presencia de un campo relativamente débil, durante mucho
tiempo podría ocasionar la pérdida de algunos sectores o de todo el sistema de archivos conte-
nido en éste.
Se sabe que ha habido discos que han soportado mucho peso y campos magnéticos intensos,
pero cuando se trata de información importante, no está demás considerar un cuidado adecuado
con sentido común de los discos.
Los discos duros, tienen un promedio de vida que va de los cuatro a los cinco años sin pre-
sentar algún problema. Algunos durarán mucho más. No obstante, aunque nuestro disco duro no
reciba golpes, puede, por el uso continuo empezar a presentar problemas de lectura o escritura.
Aunque el controlador de disco puede manejar los sectores defectuosos o marcarlos para
que no se usen, existen otras técnicas que se pueden emplear para mantener segura nuestra
información. En la siguiente sección mencionaremos algunos mecanismos de protección que
todo profesionista de la información debe de conocer.
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 293
6.6.3.1. Seguridad en el acceso a los archivos y directorios
Actualmente es una necesidad la protección de la información para impedir que personas no
autorizadas accedan a información privilegiada.
El sistema operativo debe proporcionar los mecanismos básicos que permitan asegurarse que
los archivos deben ser leídos solamente por aquella personaque lo creó y por los que hayan sido
autorizados expresamente por el propietario.
En los sistemas basados en UNIX y en GNU/linux, la seguridad en el acceso a los archivos
está implementada mediante el uso de tres campos en la entrada de directorio bajo la siguiente
estructura:
1. El primer campo define los permisos de acceso del propietario del archivo o directorio.
Por omisión tiene los permisos de lectura, escritura y ejecución o acceso al directorio.
2. El segundo campo define los permisos de grupo. Estos los puede definir, ya sea el propie-
tario del archivo o en su defecto el administrador del sistema.
3. El tercer campo define los permisos de todo el mundo. Esto es, cualquier persona que tenga
contacto con el archivo o directorio puedeejercer los permisos que tenga esta sección.
En la tabla 6.2 vemos cómo están definidos.
drwxr-xr-x 2 nalonzo nalonzo 4.0K 2008-01-18 06:47 figuras
-rwxr-xr-x 1 nalonzo nalonzo 154K 2008-01-21 06:22 introduccionSO.tex
-rwxr-xr-x 1 nalonzo nalonzo 17K 2008-01-21 18:01 introduccion.tex
-rw-r–r– 1 nalonzo nalonzo 80K 2001-05-20 16:12 LETRACD.GIF
-rw-r–r– 1 nalonzo nalonzo 16K 2001-05-20 15:52 PART1.GIF
-rw-r–r– 1 nalonzo nalonzo 821 2008-01-15 09:12 portada.tex
Tabla 6.2: Una entrada de directorio tradicional de UNIX, GNU/Linux
La primera columna establece los permisos y está dividida encuatro partes. La primera
indica el tipo de entrada. por ejemplo, para la primera líneatenemos que es una entrada de
directorio. Luego vienen tres grupos escritos de la forma rwx. El guión significa que no se tiene
asignado ese permiso. La siguiente columna indica el númerode enlaces que tiene, luego el
nombre del propietario, el del grupo al que pertenece, el tamaño (en bytes), una marca de tiempo,
y el nombre del archivo. La marca de tiempo que se visualiza esla de la última modificación.
Para archivos especiales de dispositivo el campo de tamaño se reemplaza normalmente por los
números de dispositivo mayor y menor.
294 6.6. MANEJO DE ESPACIO EN MEMORIA SECUNDARIA
El significado de las rwx es el siguiente:
1. r. Se tiene permiso de lectura sobre el archivo o directorio.
2. w. Se tiene permiso de escritura sobre el archivo directorio.
3. x. Tiene dos significados:
Si es un archivo, indica que éste se puede ejecutar.
Si es un directorio, indica que se tiene permiso para entrar aél y mostrar sus conte-
nidos.
En un sistema basado en Windows o en un entorno gráfico de UNIX,GNU/Linux, los permi-
sos se pueden modificar abriendo el menú secundario de un archivo o directorio (normalmente,
se selecciona y se da click derecho), entrar en la opción de propiedades y de ahí a la pestaña o
al botón de permisos.
En ambos sistemas se tiene una opción para ocultar los archivos. En los sistemas basados
en UNIX, los nombres de archivos empiezan con un punto. En losbasados en Windows existe
como un atributo. A nivel consola, en UNÍX, GNU/Linx tenemoslas órdeneschmod y chown
que permiten cambiar atributos y propietario. En Windows tenemos la ordenattrib .
La otra opción para el control de accesos es mediante las ACL(Access Control List) o listas
de control de acceso. Con el esquema anterior es difícil y a veces imposible lograr todas las
exigencias de permisos requeridos por varios usuarios sobre un mismo directorio o archivo. Las
listas de control de acceso permiten un control extremadamente flexible, permitiendo asignar
todos los permisos mencionados anteriormente, incluso, sepueden determinar fechas y horas de
acceso específicas a las que puede acceder al archivo o directorio un usuario dado.
Tanto los sistemas basados en UNIX como los basados en windows a partir de windows NT
con NTFS implementan esta facilidad.
Las ACL no pueden ser usadas en los sistemas windows que haganuso del sistema de archi-
vos FAT16 o FAT32, por que no están diseñadas para este propósito. Esto significa que cualquier
usuario que tenga acceso a la computadora podrá leer sin ningún problema cualquier tipo de in-
formación que se encuentre en esa computadora. Por lo tanto,si se cuenta con información que
debe ser exclusiva de algún usuario, lo mejor es hacer uso de un sistema de archivos que las
soporte, de otra forma debe de utilizarse algún mecanismo deincriptación de ello hablaremos
en la sección 7.7 en la página 345.
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 295
6.7. Modelo jerárquico
Hasta ahora nos hemos dedicado a analizar los tipos de archivos. A partir de este momento
trataremos lo concerniente a los directorios. Un directorio es un archivo especial que permite
mantener una agrupación lógica de archivos o directorios que están relacionados o que tienen
algo en común. por ejemplo, un usuario puede crear un directorio con su nombre y ubicar ahí los
archivos de uso personal. A su vez dentro de este directorio puede crear otros para clasificar sus
vídeos, sus fotos, los archivos de texto y sus archivos de música, de manera que sea más fácil
encontrar aquella información que requiere de una forma másrápida.
Los directorios pueden implementarse de varias formas. Dentro de éstas tenemos las siguien-
tes.
Directorios de un solo nivel. Es la forma más sencilla de guardar los archivos. También se
le conoce comodirectorio raíz , pero como es el único, el nombre no importa. Cuando
empezaron a surgir las primeras computadoras personales era común este tipo de organi-
zación, debido a que los discos eran de poca capacidad y por que la mayoría de las veces
solamente podía trabajar olamente un usuario. Si la computadora se compartía entonces
cada usuario portaba su información en un disco flexible e incluso transportaba también
su propio sistema operativo de disco. También existieron computadoras multiusuario que
utilizaron este tipo de estructura de directorio. por ejemplo, la primer supercomputadora la
CDC 6600, tenía solamente un directorio que compartían todos los usuarios. El problema
de usar un solo directorio es que es posible que varios usuarios intenten usar un mismo
nombre para archivos diferentes causando incluso pérdida de información al sobreescribir
un archivo existente de forma accidental. También otro problema inherente es la poca or-
ganización del sistema de archivos. Con el tiempo se vuelve difícil y complicado navegar
a través de muchos archivos que no tienen que ver con los que realmente usa algún usuario
determinado. Por estas y otras razones actualmente ya no se usan.
Directorios de dos niveles.Mediante el uso de esta organización de directorios, no importa que
varios usuarios escojan el mismo nombre para diferentes archivos. Estos son identidades
diferentes por el simple hecho de estar almacenados en directorios distintos. De esta for-
ma proporcionando a los usuarios directorios privados, el usuario es libre de asignar los
nombres que desee sin preocuparse por los demás usuarios. Bajo Este esquema, tendremos
entonces el directorio raíz, después tendremos los directorios privados de los usuarios y
dentro de ellos los archivos de cada uno.
Sistemas de directorios jerárquicos.Es la organización que usan la mayoría de los sistemas
operativos actuales. En esta tenemos a nuestro directorio raíz, después tenemos los direc-
296 6.7. MODELO JERÁRQUICO
torios privados de los usuarios y éstos también tienen el permiso de crear a su vez tantos
subdirectorios como crean necesario para organizar sus archivos. De esta manera se crea
un árbol de directorios y el sistema operativo proporciona un conjunto de órdenes para
poder navegar a través de ellos, basándose también en los permisos adecuados de acceso.
Figura 6.16: Ejemplo de directorio tipo árbol
Cuando el sistema de archivos está organizado como árbol de directorios, es posible acceder
a diferentes archivos, ya sea entrando primeramente a cada uno de ellos, o haciendo uso de la
ruta completa para referenciar el archivo. A esta ruta se le denominanombre de ruta. El nombre
de ruta especifica a qué directorios se deben de acceder primeramente para poder hacer uso de
un archivo. El nombre del archivo va al final del nombre de ruta. Los sistemas UNIX/Linux
utilizan la “/” como separador de directorios y de archivo. Los sistemas basados en Windows
usan la barra invertida\ para esa función. Laruta absoluta se especifica a partir del directorio
raíz. En la tabla 6.3 tenemos algunos ejemplos de rutas absolutas.
Windows \sistemas\vídeo
UNIX/Linux /home/nalonzo/sistemas
MULTICS >usr>datos
Tabla 6.3: Rutas absolutas en UNIX/Linux, Windows y MULTICS
Observe cómo éstas se especifican desde el directorio raíz, esto significa que deberán empe-
zar, por ejemplo en windows con un\ y en UNIX/Linux con una /.
Las rutas relativas son aquellas que no llevan al principio el \ o la /. Esto hará que el sistema
operativo empiece a buscar en el directorio actual el nombredel directorio o el archivo que se
desea. En la tabla 6.4 tenemos algunos ejemplos de rutas relativas.
La ruta relativa también está relacionado con el concepto dedirectorio de trabajo o direc-
torio actual. El usuario puede especificar tanto para el sistema operativo como para la mayoría
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 297
Windows documentos\datos
UNIX/Linux documentos/dato
Tabla 6.4: Ejemplos de rutas relativas
de las aplicaciones en qué directorio desea que se ubique después de que éstas empiezan a eje-
cutarse.
Vamos a suponer que tenemos un archivo llamado datos en el directorio /home/documentos,
De acuerdo a lo visto anteriormente tenemos dos maneras de hacer referencia a éste:
Mediante ruta absoluta: less /documentos/datos
Mediante ruta relativa:
• cd /documentos
• less datos
Observe que cuando usamos la ruta relativa ha sido necesarioubicarse primeramente en el
directoriodocumentosel directorio actual o directorio de trabajo. Después de esto se puede
acceder al archivo sin la ruta.
La mayoría de los sistemas operativos actuales permiten establecer rutas por omisión, de ma-
nera que si se hace referencia relativa a un programa o a un archivo, el sistema empieza a buscar
en el directorio de trabajo o directorio actual. Si no lo encuentra empezará entonces a buscar en
las rutas establecidas por defecto. Es común que estas rutaspor defecto estén almacenadas en las
variables de entorno. Muchas aplicaciones establecen variables de entorno de manera que pue-
dan localizar los archivos necesarios para su ejecución. Una variable de entorno es aquella que
se inicializa desde un archivo de configuración momentos después de que se inicia el sistema
operativo o que puede ser definida por el usuario en tiempo de ejecución.
Existen dos nombres de directorios especiales que son muy útiles para hacer referencia a
otros directorios. Estos son el nombre de directorio “.” y elnombre de directorio “..”, llamados
directorio “punto” y directorio “punto punto”. El directorio “.” hace referencia al directorio de
trabajo actual. y el directorio “..” hace referencia al nombre del directorio padre. De esta forma
si estamos haciendo uso de la orden “cd”Change Directoryy deseamos subir al directorio padre
tenemos que ejecutar la instrucción.
cd ..
si se ejecuta la instrucción
cd . el sistema operativo no hará nada(estamos en el directorio actual).
298 6.7. MODELO JERÁRQUICO
En los sistemas UNIX/Linux para regresar inmediatamente aldirectorio de trabajo por de-
fecto se usa la orden cd sin ningún parámetro.
Operaciones con directorios Las operaciones más comunes que podemos realizar sobre los
directorios son las siguientes:
1. Crear. Se crea un directorio vacío. Automáticamente se crean dentro de él los nombre de
directorio especiales de “.” y “punto punto” Un directorio que solamente contiene estos
directorios se considera vacío.
2. Borrar. Permite eliminar un directorio. El directorio debe de estarvacío o en su defecto
algunos sistemas solicitan un parámetro adicional para asegurarse de que eso es lo que
quiere en realidad el usuario.
3. Abrir directorio. Se comentó que un directorio es un caso especial de archivo, por lo
tanto, también es posible abrir un directorio y leerlo el resultado será todos los nombres
de archivo y directorios que contenga.
4. Cerrar directorio. Una vez que se ha leído un directorio, éste debe cerrarse, puesto que
es un caso especial de archivo . Esto permite guardar los cambios hechos en la estructura
de directorios a disco y lleguen a ser permanentes.
5. Leer directorio. Una llamada de este tipo devuelve la siguiente entrada de un directorio
abierto.
6. Renombrar directorio. Esta operación permite cambiar el nombre al directorio, como a
cualquier otro archivo normal.
7. Enlace de directorio.Esta operación permite a un archivo o a un directorio aparecer en
más de un directorio, sin duplicar la información, esto se hace comúnmente incrementando
el nodo-i correspondiente al archivo o directorio para indicar al sistema operativo que éste
se encuentra en otro lado además de su ubicación normal. Hay que observar nuevamente
que en “el otro lado” solamente se encuentra el nombre del archivo. El enlace permite
acceder a él como si realmente fuera un archivo local.
8. Desligar. Esta operación permite eliminar la entrada del archivo del directorio donde se
encuentra. En general esta operación solamente eliminará la entrada de directorio corres-
pondiente. Si existe más de una instancia o enlaces al archivo, se decrementará el contador
de nodo-i (específico de UNIX) y se eliminará la entrada de directorio correspondiente, las
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 299
demás entradas permanecerán hasta el contador de nodo-i llegue a cero. En ese momento
el archivo o directorio quedará eliminado de disco.
Existen otras operaciones relacionadas con los permisos asociados a cada directorio, inclu-
yendo las listas de acceso y los permisos de lectura escritura a los mismos.
6.8. Mecanismos de recuperación en caso de falla
Regresando a los mecanismos de protección el primero que mencionaremos se refiere a
las copias de protección. La mayoría de las personas piensa que a ellos no les va a pasar y
confían en su buena suerte. Además también consideran que respaldar no vale tanto la pena
debido al tiempo que se debe dedicar para hacer la tarea, muchas veces debido también a que los
archivos se van actualizando continuamente, lo que implicauna gran pérdida de tiempo si este
respaldo se hace manualmente. Tampoco consideran necesario usar una herramienta automática
por que manejan relativamente poca información. Cuando el disco duro falla de repente, es
donde empiezan una búsqueda desesperada de profesionales que ayuden a la recuperación de su
información. En esos momentos se dan cuenta que el “rescate”de la información salió mucho
más caro que si hubieran tenido un disco duro de respaldo, si es que lograron recuperarla. De otra
forma, también los costos son elevados desde el punto de vista productivo: rehacer un proyecto,
la contabilidad de todo el año o el pago de multas por no haber entregado a tiempo el trabajo.
Las compañías dan un mayor valor a sus datos y es común que tengan toda una política de
respaldo de información. en general pueden manejar respaldos, diarios, semanales, mensuales e
incluso anuales o más Hacen también uso de aplicaciones que permiten realizar los respaldos en
cinta de forma automática, usando una técnica llamada respaldo incremental. Con esta técnica
se reduce el tiempo de respaldo debido a que solamente se respaldan aquellos archivos que han
modificados. El problema con esta técnica es que la fecha debeestar siempre bien establecida.
aunque la mayoría de las veces el usuario será advertido sobre el hecho de sobreescribir un
archivo más antiguo sobre uno más actualizado. Además de acuerdo a la política de respaldo
incremental, esta situación no actualizaría la información en el respaldo. Para evitar un caso de
este tipo, el servidor se conecta con otras computadoras o servidores de reloj y verifican que la
fecha sea acorde al mismo.
Los medios más comunes de respaldo son las cintas, cuya relación precio/megabyte ronda
alrededor de unos cuantos pesos. Como se puede ver, el hacer respaldos no es tan trivial como
parece.
300 6.8. MECANISMOS DE RECUPERACIÓN EN CASO DE FALLA
6.8.1. Implementación
La implementación de los mecanismos de protección van orientados hacia la prevención de
la pérdida de información y también hacia la pérdida o borrado involuntario o accidental de
archivos. Los mecanismos de protección son los siguientes:
1. Copia de seguridad de las aplicaciones.La mayoría de las aplicaciones llevan dos ar-
chivos paralelamente y con unos cuantos minutos de variación que son elegidos por el
usuario. De esta forma, si se pierde el archivo principal, elusuario tendrá que recuperar
solamente la información capturada durante ese lapso de tiempo.
2. Copias por el sistema operativo.Este mecanismo es muy usual en muchos sistemas
operativos. Cuando un usuario borra un archivo, éste no se borra en realidad, si no que
pasa a un directorio conocido comopapelera de reciclajede esta forma, si el usuario
borró accidentalmente ese archivo podrá recuperarlo inmediatamente restaurándolo de la
papelera. Cabe hacer mención que los archivos que se encuentran en la papelera no podrá
ser usados como archivos normales hasta que no se restauren.
3. Copias de respaldoEl problema de hacer respaldos de información no es trivial.Anali-
cemos primero aquellos archivos que es necesario respaldar. Empecemos por los archivos
binarios o ejecutables. No es necesario respaldarlos debido a que pueden volver a ins-
talarse a partir del CD-ROM original. La mayoría de las veces, ni siquiera es necesario
respaldar el sistema operativo, puesto que también es susceptible de ser instalado desde el
medio original. Puede deducirse entonces que solamente deben respaldarse algunos direc-
torios específicos junto con todo su contenido y no respaldartodo el sistema de archivos.
También dentro de estos directorios a respaldar existen directorios o archivos que jamás
sufren modificaciones como por ejemplo algunos archivos de ayuda o ciertas bases de da-
tos de consulta que se actualizan solamente en periodos relativamente largos de tiempo y
que es muy probable que al momento de hacer el respaldo no hayan sufrido modificación
alguna. A partir de esto llegamos a la idea derespaldos incrementales. El método más
común de respaldo incremental es hacer un respaldo completoen forma periódica, por
ejemplo cada mes y entonces hacer un respaldo cada semana de solamente aquellos archi-
vos que se han modificado y sobre éste, hacer un respaldo diario que se hace solamente de
aquellos archivos que sufren modificaciones diarias. Lo mejor sería hacer un respaldo de
solamente aquellos archivos que han sido modificados desde la última vez que se hizo el
respaldo. Esto reduce drásticamente el tiempo de respaldo.No obstante, el precio a pagar
es que dificulta la recuperación de la información: primero es necesario restaurar el últi-
mo respaldo completo, luego todos los respaldos semanales en orden inverso y por último
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 301
también los respaldos diarios, de nuevo en orden inverso. Esnormal que se usen esquemas
de respaldo incremental más elaborados para facilitar la recuperación.
4. Respaldos comprimidos.Debido a que casi siempre se respaldan grandes cantidades de
información, es buena idea comprimirlos antes de escribirlos en cinta. Sin embargo, se
corre el riesgo de que una vez comprimidos, un pequeño error dentro del archivo en cinta
interfiera en el algoritmo de descomprensión e impedir la lectura de todo el archivo o
incluso de toda la cinta. Por ello, si se va a respaldar los datos en forma comprimida, debe
de analizarse cuidadosamente si es absolutamente necesario. Es común también hacer dos
respaldos para asegurarse de que no vaya a suceder esta situación, habiendo comprobado
previamente que el archivo es perfectamente descomprimible.
La mayoría de los sistemas de archivos no permiten respaldararchivos que estén siendo
usados actualmente. También si se llegara a permitir esta situación bajo las circunstancia de
que el archivo esté siendo usado en modo de solo lectura, puede ser posible que un minuto o
segundos después cambie su modo a escritura, lo que hace que el respaldo realizado no será
consistente con respecto al archivo original. Esto obliga entonces a dedicar completamente el
sistema de archivos a la operación de respaldo, lo que implica dejar de usar el sistema. Pero un
respaldo de mucha información puede tardar más de una hora, dependiendo de la cantidad de
información, lo que lo hace complicado, puesto que tendría que dejar el sistema fuera de línea
durante parte de la noche.
La creación de respaldos, como se ve, presenta muchos problemas no técnicos en una orga-
nización. El mejor sistema de manejos de respaldos en línea del mundo podría ser inútil si el
administrador de sistemas guarda todas las cintas de respaldo en el sótano, junto con materiales
inflamables o que puede ser susceptible a inundaciones, incluso a ser destruidas por roedores.
Además el hacer un respaldo diario, no sirve de mucho si las cintas se encuentran en el mismo
edificio u oficina y el incendio, además de acabar con las computadoras, termina también con
las cintas de respaldo. Lo recomendable es tener también otro paquete de cintas de respaldo en
otro edificio, aunque esto también sea un problema potencialde seguridad frente al espionaje o
robo de información.
Existen dos formas de realizar los respaldos de un disco en cinta.
1. Respaldo físico.Permite hace una copia exacta bloque por bloque del disco. Elprograma
lo que hace es copiar a nivel de bloque todo el disco, uno a uno registrando también la
posición a la que corresponde cada uno de ellos. La principalventaja que ofrece es que es
posible eliminar casi por completo los posibles errores de copiado, incluso si un bloque
está dañado, la aplicación avisará y además solamente afectará al archivo o directorio
302 6.9. PROBLEMAS
involucrado, siendo posible también que el administrador resuelva el problema antes de
seguir con el respaldo. El problema principal es que tambiénalmacenará bloques vacíos
lo que implica gran pérdida de espacio en cinta. No tiene casoalmacenar bloques vacíos.
Esta técnica se usa solamente para sistemas de archivos pequeños.
2. Respaldo lógico.Comienza en uno o más directorios específicos y respalda en forma
recursiva todos los archivos y directorios que se encuentren en ellos y que hayan sido
modificados a partir de una fecha dada. Este tipo de respaldo es el más común. Bajo
este enfoque se guarda también la estructura de directoriosque está arriba de un archivo
modificado para permitir su restauración en el lugar correcto.
6.8.2. Consistencia del sistema de archivos
Hasta ahora hemos tratado de forma general los métodos de respaldo para recuperar algunos
archivos o directorios completos del sistema de archivos. Cuando el sistema de archivos lee un
bloque de disco y lo coloca en memoria, realiza modificaciones y entonces tiene que regresarlo
a disco. Si ocurre una falla antes de que se escriban los bloques modificados a disco, se dice
entonces que el sistema de archivos presenta inconsistencias.
En muchas ocasiones, el sistema operativo verificará al momento de iniciar que por ejemplo,
el tamaño registrado en la entrada de directorio coincida con el número de nodos-i asignados. Si
esto no sucede entonces obligará al administrador a hacer una verificación completa del sistema
de archivos para eliminar inconsistencias. Todos los sistemas operativos tiene un paquete de
utilerías para asegurarse de que el sistema de archivos estálibre de inconsistencias y la mayoría
de las veces intentará resolverlas por sí mismo. En UNIX/Linux, esta utilería se llamafscky en
Windows tenemos ascandisk.
Los sistemas operativos ejecutan estas utilerías comúnmente después de una caída del siste-
ma para verificar el estado del sistema de archivos.
6.9. Problemas
6.1. ¿Por qué es necesario el uso de archivos?
6.2. ¿Qué ventajas proporciona hacer uso de dispositivos de almacenamiento masivo?
6.3. ¿Cuál es la estructura de datos utilizada para guardar información en disco?
6.4. ¿Qué información mantiene la estructura de datos de tipoarchivo?
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 303
6.5. Explique las operaciones que pueden hacerse sobre un archivo.
6.6. ¿Cuáles son las dos principales formas de acceso a archivos que proporciona un sistema
operativo?
6.7. Enumere los tipos de datos presentes en un lenguaje de programación.
6.8. Dibuje un diagrama que represente la jerarquía de los tipos de datos.
6.9. ¿Qué es una estructura?
6.10. ¿Qué es un objeto?
6.11. ¿Cuál es la principal diferencia entre una estructura y un objeto?
6.12. ¿Cómo se forma un nombre de archivo en MS-DOS?
6.13. ¿Cómo se forma un nombre de archivo en UNIX/Linuxen Windows 2000?
6.14. Describa ocho extensiones comunes de archivos.
6.15. ¿Cuáles son los tipos de archivos manejados por UNIX/Linux?
6.16. ¿Cuáles son los archivos normales?
6.17. ¿Qué es un archivo de texto?
6.18. ¿Qué es un archivo binario?
6.19. ¿Un archivo binario es necesariamente ejecutable? Explique su respuesta.
6.20. ¿Cómo se presenta el sistema de archivos al usuario?
6.21. ¿Cuáles son los métodos de acceso a los dispositivos de almacenamiento masivo? Ex-
plíquelos.
6.22. ¿Qué es un archivo de índice?
6.23. ¿Qué es un directorio o carpeta?
6.24. ¿Cuál es el directorio raíz?
6.25. Explique la estructura de directorios jerárquicos.
6.26. ¿A qué nos referimos con una ruta relativa?, ¿Y con una absoluta?
304 6.9. PROBLEMAS
6.27. ¿Qué es una ruta por omisión o por defecto?
6.28. ¿Cuál es el concepto de una variable de entorno?
6.29. ¿Cuál es el significado de los directorios “.” y “..”?
6.30. ¿Cuáles son las operaciones con directorios?
6.31. ¿En qué partes puede dividirse un disco?
6.32. Explique la estrategia de asignación contigua de bloques para un archivo.
6.33. Explique la estrategia de asignación por lista ligada de bloques para un archivo.
6.34. Explique la estrategia de almacenamiento por medio de la tabla de asignación de archi-
vos.
6.35. Explique la estrategia de almacenamiento por medio de nodos-i para el almacenamiento
de archivos.
6.36. ¿Cómo se almacenan los nombres largos?, ¿Qué estructuras dedatos se utilizan?
6.37. ¿Cómo se manejan lascolisionesen una tabla hash?
6.38. ¿Qué es un servidor de archivos?
6.39. ¿Cuáles son las diferentes servicios que se derivan de un servidor de archivos? Explique
cada uno de ellos.
6.40. ¿Cuáles son los protocolos de red más comunes? Explique cadauno de ellos.
6.41. ¿Qué es un servidor de aplicaciones?
6.42. ¿Qué ventajas proporciona un servidor de aplicaciones?
6.43. Proporcione una definición de un servidor de bases de datos.
6.44. ¿Cuál es la tarea de un servidor de páginas WEB?
6.45. ¿A qué se refiere la seguridad de archivos?
6.46. ¿Cual es el tiempo de vida útil de un disco duro?
6.47. ¿Qué deben proporcionar los mecanismos básicos de seguridad de un sistema operati-
vo?
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 305
6.48. ¿Como implementa UNIX/Linux el mecanismo de seguridad básico para el acceso a
directorios y archivos?
6.49. ¿Cuál es el significado de las abreviaturas rwx en una entradade archivo?, ¿Y en una
entrada de directorio?
6.50. ¿Qué órdenes se ocupan para la manipulación de permisos y propietarios?
6.51. ¿Qué significa ACL?, ¿Para que sirven?
6.52. ¿Para qué se implementan los mecanismos de protección?
6.53. ¿Cuál es el mecanismo de protección más básico e importante en un sistema de archi-
vos?
6.54. ¿Cómo se lleva a cabo un respaldo incremental?
6.55. ¿Cuál es la estrategia más común que usan las aplicaciones para prevenir pérdidas
accidentales de algún archivo?
6.56. Explique para qué sirve la papelera de reciclaje.
6.57. Haga un análisis sobre aquella información que debe ser respaldada en un sistema de
computadora y cuál no.
6.58. ¿Qué es un respaldo comprimido?
6.59. Explique cómo se lleva a cabo un respaldo físico.
6.60. Explique cómo se lleva a cabo un respaldo lógico.
6.61. Explique a qué se refiere el concepto de consistencia del sistema de archivos.
6.62. ¿Para que se usan las llamadas al sistema?
6.63. ¿Qué funciones contiene la interfaz de la biblioteca estándar?
6.64. Describa de forma general la declaración de las funciones demanejo de archivos.
6.65. ¿Qué significa EOF?
6.66. ¿Qué funciones de la biblioteca estándar se usan para la entrada/salida de caracteres?
6.67. Explique los tres tipos de interfaz que proporciona el sistema operativo a sus usuarios.
306 6.10. LECTURAS ADICIONALES
6.68. Explique los tres pasos para poder trabajar en un sistema operativo en modo consola.
6.69. ¿Cuáles son las órdenes más comunes que se utilizan en una sesión de usuario en modo
consola?
6.70. Explique cómo se inicia sesión en una interfaz gráfica.
6.71. ¿Bajo qué forma entrega el sistema operativo la interfaz correspondiente a los progra-
madores?
6.72. ¿Qué es un intérprete de órdenes?
6.73. En un sistema UNIX/Linux, ¿Cuál es el símbolo que se utiliza para usuarios normales?,
¿Y para el administrador?
6.74. ¿Qué tareas realiza el intérprete de órdenes?
6.75. ¿Por qué hay que saber utilizar el intérprete de órdenes?
6.76. Describa el proceso para ejecutar un intérprete de órdenes.
6.77. ¿En cuál archivo se guarda la contraseña cifrada?
6.78. Describa los tipos de shells que ofrece UNIX/Linux.
6.79. ¿Qué es una tubería?
6.80. ¿Cuál es la función de una tubería?
6.81. Defina el redireccionamiento de entrada/salida.
6.82. ¿Qué diferencia existe entre una tubería y el redireccionamiento de entrada/salida?
6.10. Lecturas adicionales
En el libro de Francisco Manuel Márquez[73] se explica detalladamente el sistema de archi-
vos en UNIX.
McKusick[68] y su equipo explican cómo implementar unsistema de archivos rápido para
UNIX. Sandberg[91] a su vez detalla el diseño e implementación del sistema de archivos de red
de Sun y relata su experiencia en [90]. Rosenblum y Ousterhout[86] diseñan e implementan un
sistema de archivos denominadosistema de archivos estructurado por registros.
Tweedie[104] entra con cierto detalle en el sistema de archivos ext2fs de Linux.
CAPÍTULO 6. SISTEMAS DE ARCHIVOS 307
Los sistemas RAID permiten unir dos o más discos para verlos como uno solo. Existen dife-
rentes niveles (denominados niveles RAID) que indican la forma de implementar la distribución
de los datos en los discos. Holland[49] describe una herramienta para sistemas RAID, mientras
que Chen y Petterson[27] describen una técnica para maximizar el desempeño en arreglos de
discos divididos.
Diane Tang[102] realiza una evaluación de desempeño de algunos sistemas de archivos.
También S. Chen y Towsley[28] realizan otras medidas de desempeño sobre una arquitectura
RAID.