02.03.2014 Views

SO-mod 10-Sistemas de Archivos-Interfaces.pdf - Facultad de ...

SO-mod 10-Sistemas de Archivos-Interfaces.pdf - Facultad de ...

SO-mod 10-Sistemas de Archivos-Interfaces.pdf - Facultad de ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

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

Interfaz<br />

Módulo <strong>10</strong><br />

Departamento <strong>de</strong> Informática<br />

<strong>Facultad</strong> <strong>de</strong> Ingeniería<br />

Universidad Nacional <strong>de</strong> la Patagonia “San Juan Bosco”<br />

Module <strong>10</strong>: Sistema <strong>de</strong> <strong>Archivos</strong>: Interfaz<br />

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

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

Estructura <strong>de</strong> Directorio<br />

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

<strong>Archivos</strong> Compartidos<br />

Protección<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong>


Objetivos<br />

Explicar la función <strong>de</strong>l sistema <strong>de</strong> archivos<br />

Describir las interfaces al sistema <strong>de</strong> archivos<br />

Discutir los compromisos en el diseño <strong>de</strong> sistemas <strong>de</strong><br />

archivos, incluyendo métodos <strong>de</strong> acceso, archivos<br />

compartidos, locking <strong>de</strong> archivos y estructuras <strong>de</strong><br />

directorios<br />

Explorar la protección en los sistemas <strong>de</strong> archivos<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong><br />

Concepto <strong>de</strong> Archivo<br />

Espacio <strong>de</strong> direcciones lógicas contiguas<br />

Tipos:<br />

Datos<br />

numérico<br />

caracter<br />

binario<br />

Programa<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong>


Estructura <strong>de</strong> Archivo<br />

Ninguna – secuencia <strong>de</strong> palabras, bytes<br />

Estructura <strong>de</strong> registros simple<br />

Líneas<br />

Longitud fija<br />

Longitud variable<br />

Estructuras Complejas<br />

Documento con formato<br />

Archivo <strong>de</strong> carga reubicable<br />

Se pue<strong>de</strong>n simular estos dos últimos puntos con el primer<br />

método por la inserción <strong>de</strong> caracteres <strong>de</strong> control apropriados.<br />

Lo <strong>de</strong>ci<strong>de</strong>:<br />

El sistema operativo<br />

El programa<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong><br />

Atributos <strong>de</strong> Archivo<br />

Nombre – mantiene información en forma legible.<br />

Tipo – necesario para sistemas que soportan diferentes<br />

tipos.<br />

Locación – puntero a la locación <strong>de</strong>l archivo en el<br />

dispositivo.<br />

Tamaño – tamaño corriente <strong>de</strong>l archivo.<br />

Protección – controla quien pue<strong>de</strong> leer, escribir,<br />

ejecutar.<br />

Tiempo, fecha, e i<strong>de</strong>ntificación <strong>de</strong> usuario – datos<br />

para protección, seguridad, visualización <strong>de</strong> uso.<br />

La información sobre los archivos es mantenida en la<br />

estructura <strong>de</strong> directorio, la que es mantenida en el disco.<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong>


Operaciones sobre <strong>Archivos</strong><br />

creación<br />

escritura<br />

lectura<br />

reposición puntero corriente<br />

borrado<br />

truncado<br />

open(F i ) – busca la estructura <strong>de</strong> directorio en el disco<br />

para la entrada F i , y mueve el contenido <strong>de</strong> la entrada a<br />

la memoria.<br />

close (F i ) – mueve el contenido <strong>de</strong> la entrada F i en la<br />

memoria a la estructura <strong>de</strong>l directorio en el disco.<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong><br />

<strong>Archivos</strong> Abiertos<br />

<br />

Son necesarios varios datos para administrar los<br />

archivos abiertos:<br />

Puntero corriente <strong>de</strong>l archivo: punteros a la última<br />

locación read/write, hay un puntero por proceso que<br />

tiene el archivo abierto.<br />

Cuenta <strong>de</strong> archivo abierto: cuenta el número <strong>de</strong><br />

veces que el archivo es abierto, permite remover<br />

datos <strong>de</strong> la tabla <strong>de</strong> archivos abiertos cuando el<br />

