Вы находитесь на странице: 1из 5

Capítulo 10: Interfaz del sistema de archivos

El sistema de archivos está dividido en dos partes: la colección de archivos y la estructura de directorios que
organiza todos los archivos y proporciona información acerca de los mismos.

Concepto de archivo

Es la mínima unidad lógica de almacenamiento. La misma es proporcionada por el SO como una vista lógica
uniforme que te abstrae de las propiedades físicas de las unidades de almacenamiento. Es el SO quien se
encarga de mapearlos sobre estas unidades físicas.
Es una secuencia de bits, que simbolizan una serie de información relacionada que define su creador. La
estructura del mismo depende de su tipo (texto, objeto, fuente, etc.). También se lo puede considerar como
un tipo abstracto de datos.
Los archivos cuentan con propiedades que son almacenadas en la estructura de directorios, a saber:

 Nombre: única información que mantiene un formato legible por las personas. Si el archivo se crea con
un SO y se abre con otro, el nombre no cambia.
 Identificador: identifica al archivo dentro del SO. No legible para las personas.
 Tipo: en general se indican al final del nombre del archivo, como extensión, para que el SO reconozca el
tipo y pueda operar el archivo de manera correcta. Cada tipo de archivo debe seguir una estructura
definida por el SO para poder operar ese tipo de archivo.
 Ubicación: puntero a la ubicación del archivo en un dispositivo.
 Tamaño: expresa el tamaño actual, y posiblemente el máximo permitido.
 Protección: determina permisos.
 Fecha, hora e identificación del usuario: también se usan para saber modificaciones y últimas veces
abierto.

Operaciones con los archivos

 Creación: es necesario encontrar espacio libre en disco e incluir en el directorio una entrada para el
nuevo archivo.
 Escritura: se debe realizar una llamada al sistema con el nombre y la información a escribir en el
archivo. Una vez conseguido eso, se debe mantener un puntero donde se debe escribir. El mismo hay
que actualizarlo a medida que se escribe.
 Lectura: se realiza una llamada al sistema que dice el nombre y en qué dirección de memoria principal
debe colocarse el siguiente bloque a leer. También se deberá mantener un puntero que indique donde
se está leyendo. Una vez finalizado, se actualiza el puntero de lectura. Las operaciones de lectura y
escritura utilizan el mismo puntero, y está relacionado al proceso en cuestión.
 Reposicionamiento o búsqueda: se explora el directorio para buscar el archivo y se apunta el puntero
con el nuevo valor deseado. No necesariamente signifique una E/S.
 Borrado: se libera todo el espacio ocupado por el archivo y se borra la entrada del directorio.
 Truncado: se reinicializa el archivo poniéndole una longitud igual a cero. Se mantienen las propiedades.

La mayoría de estas operaciones primitivas (combinándolas se pueden obtener más) requieren una búsqueda
en el directorio y una apertura mediante el método open(). Para evitar estas constantes búsquedas, el SO
cuenta con una tabla de archivos abiertos que contiene información acera de todos los archivos abiertos. En
vez de buscar en el directorio, cada operación indica un índice de esta tabla. Cuando el archivo deja de ser
utilizado se cierra el proceso y se elimina la entrada de la tabla.
A su vez, cada proceso tiene su propia tabla de archivos abiertos (donde se guarda, entre otras cosas, el
puntero de ubicación), así que cada vez que el proceso ejecute una llamada open(), si el archivo ya fue
abierto por otro proceso, solo se agrega un puntero a la tabla global de archivos abiertos, y se incrementa en
uno la cantidad de aperturas del archivo. Al cerrarse un archivo, este contador de la tabla global se
decrementa en uno, al llegar a cero, la entrada es borrada de la tabla.

Los archivos también pueden ser bloqueados.

Estructura interna de un archivo

Así como los discos físicos están divididos en bloques, los archivos también se dividen en bloques lógicos para
poder manipular las operaciones de E/S. Varios bloques lógicos pueden ser guardados en un bloque físico,
dependiendo del tamaño lógico que se le dé a los bloques. Generalmente se desperdiciara una parte del
último bloque de un archivo, a lo que se lo llama fragmentación interna, cuanto más grande sea el tamaño
de bloque, más espacio será desperdiciado.

Métodos de acceso

Acceso secuencial

Se procesa un registro después de otro. Una operación de lectura lee la siguiente porción del archivo e
incrementa automáticamente el valor del puntero, de la misma manera la escritura añade información al final
del archivo y hace que el puntero avance hasta el final. Los archivos pueden ser reinicializándolos para que el
puntero vuelva a cero.

