Sistemas de Archivos
Sistemas de Archivos
Sistemas de Archivos
Los archivos deben ser persistentes, es decir que no deben verse afectados por
la creación o terminación de un proceso.
Los archivos son una colección de datos con nombre.
Pueden ser manipulados como una unidad por operaciones como: open, close,
create, destroy, copy, rename, list.
Los elementos de datos individuales dentro del archivo pueden ser manipulados
por operaciones como: read, write, update, insert, delete.
Se deben poder compartir los archivos de una manera cuidadosamente controlada [7,
Deitel].
Se debe poder estructurar los archivos de la manera más apropiada a cada aplicación.
Debe suministrar una “visión lógica” de los datos y de las funciones que serán
ejecutadas, en vez de una “visión física”.
El usuario no debe tener que preocuparse por:
o Los dispositivos particulares.
o Dónde serán almacenados los datos.
o El formato de los datos en los dispositivos.
o Los medios físicos de la transferencia de datos hacia y desde los
dispositivos.
El Sistema de Archivos
Un “Archivo” es un conjunto de registros relacionados [23, Tanenbaum].
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
Archivos
Se considerará el punto de vista del usuario.
Muchos S. O. utilizan nombres de archivo con dos partes, separadas por un punto:
Estructura de un Archivo
Los archivos se pueden estructurar de varias maneras, las más comunes son [23,
Tanenbaum]:
“Secuencia de bytes”:
o El archivo es una serie no estructurada de bytes.
o Posee máxima flexibilidad.
o El S. O. no ayuda pero tampoco estorba.
“Secuencia de registros”:
o El archivo es una secuencia de registros de longitud fija, cada uno con su
propia estructura interna.
“Árbol ”:
o El archivo consta de un árbol de registros, no necesariamente de la
misma longitud.
o Cada registro tiene un campo key (llave o clave) en una posición fija del
registro.
o El árbol se ordena mediante el campo de clave para permitir una rápida
Tipos de Archivos
Muchos S. O. soportan varios tipos de archivos, por ej.: archivos regulares, directorios,
archivos especiales de caracteres, archivos especiales de bloques, etc., donde [23,
Tanenbaum]:
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:
o Tienen relación con la e / s.
o Se utilizan para modelar dispositivos seriales de e / s (terminales,
impresoras, redes, etc.).
Los Archivos Especiales de Bloques se utilizan para modelar discos.
Acceso a un Archivo
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:
o Saltar registros.
o 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:
o Cada operación de lectura (read) da la posición en el archivo con la cual
iniciar.
o Una operación especial (seek) establece la posición de trabajo pudiendo
luego leerse el archivo secuencialmente.
Atributos de Archivo
Cada archivo tiene:
Su nombre y datos.
Elementos adicionales llamados atributos, que varían considerablemente de
sistema a sistema.
Directorios
Generalmente son utilizados por los S. O. para llevar un registro de los archivos [23,
Tanenbaum].
Una posibilidad es que el directorio contenga por cada archivo referenciado [7, Deitel]:
El nombre.
Sus atributos.
Las direcciones en disco donde se almacenan los datos.
Directorio único: el sistema tiene un solo directorio con todos los archivos de
todos los usuarios (ver Figura 4.1 [23, Tanenbaum]).
Un directorio por usuario: el sistema habilita un solo directorio por cada
usuario (ver Figura 4.2 [23, Tanenbaum]).
Un árbol de directorios por usuario: el sistema permite que cada usuario tenga
tantos directorios como necesite, respetando una jerarquía general (ver Figura
4.3 [23, Tanenbaum]).
Los principales métodos para nombres de los archivos son [23, Tanenbaum]:
Implantación de Archivos
El aspecto clave de la implantación del almacenamiento de archivos es el registro de los
bloques asociados a cada archivo [7, Deitel].
Tanenbaum]
Implantación de Directorios
Para abrir un archivo el S. O. utiliza información del directorio:
La principal función del sistema de directorios es asociar el nombre del archivo con la
información necesaria para localizar los datos.
Una posibilidad es almacenarlos en forma directa dentro del dato del directorio.
Otra posibilidad es almacenar los atributos en el nodo-i en vez de utilizar la
entrada del directorio.
Inicio: Fin:
Archivos Compartidos
El propio sistema de archivos es una gráfica dirigida acíclica en vez de un árbol [23,
Tanenbaum].
Se debe tener una copia de las direcciones en disco en el directorio que accede al
archivo compartido al enlazar el archivo.
Se debe evitar que los cambios hechos por un usuario a través de un directorio
no sean visibles por los demás usuarios, para lo que se consideraran dos
soluciones posibles.
Primer solución:
Los bloques del disco no se enlistan en los directorios, sino en una pequeña
estructura de datos asociada al propio archivo.
Los directorios apuntarían solo a esa pequeña estructura de datos, que podría ser
el nodo-i.
Segunda solución:
La creación de un enlace:
o No modifica la propiedad respecto de un archivo.
o Aumenta el contador de enlaces del nodo-i:
El sistema sabe el número de entradas de directorio que apuntan
en cierto momento al archivo.
Si el propietario inicial del archivo intenta eliminarlo, surge un problema para el
sistema:
o Si elimina el archivo y limpia el nodo-i, el directorio que enlazo al
archivo tendrá una entrada que apunta a un nodo-i no válido.
o Si el nodo-i se reasigna a otro archivo el enlace apuntará al archivo
incorrecto.
o El sistema:
Puede ver por medio del contador de enlaces en el nodo-i que el
archivo sigue utilizándose.
No puede localizar todas las entradas de directorio asociadas a
ese archivo para eliminarlas.
La solución podría ser:
o Eliminar la entrada del directorio inicialmente propietario del archivo.
o Dejar intacto el nodo-i:
Se daría el caso que el directorio que posee el enlace es el único
que posee una entrada de directorio para un archivo de otro
directorio, para el cual dicho archivo ya no existe.
Esto no ocurre con los enlaces simbólicos ya que solo el
propietario verdadero tiene un apuntador al nodo-i:
Los usuarios enlazados al archivo solo tienen nombres de
rutas de acceso y no apuntadores a nodo-i.
Cuando el propietario elimina un archivo, este se
destruye.
Inicio: Fin:
Existen dos estrategias generales para almacenar un archivo de “n” bytes [23,
Tanenbaum]:
Tiene el problema de que si un archivo crece será muy probable que deba
desplazarse en el disco, lo que puede afectar seriamente al rendimiento.
Dada la forma en que están organizados los bloques, el sector, la pista y el cilindro son
los candidatos obvios como unidades de asignación.
Si se tiene una unidad de asignación grande, como un cilindro, esto significa que cada
archivo, inclusive uno pequeño, ocupará todo un cilindro; con esto se desperdicia
espacio de almacenamiento en disco.
Si se utiliza una unidad de asignación pequeña, como un sector, implica que cada
archivo constará de muchos bloques; con esto su lectura generará muchas operaciones
de e / s afectando la performance.
Hay que recordar que el tiempo de lectura de un bloque de disco es la suma de los
tiempos de:
Búsqueda.
Demora rotacional.
Transferencia.
Mapa de bits:
Un disco con “n” bloques necesita un mapa de bits con “n” bits.
Los bloques libres se representa con “1” y los asignados con “0” (o viceversa).
Generalmente este método es preferible cuando existe espacio suficiente en la
memoria principal para contener completo el mapa de bits.
Disk quotas:
Para evitar que los usuarios se apropien de un espacio excesivo en disco, los S. O.
multiusuario proporcionan generalmente un mecanismo para establecer las cuotas en el
disco.
La idea es que:
Las pérdidas se pueden deber a problemas de hardware, software, hechos externos, etc.
La solución en hardware:
La solución en software:
Los respaldos pueden consistir en efectuar copias completas del contenido de los discos
(flexibles o rígidos).
Una estrategia de respaldo consiste en dividir los discos en áreas de datos y áreas de
respaldo, utilizándolas de a pares:
Se desperdicia la mitad del almacenamiento de datos en disco para respaldo.
Cada noche (o en el momento que se establezca), la parte de datos de la unidad 0
se copia a la parte de respaldo de la unidad 1 y viceversa.
Se obtiene una copia de respaldo periódicamente (por ej.: una vez por mes o por
semana), llamada copia total.
Se obtiene una copia diaria solo de aquellos archivos modificados desde la
última copia total; en estrategias mejoradas, se copian solo aquellos archivos
modificados desde la última vez que dichos archivos fueron copiados.
Se debe mantener en el disco información de control como una “lista de los
tiempos de copiado” de cada archivo, la que debe ser actualizada cada vez que
se obtienen copias de los archivos y cada vez que los archivos son modificados.
Puede requerir una gran cantidad de cintas de respaldo dedicadas a los respaldos
diarios entre respaldos completos.
Muchos sistemas de archivos leen bloques, los modifican y escriben en ellos después.
Bloques de nodos-i.
Bloques de directorios.
Bloques de la lista de bloques libres.
Si un bloque no aparece en ninguna de las tablas se trata de una falla llamada bloque
faltante:
No produce daños pero desperdicia espacio en disco.
Se soluciona añadiendo el bloque a la tabla de bloques libres.
Una falla muy grave es que el mismo bloque de datos aparezca referenciado dos o más
veces en la tabla de bloques en uso:
Otro error posible es que un bloque esté en la tabla de bloques en uso y en la tabla de
bloques libres:
Una posible falla es que el contador de enlaces sea mayor que el número de entradas
del directorio:
Cada nodo-i tiene un modo, pero algunos modos son válidos aunque extraños:
o Ej.: Se prohibe el acceso al propietario y todo su grupo, pero se permite a
los extraños leer, escribir y ejecutar el archivo.
o La verificación debería detectar e informar de estas situaciones.
Se debería informar como sospechosos aquellos directorios con excesivas
entradas, por ej., más de mil.
Inicio: Fin:
La técnica más común para reducir los accesos a disco es el bloque caché o buffer
caché[23, Tanenbaum]:
Uno de los algoritmos más comunes para la administración del caché es el siguiente:
La solución de algunos S. O. consiste en tener una llamada al sistema que fuerza una
actualización general a intervalos regulares de algunos segundos (por ej. 30).
Otra solución consiste en escribir los bloques modificados (del caché) al disco, tan
pronto como haya sido escrito (el caché):
Inicio: Fin:
Descriptor de Archivos
Inicio: Fin:
Seguridad
Los sistemas de archivos generalmente contienen información muy valiosa para sus
usuarios, razón por la que los sistemas de archivos deben protegerla [23, Tanenbaum].
El Ambiente de Seguridad
Se entenderá por seguridad a los problemas generales relativos a la garantía de que los
archivos no sean leídos o modificados por personal no autorizado; esto incluye aspectos
técnicos, de administración, legales y políticos.
La pérdida de datos.
Los intrusos.
Hay que tener en cuenta el tipo de intrusos contra los que se desea tener
protección.
Hay que ser consciente de que la cantidad de esfuerzo que se pone en la
seguridad y la protección depende claramente de quién se piensa sea el enemigo.
Fue liberado por Robert Tappan Morris el 02/11/88 e hizo que se bloquearan la
mayoría de los sistemas Sun y Vax de Internet (fue descubierto y condenado).
Constaba de un programa arrancador y del gusano propiamente dicho.
Utilizaba fallas se seguridad del Unix y de los programas Finger y Sendmail de
Internet.
Una forma de probar la seguridad de un sistema es contratar un grupo de expertos en
seguridad, conocido como el equipo tigre o equipo de penetración, cuyo objetivo es
intentar penetrar el sistema de seguridad para descubrir sus falencias y proponer
soluciones.
Inicio: Fin:
Virus
Inicio: Fin:
El diseño del sistema debe ser público, ya que pensar que el intruso no conocerá la
forma de funcionamiento del sistema es un engaño.
El estado predefinido debe ser el de no acceso, dado que los errores en donde se niega
el acceso válido se reportan más rápido que los errores en donde se permite el acceso no
autorizado.
El mecanismo de protección debe ser simple, uniforme e integrado hasta las capas más
bajas del sistema:
Los usuarios no deben sentir que la protección de sus archivos les implica
demasiado trabajo:
o Podrían dejar de proteger sus archivos.
o Se quejarían en caso de problemas.
o No aceptarían fácilmente su propia culpa.
Inicio: Fin:
Inicio: Fin:
Contraseñas
Si las contraseñas fueran de 7 caracteres elegidos al azar de los 95 caracteres ASCII que
se pueden imprimir:
Otra protección adicional consiste en que el sistema sugiera a los usuarios contraseñas
generadas según ciertos criterios; con esto se evita que el usuario elija contraseñas muy
sencillas.
Inicio: Fin:
Identificación Física
Inicio: Fin:
Medidas Preventivas
Inicio: Fin:
Mecanismos de Protección
Dominios de Protección
Muchos objetos del sistema necesitan protección, tales como la cpu, segmentos de
memoria, unidades de disco, terminales, impresoras, procesos, archivos, bases de datos,
etc. [23, Tanenbaum].
Una forma en la que el S. O. lleva un registro de los objetos que pertenecen a cada
dominio es mediante una matriz :
Inicio: Fin:
Las “matrices de protección” son muy grandes y con muchos lugares vacíos [23,
Tanen-baum]:
Inicio: Fin:
Posibilidades
La matriz de protección también puede dividirse por renglones [23, Tanenbaum]:
Se le asocia a cada proceso una lista de objetos a los cuales puede tener acceso.
Se le indican las operaciones permitidas en cada uno.
Esto define su dominio.
Un campo tipo:
o Indica el tipo del objeto.
Un campo derechos:
o Mapa de bits que indica las operaciones básicas permitidas en este tipo
de objeto.
Un campo objeto:
o Apuntador al propio objeto (por ej.: su número de nodo-i).
Las listas de posibilidades son a su vez objetos y se les puede apuntar desde otras listas
de posibilidades; esto facilita la existencia de subdominios compartidos.
Las listas de posibilidades o listas-c deben ser protegidas del manejo indebido por parte
del usuario.
Arquitectura marcada:
o Necesita un diseño de hardware en el que cada palabra de memoria tiene
un bit adicional:
Indica si la palabra contiene una posibilidad o no.
Solo puede ser modificado por el S. O.
Lista de posibilidades dentro del S. O.:
o Los procesos hacen referencia a las posibilidades mediante su número.
Lista de posibilidades cifrada dentro del espacio del usuario:
o Cada posibilidad está cifrada con una clave secreta desconocida por el
usuario.
o Muy adecuado para sistemas distribuidos.
Copiar posibilidad:
o Crear una nueva posibilidad para el mismo objeto.
Copiar objeto:
o Crear un duplicado del objeto con una nueva posibilidad.
Eliminar posibilidad:
o Eliminar un dato dentro de la lista-c sin afectar al objeto.
Destruir objeto:
o Eliminar en forma permanente un objeto y una posibilidad.
Muchos sistemas con posibilidades se organizan como una colección de módulos con
módulos administradores de tipos para cada tipo de objeto y entonces es esencial que el
módulo administrador de tipos pueda hacer más cosas con la posibilidad que un proceso
ordinario.
Los administradores de tipo obtienen una plantilla de derechos que les da más
derechos sobre un objeto de los que permitía la propia lista de posibilidades.
Inicio: Fin:
Modelos de Protección
Crear objeto.
Eliminar objeto.
Crear dominio.
Eliminar dominio.
Insertar derecho.
Eliminar derecho.
Inicio: Fin:
Una matriz de control de acceso puede llegar a ser tan grande que resulte impráctico
mantenerla [7, Deitel].
Una técnica que requiere menos espacio es controlar el acceso a varias clases de
usuarios.
Un ejemplo de esquema de clasificación es el siguiente:
Propietario:
o Suele ser el usuario que creó el archivo.
Usuario especificado:
o El propietario especifica quién más puede usar el archivo.
Grupo o proyecto:
o Los diferentes miembros de un grupo de trabajo sobre un proyecto,
acceden a los diferentes archivos relacionados con el proyecto.
Público:
o Un archivo público puede ser accedido por cualquier usuario de la
computadora.
o Generalmente permite leer o ejecutar pero no escribir sobre el archivo.
Inicio: Fin:
Respaldo y Recuperación
Una técnica muy usada para asegurar la disponibilidad de los datos es realizar
respaldos periódicos:
Hacer con regularidad una o más copias de los archivos y colocarlas en lugar
seguro.
Todas las actualizaciones realizadas luego del último respaldo pueden perderse.
Otra técnica es pasar todas las transacciones a un archivo, copiándolas en otro disco:
Se debe tener presente que es muy difícil garantizar una seguridad absoluta de los
archivos.