último proceso lo cierra.<br />

Locación en el disco <strong>de</strong>l archivo: información <strong>de</strong><br />

acceso a datos en el caché.<br />

Derechos <strong>de</strong> acceso: información <strong>de</strong>l <strong>mod</strong>o <strong>de</strong><br />

acceso por proceso.<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong>


Locking <strong>de</strong> <strong>Archivos</strong> Abiertos<br />

Provisto por algunos sistemas operativos y sistemas <strong>de</strong><br />

archivos<br />

Media en el acceso al archivo<br />

Mandatorio flexible:<br />

Mandatorio – el acceso es rechazado <strong>de</strong>pendiendo<br />

<strong>de</strong> los locks que se tienen y requeridos<br />

Flexible – los procesos verifican el estado <strong>de</strong> los<br />

locks y <strong>de</strong>ci<strong>de</strong> que hacer<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong><br />

Tipos <strong>de</strong> Archivo – nombre, extension<br />

Tipo <strong>de</strong> Archivo Extensión usual Función<br />

Ejecutable<br />

Objeto<br />

Código fuente<br />

Lote<br />

exe, com, bin o ninguno<br />

obj, o<br />

c, p, pas, l77,asm, a<br />

bat, sh<br />

programa leng. máquina listo<br />

para correr<br />

compilado, leng máquina, no<br />

enlazado<br />

código fuente en varios<br />

lenguajes<br />

comandos al intérprete <strong>de</strong><br />

comandos<br />

Texto txt, doc doc con datos textuales<br />

Procesa. palabra wp, tex, rtf , doc, .... formatos <strong>de</strong> proc <strong>de</strong> palab<br />

Librería lib, a librerías <strong>de</strong> rutinas<br />

Imp o vista ps, dvi, gif ASCII o archivos binarios<br />

Archivo<br />

Multimedia<br />

arc, zip, tar<br />

mpeg, mov, rm, avi, mp3<br />

arch relacionados agrupados<br />

en un solo archivo<br />

arch binarios conteniendo<br />

audio o info A/V<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong>


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

Acceso Secuencial<br />

Acceso Directo<br />

n = número relativo <strong>de</strong> bloque<br />

read next<br />

write next<br />

reset<br />

no read after last write<br />

read n<br />

write n<br />

position to n<br />

read next<br />

write next<br />

rewrite n<br />

(rewrite)<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong><br />

Archivo <strong>de</strong> Acceso Secuencial<br />

comienzo<br />

posición corriente<br />

fin<br />

rebobinar<br />

read o write<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong>


Simulación <strong>de</strong>l Acceso Secuencial en un<br />

Archivo <strong>de</strong> Acceso Directo<br />

acceso secuencial<br />

implementación por acceso directo<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong><br />

Ejemplo <strong>de</strong> Archivo In<strong>de</strong>xado y Relativo<br />

último<br />

nombre<br />

número <strong>de</strong><br />

registro lógico<br />

archivo índice<br />

archivo relativo<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong>


Estructura <strong>de</strong> Directorio<br />

Una colección <strong>de</strong> nodos conteniendo información sobre todos los<br />

archivos.<br />

Directorio<br />

<strong>Archivos</strong><br />

F 1 F 2<br />

F 3<br />

F 4<br />

F n<br />

La estructura <strong>de</strong> directorio y los archivos resi<strong>de</strong>n en el disco.<br />

El respaldo <strong>de</strong> estas dos estructuras se mantienen en cintas.<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong><br />

Una Organización Típica <strong>de</strong> un sistema <strong>de</strong> <strong>Archivos</strong><br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong>


Información en un Directorio <strong>de</strong> Dispositivo<br />

Nombre<br />

Tipo<br />

Dirección<br />

Longitud corriente<br />

Máxima longitud<br />

Fecha <strong>de</strong>l último acceso<br />

Fecha <strong>de</strong> la última actualización (para vuelco)<br />

ID <strong>de</strong>l dueño<br />

Información <strong>de</strong> protección<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong><br />

Operaciones sobre un Directorio<br />

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

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

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

Listado <strong>de</strong> un directorio<br />

