22.11.2014 Views

Sistemas de archivos

Sistemas de archivos

Sistemas de archivos

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

6 <strong>Sistemas</strong> <strong>de</strong> Archivos<br />

• Conceptos generales<br />

• Archivos<br />

• Directorios<br />

• Semánticas <strong>de</strong> consistencia<br />

SOI<br />

1


Persistencia <strong>de</strong> datos<br />

SOI<br />

Los sistemas <strong>de</strong> <strong>archivos</strong> implementan el<br />

almacenamiento persistente - los datos<br />

creados por un programa persisten a la<br />

finalización <strong>de</strong>l mismo.<br />

Los sistemas <strong>de</strong> <strong>archivos</strong> suministran una<br />

versión mejorada <strong>de</strong> los dispositivos <strong>de</strong>l<br />

almacenamiento (discos, cintas, CD-ROM …)<br />

Existen sistemas <strong>de</strong> computación especiales<br />

que no tienen, o no necesitan, sistema <strong>de</strong><br />

<strong>archivos</strong>. P. ej. un SO <strong>de</strong> un satélite, o en un<br />

microondas.<br />

2


Abstracciones<br />

SOI<br />

El SO suele implementar cuatro<br />

abstracciones básicas relativas al<br />

almacenamiento permanente:<br />

Archivo<br />

Directorio<br />

Descriptor <strong>de</strong> archivo<br />

Sistema <strong>de</strong> <strong>archivos</strong><br />

En este tema, vamos a <strong>de</strong>finir cada una <strong>de</strong><br />

ellas, y como se implementan <strong>de</strong> forma<br />

genérica.<br />

3


Concepto <strong>de</strong> archivo<br />

SOI<br />

Un archivo es una colección <strong>de</strong><br />

información relacionada con nombre que<br />

se guarda en almacenamiento secundario.<br />

Po<strong>de</strong>mos verlos como un espacio <strong>de</strong><br />

direcciones lógicas contiguas.<br />

Un archivo pue<strong>de</strong>:<br />

Tener cierta estructura interna, p.ej,<br />

registros, campos, etc.<br />

No tener estructura. En cuyo caso, si es<br />

necesaria, se simula por el SO o la<br />

aplicación.<br />

4


Funciones <strong>de</strong> la<br />

gestión <strong>de</strong> <strong>archivos</strong><br />

SOI<br />

Gestión <strong>de</strong> disco - cómo organizar bloques<br />

<strong>de</strong> disco en <strong>archivos</strong>.<br />

Designación (naming) - nombres <strong>de</strong><br />

<strong>archivos</strong> dados por el usuario.<br />

Protección - mantener segura la<br />

información.<br />

Fiabilidad/durabilidad - cuando cae el<br />

sistema, se mantiene información en disco.<br />

Control <strong>de</strong> concurrencia o bloqueo <strong>de</strong><br />

<strong>archivos</strong>- accesos concurrentes al mismo<br />

archivo.<br />

5


Servicios <strong>de</strong> <strong>archivos</strong><br />

SOI<br />

Po<strong>de</strong>mos agrupar las funciones anteriores:<br />

Servicio <strong>de</strong> almacenamiento permanente<br />

- la abstracción archivo actúa como un<br />

contenedor <strong>de</strong> datos. Permite al usuario<br />

crear, borrar, …, <strong>archivos</strong> y controlar la<br />

compartición y el acceso.<br />

Servicio <strong>de</strong> directorio (gestión <strong>de</strong> datos) -<br />

la abstracción sistema <strong>de</strong> <strong>archivos</strong><br />

permite organizar, manipular, y acce<strong>de</strong>r<br />

a diferentes <strong>archivos</strong>. Suministra un<br />

sistema <strong>de</strong> <strong>de</strong>signación lógico.<br />

6


Solicitud <strong>de</strong> servicio<br />

Pasos:<br />