Acceso directo

Se basa en el modelo de los discos magnéticos, de los cuales se puede acceder a cualquier sector sin ningún
problema. Se divide al archivo en bloques y se lee a partir de ellos, sin ningún tipo de orden.
Cuando se recibe una consulta relativa a un tema concreto, es posible calcular en que bloque puede estar esa
información sin necesidad de recorrer todo el archivo. Con este método de acceso, las operaciones a realizar
sobre el archivo deben modificarse para poder incluir el número de bloque como parámetro, en vez de
utilizar leer siguiente o escribir siguiente, usa leer n, donde n es el número de bloque. Este número es relativo
al archivo en cuestión y no tiene que ver con su posición en el disco. Como los registros lógicos tienen un
tamaño fijo, se hace más fácil leer o escribir en el mismo.

Acceso por índice

Se construye un índice que contiene punteros a los distintos bloques del archivo, entonces para buscar algo
primero se busca en el índice y luego se va al boque lógico del archivo. De esta manera se puede explorar un
archivo grande con pocas operaciones de E/S, aunque si el archivo es muy grande, el índice también lo será,
por lo que se puede implementar un índice del índice.

Estructura de directorios

Un directorio es un archivo pero que se trata de forma diferente, tienen todos el mismo formato interno,
donde ara cada entrada del mismo hay un bit que define si se trata de otro directorio (1) o de un archivo (0).
Dentro de una misma PC se pueden implementar distintos sistemas de archivos, cada uno alojado en un
volumen diferente. Cada volumen debe tener su propio directorio de dispositivo o tabla de contenidos del
volumen. Este directorio puede considerarse como una tabla de símbolos que traduce los nombres de
archivo a sus correspondientes entradas de directorio. Sobre los directorios se deben poder
crear/renombrar/borrar archivo, buscar un archivo dentro de mismo directorio, listar el directorio y
recorrerlo.

Tipos de directorios

Un único nivel

Todos los archivos están contenidos en un mismo directorio que es fácil de mantener y comprender. Tiene el
problema de mantención cuando se tratan de varios archivos, o archivos compartidos, o archivos con el
mismo nombre.

Dos niveles

Existen dos tipos de directorio, el MFD (master file directory) y el UFD (user file directory). Hay un directorio
por cada usuario, y los mismos son apuntados desde el MFD al conectarse el usuario. Estos directorios de
usuario deben poder borrarse y crearse cuando sea necesario.
Cuando un usuario hace referencia a algún archivo, solo se busca en su UFD.
Esta estructura aísla a un usuario de otro, pero es un problema cuando los usuarios quieren cooperar y
compartir archivos. Si un usuario quiere acceder a los archivos de otro, debe tener los permisos y conocer la
ruta del archivo, que está dada por el volumen, el directorio y el nombre del archivo. Esta ruta recorre el
directorio como si fuese un árbol, empezando por la raíz que es el volumen, pasando por el directorio como
segundo nivel y llegando a la hoja que es el archivo.

Estructura de árbol

Permite a los usuarios crear sus propios subdirectorios y organizar sus archivos como quieran. Es la
estructura de directorio más común. También permite a los usuarios acceder a directorios de otro usuario.
Cada proceso tiene su directorio actual, así que todos los archivos a ser utilizados deberían estar acá, si se
necesita uno que no se encuentre en este directorio actual, se debe especificar su nombre con la ruta. Cada
vez que se haga una llamada al sistema para cambiar de directorio, el directorio actual será cambiado por el
que se acaba de cambiar. Un nombre de ruta absoluto comienza en la raíz del árbol, un nombre de ruta
relativo se cuenta desde el directorio actual.
Al borrar un directorio se puede elegir entre no borrar a menos que el mismo este vacío, o borrar todo el
directorio con sus archivos y sus directorios debajo.

Grafo acíclico

Es muy parecido a la estructura de árbol con la diferencia de que un archivo/directorio puede estar en más de
un directorio a la vez. Se puede lograr esto agregando un tercer tipo de entrada, el enlace, que será un
puntero a la ubicación real del archivo compartido por más de un directorio. También se pueden mantener
dos archivos idénticos y tener el problema de lograr la coherencia entre estos dos.
Este tipo de estructura es bastante compleja, ya que dos rutas absolutas diferentes pueden estar apuntando
al mismo archivo.
Otro problema tiene que ver con el borrado. Si se trata de un sistema que utiliza enlaces, el archivo puede ser
borrado y dejar los enlaces colgando sin ningún problema, ya que borrar los enlaces sería muy costoso a
menos que cada archivo tenga una lista de enlaces relacionados, sino, otra forma de borrar es borrar de a
enlaces, cuando ya no queden más enlaces, borrar el archivo.