Renombrado <strong>de</strong> un archivo<br />

Atravesar un sistema <strong>de</strong> archivos<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong>


Organice el Directorio (Logicamente) para Obtener:<br />

Eficiencia – localizar un archivo rapidamente.<br />

Nombres – conveniente para los usuarios.<br />

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

diferentes archivos.<br />

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

diferentes.<br />

Agrupamiento – agrupamiento lógico <strong>de</strong> archivos por<br />

propieda<strong>de</strong>s, (p.e., todos los programas Pascal, todos<br />

los juegos, …)<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong><br />

Estructura Arbórea <strong>de</strong> Directorios<br />

X<br />

/X/Y/cat<br />

Y<br />

cat<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong>


Estructura Arbórea <strong>de</strong> Directorios (Cont.)<br />

Búsqueda eficiente<br />

Capacidad <strong>de</strong> agrupamiento<br />

Directorio corriente (directorio <strong>de</strong> trabajo)<br />

cd /spell/mail/prog<br />

type list<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong><br />

Estructura Arbórea <strong>de</strong> Directorios (Cont.)<br />

Camino <strong>de</strong> nombres absoluto o relativo<br />

La creación <strong>de</strong> un nuevo archivo se hace en el directorio corriente.<br />

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

rm <br />

La creación <strong>de</strong> un nuevo subdirectorio se hace en el directorio<br />

corriente.<br />

mkdir <br />

Ejemplo: si el directorio corriente es /spell/mail<br />

mkdir count ⇒ /spell/mail/count<br />

Borrar “mail” ⇒ borrar el subárbol entero cuya raíz es “mail”.<br />

mail<br />

prog<br />

copy prt exp count<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong>


Grafo Acíclico <strong>de</strong> Directorios<br />

Pue<strong>de</strong> compartir subdirectorios y archivos.<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong><br />

Grafo Acíclico <strong>de</strong> Directorios (Cont.)<br />

Dos nombres diferentes (alias)<br />

Si dict borra list ⇒ quedan punteros solitarios.<br />

Soluciones:<br />

Punteros hacia atrás, así se pue<strong>de</strong>n borrar todos los<br />

punteros.<br />

Los registros <strong>de</strong> tamaño variable son un problema.<br />

Punteros hacia atrás usando una organización “ca<strong>de</strong>na<br />

margarita”.<br />

Contador <strong>de</strong> entradas al archivo.<br />

Nueva entrada en el directorio<br />

Link – Otro nombre (puntero) a un archivo existente<br />

Resuelva el link – siga el puntero hasta localizar el<br />

archivo<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong>


Grafo Acíclico <strong>de</strong> Directorios (Cont.)<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong><br />

Grafo General <strong>de</strong> Directorio<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong>


Grafo General <strong>de</strong> Directorio (Cont.)<br />

¿Cómo se garantiza que no haya ciclos?<br />

Permita enlaces (links) a archivos y no a<br />

sudirectorios.<br />

“Garbage collection”.<br />

Cada vez que se agrega un nuevo enlace (link) se<br />

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

<strong>de</strong>terminar si está bien.<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong><br />

Montaje <strong>de</strong> Sistema <strong>de</strong> <strong>Archivos</strong> (Mounting)<br />

Un sistema <strong>de</strong> archivos <strong>de</strong>be ser montado antes <strong>de</strong><br />

que pueda ser accedido.<br />

Un sistema <strong>de</strong> archivos sin montar (siguientes sli<strong>de</strong>s)<br />

es montado en un punto <strong>de</strong> montaje (mount point).<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong>


<strong>Archivos</strong> Compartidos<br />

Es <strong>de</strong>seable compartir archivos en un sistema<br />

multiusuario.<br />

La acción <strong>de</strong> compartir <strong>de</strong>be ser hecha por medio <strong>de</strong><br />

un esquema <strong>de</strong> protección.<br />

En sistemas distribuidos los archivos pue<strong>de</strong>n ser<br />

compartidos a través <strong>de</strong> la red.<br />

Network File System (NFS) es un método común <strong>de</strong><br />

compartir archivos distribuidos.<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong><br />

<strong>Archivos</strong> Compartidos – Múltiples Usuarios<br />