Nombre I<strong>de</strong>ntificador<br />

<strong>de</strong> archivo<br />

1º<br />

2º 3º 4º<br />

Servicio <strong>de</strong><br />

directorio<br />

Información<br />

solicitada<br />

Cerrar<br />

5º<br />

Servicio <strong>de</strong><br />

almacenamiento<br />

Cliente<br />

SO<br />

Manejador <strong>de</strong> disco<br />

Distribución<br />

Disco<br />

SOI<br />

7


Pasos <strong>de</strong> la solicitud<br />

SOI<br />

Solicitud <strong>de</strong> apertura dado su nombre. El SO<br />

realiza un control <strong>de</strong> acceso (el cliente esta<br />

autorizado a usarlo), y la traducción <strong>de</strong><br />

nombre <strong>de</strong> usuario al nombre en el SO.<br />

El SO <strong>de</strong>vuelve un i<strong>de</strong>ntificador <strong>de</strong> archivo,<br />

<strong>de</strong>scriptor, para manipulaciones posteriores.<br />

El usuario lo manipula con las operaciones<br />

read, write, lseek, close, etc., pasando como<br />

argumento el <strong>de</strong>scriptor <strong>de</strong> archivo.<br />

El sistema suministra la información <strong>de</strong>seada<br />

5.Cerramos el <strong>archivos</strong> al terminar.<br />

8


Descriptor <strong>de</strong> archivo<br />

Po<strong>de</strong>mos verlo como un puntero<br />

“protegido” que nos da acceso a una<br />

sesión <strong>de</strong> trabajo sobre un archivo.<br />

Po<strong>de</strong>mos abrir un mismo archivo <strong>de</strong> varias<br />

formas (lectura, escritura,<br />

lectura/escritura), cada sesión se aísla<br />

permitiendo el acceso a ella sólo a través<br />

<strong>de</strong>l <strong>de</strong>scriptor (handle en la terminología<br />

Microsoft).<br />

SOI<br />

9


Atributos <strong>de</strong> archivo<br />

Metadatos - información que mantiene el SO<br />

para <strong>de</strong>scribir el archivo. Suelen contener:<br />

Nombre - nombre <strong>de</strong> usuario<br />

Tipo - caracteriza el contenido <strong>de</strong>l archivo<br />

Ubicación – su localización en el dispositivo<br />

Tamaño - tamaño actual (bytes, bloques, ...)<br />

Protección - información <strong>de</strong> control <strong>de</strong><br />

acceso: quién y qué pue<strong>de</strong> hacer con él<br />

Tiempos <strong>de</strong> creación, modificación, último<br />

acceso – por seguridad y vigilancia <strong>de</strong> uso.<br />

SOI<br />

10


Atributos: ejemplos<br />

SOI<br />

11


Archivos: operaciones<br />

y métodos <strong>de</strong> acceso<br />

Operaciones<br />

create<br />

write<br />

read<br />

lseek<br />

<strong>de</strong>lete<br />

truncate<br />

open<br />

close<br />

. . .<br />

Métodos <strong>de</strong> acceso<br />

Secuencial<br />

Aleatorio o<br />

directo<br />

In<strong>de</strong>xado<br />

Archivos<br />

proyectados en<br />

memoria<br />

SOI<br />

12


Los directorios<br />

Un directorio es un objeto que relaciona<br />

nombres <strong>de</strong> usuario <strong>de</strong> <strong>archivos</strong> con el<br />

nombre interno <strong>de</strong>l archivo en el SO.<br />

Pue<strong>de</strong>n implementarse como:<br />

Archivos especiales<br />

<strong>archivos</strong> normales.<br />

Tanto la estructura directorio como los<br />

<strong>archivos</strong> resi<strong>de</strong>n en disco.<br />

SOI<br />

13


Organización <strong>de</strong>l<br />

directorio<br />

SOI<br />

La organización <strong>de</strong> directorios permite obtener<br />

