Sistema de ficheros: Descripción lógica

Posted by Adrián Manso | Posted in | 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)


Sistema de ficheros: Descripción lógica


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


Sistema de ficheros: Descripción lógica


Alias
(enlaces físicos, links, hard links)


Sistema de ficheros: Descripción lógica


Ficheros indirectos
(enlace simbólico, symbolic link, soft link)


Sistema de ficheros: Descripción lógica


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 ..)


Sistema de ficheros: Descripción lógica


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