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