Eficiencia - localización rápida <strong>de</strong> un archivo<br />

Designación - conveniente para usuarios<br />

Dos usuarios pue<strong>de</strong>n tener el mismo<br />

nombre para dos <strong>archivos</strong> diferentes<br />

El mismo archivo pue<strong>de</strong> tener varios<br />

nombres<br />

Agrupación - agrupar lógicamente <strong>archivos</strong><br />

por propieda<strong>de</strong>s, p. ej. programas C, juegos,<br />

etc.<br />

14


Directorio <strong>de</strong> dispositivo<br />

Un disco se suele estructurar en<br />

particiones o volúmenes, que po<strong>de</strong>mos<br />

ver como dispositivos virtuales<br />

Los metadatos <strong>de</strong> todos los <strong>archivos</strong> <strong>de</strong><br />

la partición se almacena en el directorio<br />

<strong>de</strong> dispositivo o tabla <strong>de</strong> volumen.<br />

P. ej. en Unix esta información se<br />

almacena en el superbloque; en<br />

Windows NT, se almacena en el MFT<br />

(Master File Table).<br />

SOI<br />

15


Operaciones sobre<br />

directorios<br />

Los po<strong>de</strong>mos ver como un tipo <strong>de</strong> dato<br />

abstracto con las operaciones:<br />

Búsqueda <strong>de</strong> un archivo Crear<br />

Creación <strong>de</strong> un archivo Borrar<br />

Borrado <strong>de</strong> un archivo …<br />

Lista un directorio<br />

Renombrado <strong>de</strong> <strong>archivos</strong><br />

Atravesar el sistema <strong>de</strong> <strong>archivos</strong>, ....<br />

Directorio<br />

archivo1 …<br />

archivo2 …<br />

SOI<br />

16


Estructuras <strong>de</strong> directorios<br />

SOI<br />

Estructura <strong>de</strong> un sólo nivel - un directorio<br />

para todos los usuarios. P. ej. CP/M.<br />

Problemas <strong>de</strong> <strong>de</strong>signación y agrupación<br />

Estructura <strong>de</strong> dos niveles - un directorio<br />

separado para cada usuario<br />

Búsqueda eficiente, sin capacidad <strong>de</strong><br />

agrupar<br />

Estructura <strong>de</strong> árbol –<br />

Búsqueda eficiente, capacidad <strong>de</strong><br />

agrupación<br />

El concepto <strong>de</strong> directorio actual permite<br />

utilizar nombres relativos.<br />

17


Estructura grafo acíclico<br />

SOI<br />

Permite la existencia<br />

<strong>de</strong> subdirectorios y/o<br />

<strong>archivos</strong><br />

compartidos, es<br />

<strong>de</strong>cir, dos o más<br />

nombres para un<br />

mismo objeto.<br />

Más flexible, pero<br />

más compleja.<br />

La compartición se<br />

suele implementar a<br />

través <strong>de</strong> enlaces.<br />

Dir2<br />

Arch2<br />

Dir1<br />

Arch1<br />

Arch3<br />

Dir3<br />

Arch4<br />

18


Estructura <strong>de</strong> grafo general<br />

SOI<br />

Más general pero tiene<br />

problemas:<br />

Po<strong>de</strong>mos generar<br />

ciclos infinitos en el<br />

recorrido <strong>de</strong>l<br />

mismo.<br />

Debemos emplear<br />

un recolector <strong>de</strong><br />

basura para ver<br />

cuando se pue<strong>de</strong><br />

borrar un archivo.<br />

Dir2<br />

Arch2<br />

Dir1<br />

Arch1<br />

Arch3<br />

Dir3<br />

Arch4<br />

19


Enlaces duros<br />

Un enlace duro (hard link) es un puntero<br />

(nombre) hacia un archivo.<br />

Limitados a un único sistema <strong>de</strong> <strong>archivos</strong><br />

