Sistema de ficheros: Descripción lógica
Posted by Adrián Manso | Posted in Sistemas de ficheros | Posted on 8:15
0
Ficheros: concepto y estructura interna
• Fichero: datos + atributos
–usuario: colección de datos relacionados entre sí
–S.O.: unidad lógica de almacenamiento
• Datos:
– posible estructura interna
• secuencia de bytes
• secuencia de registros, ficheros indexados, de acceso directo...
• estructuras específicas (ejecutables, presentación, gráficos...)
– manejada en el S.O.
• facilita la programación de aplicaciones
• poca flexibilidad (tipos no soportados)
• interfaz e implementación del S.O. más complejas
– manejada por las aplicaciones
• ventajas e inconvenientes a la inversa que en S.O.
Ficheros: atributos y métodos de acceso
• Atributos de ficheros
– Nombre
– Identificador único (para el S.O.)
– Localización
– Tamaño
– Protección
– Información temporal
• Métodos de acceso
– secuencial
Mediante el acceso secuencial, los registros de un fichero son recorridos en el sentido que aparecen en el fichero. No es posible comenzar en un registro particular dentro del fichero sin haber leído los anteriores registros de forma secuencial.
– directo o aleatorio
Mediante el acceso directo, los registros son seleccionados por un número de registro. Usando esta identificación, los registros podrán ser leídos y escritos en cualquier orden. Si usamos el acceso directo tenemos las siguientes reglas:
– Todos los registros deben tener la misma longitud.
– No es posible borrar un registro.
– No se puede acceder a un fichero interno.
– proyectado en memoria (más adelante)
Ficheros: operaciones
• crear (nombre, atributos)
asignar espacio: todo, parte, nada
añadir entrada con nombre que apunte al fichero
establecer valor inicial de los atributos
•
borrar (nombre)
eliminar entrada del SF
liberar todo el espacio: cuando se cierre, inmediatamente
•
abrir (nombre, operaciones) -> identificador
buscar en el SF la información del fichero
comprobar que el proceso está autorizado a realizar las operaciones
crear entrada en la tabla de ficheros abiertos -> identificador
establecer posición inicial
devolver identificador
•
cerrar (id)
guardar información de la tabla de ficheros abiertos en disco
liberar memoria y entrada en la tabla de ficheros abiertos
• leer (id, destino, cantidad)
comprobar que el fichero está abierto para lectura
localizar los datos en el disco
transferir los datos del disco a la memoria principal
escribir (id, origen, cantidad)
comprobar que el fichero está abierto para escritura
localizar los datos en el disco
transferir los datos de la memoria principal al disco
establecer posición (id, nueva posición)
consultar los atributos (id. o nombre) -> atributos
modificar los atributos (id. o nombre, atributos)
Directorios
Directorio: nombre -> atributos, datos
Operaciones:
–
crear (directorio)
–
eliminar (directorio)
–
añadir (directorio, elemento)
–
eliminar (directorio, elemento)
–
buscar (directorio, elemento)
–
listar (directorio, patrón)
Estructuras de directorios:
– árbol: ficheros y directorios
–
grafo: ficheros, directorios y enlaces (alias y ficheros indirectos)
Estructura de directorio de árbol
Referencias:
–
absolutas: /home/carlos/so/pr1.sxw
–
directorio actual (o directorio de trabajo): pr1.sxw
–
lista de directorios de ejecutables (por ejemplo: PATH=/bin:/usr/bin): pine
Alias
(enlaces físicos, links, hard links)
Ficheros indirectos
(enlace simbólico, symbolic link, soft link)
ln un comando de Unix para vincular archivos o directorios entre sí. Básicamente, crea nuevos archivos con los nombres que usted especifique, y referencian a archivos ya existentes o directorios. Al ejecutar cualquier comando de Unix contra un enlace simbólico, se resuelve primero y el comando de Unix trabaja con ese archivo para producir los resultados deseados.
Dos formas de vincular los archivos y directorios
Hay dos métodos comunes para vincular un archivo o directorio en Unix: enlaces simbólicos o soft linking y alias o hard linking .
¿Qué es un enlace simbólico?
Enlace simbólico es un tipo especial de archivo de Unix, que hace referencia a otro fichero o directorio. Enlace simbólico contiene el nombre de otro archivo y no contiene los datos reales. Para la mayoría de comandos, los enlaces simbólicos parecen un archivo normal, pero todas las operaciones (como la lectura de un archivo) hacen referencia al fichero o directorio al que apunta.
Cuando se elimina un enlace simbólico, sólo se quita uno de los punteros a los archivos reales. Cuando se quita el archivo original de un enlace simbólico, sus datos se pierden. A pesar de que el enlace simbólico seguirá existiendo, apuntará a un archivo que no existe y por lo tanto será inútil (es probable que tenga que ser borrado también).
¿Qué es un alias?
Alias es un puntero a los datos físicos. En efecto, todos los archivos estándar son alias, porque en última instancia, crean una asociación entre un nombre de archivo y los datos físicos, que corresponden a cada archivo.
En Unix, puedes crear tantos alias a un archivo como desees, e incluso hay un contador especial para tales referencias. Cuando estás utilizando el formato largo de un comando ls, puedes ver este contador.
Cuando se quita un alias, se resta del contador de punteros a los datos almacenados. Si eliminas el archivo original, los datos no se perderán, siempre que haya al menos un alias apuntando hacia él.
Estructura de directorio de grafo
(con alias y ficheros indirectos)
Borrado
–
alias: contador con el número de alias
–
ficheros indirectos: no plantea problemas
Recorrido de la estructura de directorio
–
¿cómo recorrer cada nodo sólo una vez?
árboles: recorrido en anchura o en profundidad
ficheros indirectos: visitarlos; pero no seguirlos
alias: no permitir alias de directorios (salvo . y ..)
–
¿cómo detectar ciclos?
árboles: no hay
ficheros indirectos: número máximo de indirecciones
alias: no permitir alias de directorios (salvo . y ..)
Protección
Protección: ¿quién puede hacer qué con qué objeto?
– ¿quién? usuarios, grupos
– ¿qué? tipos de acceso
– ¿con qué? fichero, directorio, alias, fichero indirecto...
Funcionamiento habitual:
– abrir el objeto (incluye conjunto de operaciones a realizar):
se comprueba que el usuario tiene derecho a realizarlas todas
se añade una entrada a la tabla de ficheros abiertos asociada al BCP del proceso
– operaciones posteriores (lecturas escrituras)
se comprueba que la operación pertenece al conjunto declarado
no requiere accesos a disco (sólo el acceso a la tabla de ficheros
abiertos)
– consecuencia: la revocación de derechos no es inmediata
Tipos de acceso: alias y ficheros indirectos
Alias
Los del objeto a que hace referencia (habitualmente la protección hace
referencia al objeto, no al nombre)
Ficheros indirectos
problema: pueden apuntar a ficheros o directorios
solución: ignorar sus derechos de acceso
el objeto al que apuntan queda protegido por el camino que contienen
Listas de acceso
Lista de pares (usuario, derechos) asociada a cada objeto a proteger
Problemas:
– longitud de las listas
– dificultad para expresar derechos de acceso genéricos (ej: todos)
Solución:
–
grupos de usuarios grupo universal (todos los usuarios del sistema)
– listas de acceso condensadas (ej: Unix):
dueño del objeto, grupo del objeto, resto del mundo