n Los User IDs i<strong>de</strong>ntifyican usuarios, admiten<br />

permisos y protección por usuarios<br />

n Los Group IDs admite agrupar usuarios en<br />

grupos, permitiendo asignar al mismo <strong>de</strong>rechos<br />

<strong>de</strong> acceso<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong>


<strong>Archivos</strong> Compartidos – Modos <strong>de</strong> Fallas<br />

Los sistemas <strong>de</strong> archivos remotos agregan nuevos<br />

<strong>mod</strong>os <strong>de</strong> fallas, <strong>de</strong>bido a las fallas <strong>de</strong> las re<strong>de</strong>s,<br />

fallas en los servidores, etc<br />

La recuperación <strong>de</strong> fallas pue<strong>de</strong> involucrar<br />

información <strong>de</strong> estado acerca <strong>de</strong>l status <strong>de</strong> cada<br />

requerimiento remoto.<br />

Protocolos sin estados como NFS incluyen toada la<br />

información en cada petición, permitiendo fácil<br />

recuperación pero menos seguridad<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong><br />

<strong>Archivos</strong> Compartidos – Semántica <strong>de</strong> Consistencia<br />

La semántica <strong>de</strong> consistencia especifica como múltiples usuarios<br />

pue<strong>de</strong>n acce<strong>de</strong>r a un archivo compartido simultaneamente<br />

Similar a los algoritmos <strong>de</strong> sincronización<br />

Tien<strong>de</strong>n a ser menos complejos <strong>de</strong>bido a las E/S a disco la<br />

latencia <strong>de</strong> la red (sistemas <strong>de</strong> archivos remotos)<br />

Andrew File System (AFS) implementa una semántica muy<br />

compleja para compartir archivos<br />

El sistema <strong>de</strong> archivos Unix (UFS) implementa:<br />

Las escrituras sobre un archivo abierto son visibles<br />

inmediatamente a los otros usuarios que comparten el mismo<br />

archivo.<br />

El puntero a archivos compartidos permite que múltiples<br />

usuarios lean y escriban concurrentemente<br />

AFS tiene una semántica <strong>de</strong> sesión<br />

Las escrituras son solo visibles solo <strong>de</strong>spués que la sesión<br />

termina<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong>


Protección<br />

El creador/dueño <strong>de</strong>l archivo <strong>de</strong>bería po<strong>de</strong>r controlar:<br />

que cosas pue<strong>de</strong>n hacerse<br />

por quién<br />

Tipos <strong>de</strong> acceso<br />

Read<br />

Write<br />

Execute<br />

Append<br />

Delete<br />

List<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong><br />

Listas <strong>de</strong> Acceso y Grupos<br />

Modos <strong>de</strong> acceso: read, write, execute<br />

Tres clases <strong>de</strong> usuarios<br />

RWX<br />

a) acceso dueño 7 ⇒ 1 1 1<br />

b) acceso grupos 6 ⇒ 1 1 0<br />

c) acceso público 1 ⇒ 0 0 1<br />

Pedir al administrador crear un grupo (único nombre), sea G, y<br />

adicionar algún usuario al mismo.<br />

Para un archivo particular (sea game) o subdirectorio, <strong>de</strong>finir un<br />

acceso apropriado.<br />

dueño grupo público<br />

ch<strong>mod</strong> 761 game<br />

Agregar un grupo a un archivo<br />

chgrp G game<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong>


Manejo <strong>de</strong> Listas <strong>de</strong> Acceso en Windows XP<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong><br />

Un ejemplo <strong>de</strong> un Listado <strong>de</strong> Directorio en UNIX<br />

JRA © 20<strong>10</strong><br />

<strong>Sistemas</strong> Operativos – <strong>Sistemas</strong> <strong>de</strong> <strong>Archivos</strong>: <strong>Interfaces</strong>


Fin<br />

Módulo <strong>10</strong><br />

Departamento <strong>de</strong> Informática<br />

<strong>Facultad</strong> <strong>de</strong> Ingeniería<br />

Universidad Nacional <strong>de</strong> la Patagonia “San Juan Bosco”

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

Saved successfully!

Ooh no, something went wrong!