- el puntero es único en el mismo sistema<br />

<strong>de</strong> <strong>archivos</strong>.<br />

En Unix:<br />

Directorio 2<br />

Directorio 1<br />

Unnombre 25<br />

Inodo<br />

25<br />

Otronombre 25 archivo<br />

SOI<br />

20


Enlace duro: ejemplo<br />

SOI<br />

21


Enlaces simbólicos<br />

Es un archivo especial cuyo contenido es el<br />

nombre absoluto <strong>de</strong>l archivo al que apunta.<br />

Po<strong>de</strong>mos atravesar<br />

diferentes sistemas<br />

<strong>de</strong> <strong>archivos</strong><br />

Problema: si borramos<br />

el puntero se queda<br />

“colgado”.<br />

Directorio 1<br />

Unnombre 30<br />

Directorio 2<br />

Otronombre 25<br />

30<br />

25<br />

datos<br />

archivo<br />

Directorio2/Otronombre<br />

SOI<br />

22


Enlaces simbólicos:<br />

ejemplo<br />

SOI<br />

23


SOI<br />

Borrado <strong>de</strong> <strong>archivos</strong><br />

compartidos<br />

¿ Cuando po<strong>de</strong>mos <strong>de</strong>sasignar el espacio<br />

asignado a estos <strong>archivos</strong> cuando se borran ?<br />

Para enlaces simbólicos, simplemente<br />

borrar el archivo ⇒ punteros colgados<br />

(Cualquier acceso posterior se trata como<br />

acceso a nombre ilegal)<br />

Asociar un contador <strong>de</strong> referencias. La<br />

creación/borrado, <strong>de</strong> un enlace<br />

incrementa/<strong>de</strong>crementa, el contador. El<br />

archivo se borra cuando contador=0. P.<br />

ej. contador enlaces duros en UNIX.<br />

24


SOI<br />

Estructura general <strong>de</strong><br />

directorios<br />

La principal ventaja <strong>de</strong> un grafo acíclico<br />

es la relativa simplicidad <strong>de</strong> los<br />

algoritmos para atravesarlo y ver cuando<br />

no hay más referencias a un archivo. Por<br />

ello <strong>de</strong>bemos evitar los ciclos.<br />

Para garantizar la no existencia <strong>de</strong> ciclos:<br />

Permitir sólo enlaces a <strong>archivos</strong>, no a<br />

directorios<br />

Al añadir un enlace, activar un<br />

algoritmo <strong>de</strong> <strong>de</strong>tección <strong>de</strong> ciclos para<br />

<strong>de</strong>terminar si todo es correcto.<br />

25


Protección<br />

El propietario / creador <strong>de</strong> un archivo<br />

<strong>de</strong>be ser capaz <strong>de</strong> controlar:<br />

qué pue<strong>de</strong> hacerse con él<br />

quién pue<strong>de</strong> hacerlo<br />

Tipos <strong>de</strong> accesos:<br />

lectura<br />

escritura<br />

ejecución<br />

añadir<br />

borrar<br />

listar …<br />

La veremos en <strong>Sistemas</strong> Operativos II.<br />

SOI<br />

26


Semánticas <strong>de</strong><br />

consistencia<br />

SOI<br />

Si un usuario modifica un archivo, ¿cuando<br />

es visible esta modificación por otro usuario?<br />

Semántica UNIX: atomicidad a nivel <strong>de</strong><br />

operaciones write/read.<br />

Semántica <strong>de</strong> sesión: atomicidad a nivel <strong>de</strong><br />

sesión (accesos realizados entre las<br />

operaciones open y close). P. ej. AFS.<br />

Semántica <strong>de</strong> <strong>archivos</strong> compartidos<br />

inmutables: un archivo compartido, no<br />

pue<strong>de</strong> ser modificado. Utilizada en<br />

sistemas distribuidos.<br />

27

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!