Grafo general
Si añadimos enlaces a una estructura
de árbol, da como resultado una
estructura de grafo simple, donde el
principal problema tiene que ver con
no producir ciclos.
Si se permiten los ciclos, se debe
buscar la manera de no explorar el
mismo directorio dos veces, se puede
correr el riesgo de un bucle infinito de
búsqueda. La solución más simple es
ignorar los enlaces a la hora de
recorrer el directorio.

Montaje de sistemas de archivos

Los sistemas de archivos deben ser montados para poder ser utilizados. Para montarlo se le proporciona al SO
el nombre del dispositivo en el cual reside el sistema y un punto de montaje desde donde sebe ser “colgado”,
normalmente será un directorio vacío. Una vez proporcionado todo, el SO verifica que todo sea válido y
registra en su estructura de directorios que hay un sistema de archivo montado en el punto de montaje
especificado.
Cada SO define sus políticas de montaje, algunos no permiten que se monte sobre un directorio que tiene
archivos, otros inhabilitan los archivos que están previos a que se monte el sistema de archivos, alguno
permiten que se monte el mismo sistema muchas veces, otros no, etc.

Compartición de archivos

Múltiples usuarios

El sistema debe mantener más atributos de los archivos de los que debería mantener en un sistema
monousuario, por ejemplo el propietario del archivo es quien decide todo, como ser que grupo puede
acceder/modificar al archivo.

Sistemas de archivos remotos

Por ejemplo, la World Wide Web, que utiliza un sistema FTP anónimo, donde no es necesario autenticarse
para ver los archivos alojados en otro servidor. Otro sistema es DFS (distributed file system) donde los
directorios remotos son visibles desde una maquina local.

Modelo cliente-servidor

La máquina que contiene los archivos es el servidor, mientras la que los pide es el cliente. El servidor publica
que archivos tiene disponible, y puede dar servicio a múltiples usuarios, así como los usuarios pueden
acceder a múltiples servidores.

Sistemas de información distribuidos

Proporcionan un acceso unificado a la información necesaria para la informática remota, como el DNS.

Modos de fallo
Cada sistema de archivos define su semántica de fallo, que es como actúa ante un fallo, sea externo
(hardware) o interno (error de algún usuario). En general, ante un fallo de hardware, se retarda las
operaciones que se estuvieran realizando en el algún host remoto, para así poder retomarlas luego. Para
poder lograr esto se mantiene algo de información de estado tanto en el cliente como en servidor, si los dos
mantienen información sobre sus actividades y archivos abiertos, se recuperara más fácilmente.

Semántica de coherencia

Específica como pueden acceder simultáneamente a un archivo los múltiples usuarios del sistema, en
general, determina cuando las modificaciones hechas por alguien serán visibles por otro. En UNIX, los
cambios hechos por un usuario son inmediatamente visibles por el otro, también, el puntero del archivo es el
mismo para todos, si un usuario lo aumenta, el mismo será aumentado para todos. También hay una
semántica de coherencia que dice que todo archivo compartido no puede ser modificado ni renombrado, se
la llama semántica de archivos compartidos inmutables.

Protección

La necesidad de proteger los archivos son consecuencia directa de la posibilidad de acceder a ellos, ya que,
los archivos que no permiten el acceso a los sistemas de otros usuarios no necesitan seguridad.
En este caso, se maneja un acceso controlado, que tiene que ver con limitar los tipos de acceso a los archivos
por parte de los usuarios. Los accesos son de los siguientes tipos:

 Lectura
 Escritura
 Ejecución: cargar el archivo en memoria y ejecutarlo
 Adición: escribir más información sobre el archivo
 Borrado
 Listado: listar el nombre y los atributos del archivo.

Control de acceso

La técnica más fácil para aplicar la protección es hacer que el acceso dependa de la identidad del usuario.
Para esto se aplica a cada archivo una lista de control de acceso (ACL) que especifique quien y que puede
hacer cada cosa. Para que esta lista no sea enorme, se listan en ella el propietario y los distintos grupos que
pueden acceder, en vez de listar usuario por usuario.
Otra técnica consiste en asignar una contraseña para cada archivo.

Вам также может понравиться