Un “Archivo” es un conjunto de registros relacionados.
El “Sistema de Archivos” es un componente
importante de un S. O. y suele contener:
“Métodos de acceso” relacionados con la manera de
acceder a los datos almacenados en archivos.
“Administración de archivos” referida a la provisión
de mecanismos para que los archivos sean almacenados, referenciados,
compartidos y asegurados.
“Administración del almacenamiento auxiliar” para la
asignación de espacio a los archivos en los dispositivos de almacenamiento
secundario.
“Integridad del archivo” para garantizar la
integridad de la información del archivo.
El sistema de archivos está relacionado especialmente con
la administración del espacio de almacenamiento secundario, fundamentalmente
con el almacenamiento de disco.
Una forma de organización de un sistema de archivos puede
ser la siguiente:
Se utiliza una “raíz ” para indicar en qué
parte del disco comienza el “directorio raíz ”.
El “directorio raíz ” apunta a los “directorios
de usuarios”.
Un “directorio de usuario” contiene una entrada
para cada uno de los archivos del usuario.
Cada entrada de archivo apunta al lugar del disco donde
está almacenado el archivo referenciado.
Los nombres de archivos solo necesitan ser únicos dentro
de un directorio de usuario dado.
El nombre del sistema para un archivo dado debe ser único
para el sistema de archivos.
En sistemas de archivo “jerárquicos” el nombre
del sistema para un archivo suele estar formado como el “nombre de la
trayectoria” del directorio raíz al archivo.
Se considerará el punto de vista del usuario.
Las reglas exactas para los nombres de archivos varían de
sistema a sistema.
Algunos sistemas de archivos distinguen entre las letras
mayúsculas y minúsculas, mientras que otros no.
Muchos S. O. utilizan nombres de archivo con dos partes,
separadas por un punto:
La parte posterior al punto es la extensión de
archivo y generalmente indica algo relativo al archivo, aunque las
extensiones suelen ser meras convenciones.
Los archivos se pueden estructurar de varias maneras, las
más comunes son:
“Secuencia de bytes”:
El archivo es una serie no estructurada de bytes.
Posee máxima flexibilidad.
El S. O. no ayuda pero tampoco estorba.
“Secuencia de registros”:
El archivo es una secuencia de registros de longitud
fija, cada uno con su propia estructura interna.
“Árbol ”:
El archivo consta de un árbol de registros, no
necesariamente de la misma longitud.
Cada registro tiene un campo
key (llave o clave) en una posición fija del registro.
El árbol se ordena mediante el campo de clave para
permitir una rápida búsqueda de una clave particular.
Muchos S. O. soportan varios tipos de archivos, por
ej.: archivos regulares, directorios, archivos especiales de caracteres,
archivos especiales de bloques, etc., donde:
Los Archivos Regulares son aquellos que
contienen información del usuario.
Los Directorios son archivos de sistema para el
mantenimiento de una estructura del sistema de archivos.
Los Archivos Especiales de Caracteres:
Tienen relación con la e / s.
Se utilizan para modelar dispositivos seriales de e / s
(terminales, impresoras, redes, etc.).
Los Archivos Especiales de Bloques se utilizan
para modelar discos.
Los tipos de acceso más conocidos son:
Acceso Secuencial: el proceso lee en orden todos los
registros del archivo comenzando por el principio, sin poder:
Saltar registros.
Leer en otro orden.
Acceso Aleatorio: el proceso puede leer los
registros en cualquier orden utilizando dos métodos para determinar el punto de
inicio de la lectura:
Cada operación de lectura (read) da la posición en el
archivo con la cual iniciar.
Una operación especial (seek) establece la posición de
trabajo pudiendo luego leerse el archivo secuencialmente.
Cada archivo tiene:
Su nombre y datos.
Elementos adicionales llamados atributos, que varían
considerablemente de sistema a sistema.
Algunos de los posibles atributos de archivo
son:
“Protección”: quién debe tener acceso y de qué
forma.
“Contraseña”: contraseña necesaria para acceder al
archivo.
“Creador”: identificador de la persona que creó el
archivo.
“Propietario”: propietario actual.
“Bandera exclusivo - para - lectura”: 0 lectura /
escritura, 1 para lectura exclusivamente.
“Bandera de ocultamiento”: 0 normal, 1 para no
exhibirse en listas.
“Bandera de sistema”: 0 archivo normal, 1 archivo de
sistema.
“Bandera de biblioteca”: 0 ya se ha respaldado, 1
necesita respaldo.
“Bandera ascii / binario”: 0 archivo en ascii, 1
archivo en binario.
“Bandera de acceso aleatorio”: 0 solo acceso
secuencial, 1 acceso aleatorio.
“Bandera temporal”: 0 normal, 1 eliminar al salir
del proceso.
“Banderas de cerradura”: 0 no bloqueado, distinto de
0 bloqueado.
“Longitud del registro”: número de bytes en un
registro.
“Posición de la llave”: ajuste de la llave dentro de
cada registro.
“Longitud de la llave”: número de bytes en el campo
llave.
“Tiempo de creación”: fecha y hora de creación del
archivo.
“Tiempo del último acceso”: fecha y hora del último
acceso al archivo.
“Tiempo de la última modificación”: fecha y hora de
la última modificación al archivo.
“Tamaño actual”: número de bytes en el archivo.
“Tamaño máximo”: tamaño máximo al que puede crecer
el archivo.
Las llamadas más comunes al sistema relacionadas con los
archivos son:
Create (crear): el archivo se crea sin datos.
Delete (eliminar): si el archivo ya no es necesario
debe eliminarse para liberar espacio en disco. Ciertos S. O. eliminan
automáticamente un archivo no utilizado durante “n” días.
Open (abrir): antes de utilizar un archivo, un
proceso debe abrirlo. La finalidad es permitir que el sistema traslade los
atributos y la lista de direcciones en disco a la memoria principal para un
rápido acceso en llamadas posteriores.
Close (cerrar): cuando concluyen los accesos, los
atributos y direcciones del disco ya no son necesarios, por lo que el archivo
debe cerrarse y liberar la tabla de espacio interno.
Read (leer): los datos se leen del archivo; quien
hace la llamada debe especificar la cantidad de datos necesarios y proporcionar
un buffer para colocarlos.
Write (escribir): los datos se escriben en el
archivo, en la posición actual. El tamaño del archivo puede aumentar (agregado
de registros) o no (actualización de registros).
Append (añadir): es una forma restringida de
“write”. Solo puede añadir datos al final del archivo.
Seek (buscar): especifica el punto donde
posicionarse. Cambia la posición del apuntador a la posición activa en cierto
lugar del archivo.
Get attributes (obtener atributos): permite a los
procesos obtener los atributos del archivo.
Set attributes (establecer atributos): algunos
atributos pueden ser determinados por el usuario y modificados luego de la
creación del archivo. La información relativa al modo de protección y la
mayoría de las banderas son un ejemplo obvio.
Rename (cambiar de nombre): permite modificar el
nombre de un archivo ya existente.
Archivos Mapeados a Memoria
Algunos S. O. permiten asociar los archivos con un
espacio de direcciones de un proceso en ejecución .
Se utilizan las llamadas al
sistema “map” y “unmap”:
“Map”: utiliza un nombre de archivo y una dirección
virtual y hace que el S. O. asocie al archivo con la dirección virtual en el
espacio de direcciones, por lo cual las lecturas o escrituras de las áreas de
memoria asociadas al archivo se efectúan también sobre el archivo mapeado.
“Unmap”: elimina los archivos del espacio de
direcciones y concluye la operación de asociación.
El mapeo de archivos elimina la necesidad de programar la
e / s directamente, facilitando la programación.
Los principales problemas relacionados son:
Imposibilidad de conocer a priori la longitud del archivo
de salida, el que podría superar a la memoria.
Dificultad para compartir los archivos mapeados evitando
inconsistencias, ya que las modificaciones hechas en las páginas no se verán
reflejadas en el disco hasta que dichas páginas sean eliminadas de la memoria.