Vous êtes sur la page 1sur 8

Sistemas Operativos. Universidad Carlos III de Madrid.

(c) rea de Arquitectura y Tecnologa de Computadores

Objetivos
2

SISTEMAS OPERATIVOS: SISTEMAS DE FICHEROS


Directorios

Conocer los conceptos de fichero y directorio as como sus caractersticas. Utilizar los servicios de gestin de Ficheros y directorios ofrecidos por el sistema operativo. Comprender la estructura de un sistema de ficheros. Comprender los mecanismos en los que se apoya un servidor de ficheros y aplicarlos a ejercicios sencillos.
Sistemas Operativos - Curso 2008/2009

Contenido
3 4

Organizacin de ficheros

Directorios. Alternativas de estructura. Interpretacin de nombres. Manipulacin de directorios.

Un sistema de ficheros puede almacenar gran cantidad de ficheros. Se necesita algn mecanismo para organizar y localizar los ficheros. Extensiones: Organizacin por tipo de fichero. Directorio: Metfora de la carpeta con documentos.
Sistemas Operativos - Curso 2008/2009

Sistemas Operativos - Curso 2008/2009

Concepto de directorio
5 6

Ejemplo: Explorador de Windows

Directorio: Objeto que relaciona de forma unvoca un nombre de usuario de fichero con su descriptor interno. Organizan y proporcionan informacin sobre la estructuracin de los sistemas de ficheros. Un directorio tiene entrada por cada fichero que alberga. Informacin de la entrada:

Descriptor interno del fichero. Posiblemente, algunos atributos del fichero.


Sistemas Operativos - Curso 2008/2009 Sistemas Operativos - Curso 2008/2009

Material de apoyo. Debe completarse estudiando el libro de texto.

Sistemas Operativos. Universidad Carlos III de Madrid. (c) rea de Arquitectura y Tecnologa de Computadores

Directorios: visin lgica


7 8

Contenido

Esquema jerrquico. Cuando se abre un fichero el SO busca el nombre en la estructura de directorios. Operaciones sobre un directorio:
Crear (insertar) y borrar (eliminar) directorios. Abrir y cerrar directorios. Renombrar directorios. Leer entradas de un directorio.

Directorios. Alternativas de estructura. Interpretacin de nombres. Manipulacin de directorios.

La organizacin jerrquica de un directorio


Simplifica el nombrado de ficheros (nombres nicos) Proporciona una gestin de la distribucin => agrupar ficheros de forma lgica (mismo usuario, misma aplicacin)
Sistemas Operativos - Curso 2008/2009 Sistemas Operativos - Curso 2008/2009

Alternativas de estructura
9 10

Directorio de un nivel

Directorio de un nico nivel. Directorio de dos niveles. Directorio con estructura de rbol. Directorio con estructura de grafo acclico. Directorio con forma de grafo generalizado.

Un nico directorio para todos los usuarios. Problemas con el nombrado de los ficheros.
Alta

probabilidad de coincidencia de nombres.

carta.doc

listado.xls

notas.txt

foto.jpg

Sistemas Operativos - Curso 2008/2009

Sistemas Operativos - Curso 2008/2009

Directorio de dos niveles


11 12

Directorio con estructura de rbol


Un directorio por cada usuario. Camino de acceso automtico o manual El mismo nombre de fichero para varios usuarios Bsqueda eficiente, pero problemas de agrupacin
daniel carlos

Bsqueda eficiente y agrupacin Nombres relativos y absolutos -> directorio de trabajo


tmp home
...

Directorio raz

...

usr

marivi

miguel

...

elvira

bin

include

mail

stdio.h datos lista.c claves test agenda claves

buzon

carta.doc

listado.xls

notas.txt

foto.jpg

foto.jpg

foto.jpg
sh correo agenda mio.o rm vi

Sistemas Operativos - Curso 2008/2009

Sistemas Operativos - Curso 2008/2009

Material de apoyo. Debe completarse estudiando el libro de texto.

Sistemas Operativos. Universidad Carlos III de Madrid. (c) rea de Arquitectura y Tecnologa de Computadores

Directorio con estructura de rbol


13 14

Directorio de grafo acclico


Los nombres absolutos contienen todo el camino Los nombres relativos parten del directorio de trabajo o actual Cambio de directorio:
cd /spell/mail/prog cd prog

Tienen ficheros y subdirectorios compartidos Este concepto no es visible para el usuario en Windows.
tmp home
...

Directorio raz

...

usr

Borrar un fichero: rm <nombre-fichero> Crear un subdirectorio: mkdir <nombre_dir> Ejemplo:


cd /spell/mail mkdir count ls /spell/mail/count
datos lista.c

marivi miguel

...

elvira

bin

include

mail

stdio.h claves test agenda claves

buzon

sh correo agenda claves

rm

vi

Borrar un subdirectorio: rm -r mail


Sistemas Operativos - Curso 2008/2009

Sistemas Operativos - Curso 2008/2009

Directorio de grafo acclico


15 16

Estructura de los directorios

link: Un fichero con varios nombres -> control de enlaces


un nico fichero con contador enlaces en descriptor (e. Fsicos) ficheros nuevos con el nombre destino dentro (e. simblicos) a) decrementar contador; si 0 borrar fichero b) recorrer los enlaces y borrar todos c) borrar nicamente el enlace y dejar los dems Permitir slo enlaces a ficheros, no subdirectorios Algoritmo de bsqueda de bucle cuando se hace un enlace

Tanto la estructura del directorio como los ficheros residen en discos. Alternativas de implementacin de directorios:
Utilizar

Borrado de enlaces:

bloques especiales con la informacin del directorio. Utilizar un fichero cuyo contenido es el directorio.

Problema grave: existencia de bucles en el rbol. Soluciones:


Informacin en un directorio: nombre, tipo, direccin, longitud mxima y actual, tiempos de acceso y modificacin, dueo, etc.
En

Limitacin de implementacin en UNIX: slo enlaces fsicos dentro del mismo sistema de ficheros.
Sistemas Operativos - Curso 2008/2009

caso de usar un fichero la mayora son metadatos de dicho fichero.


Sistemas Operativos - Curso 2008/2009

Estructura de directorio: Alternativas


17 18

Directorio para ficheros contiguos

Directorios para ficheros contiguos.

Entrada de directorio:
Atributos

Asumen que todos los ficheros se almacenan con asignacin contigua. Asumen que todos los ficheros se almacenan con asignacin no contigua y los bloques se representan como una lista enlazada. Asumen que todos los ficheros se almacenan con asignacin no contigua y los bloques o extents se representan mediante una estructura indexada

Directorios para ficheros enlazados.

del fichero en entrada de directorio. del primer bloque del fichero. Tamao del fichero.
Identificador

Ejemplo: Formato ISO-9660 de CD-ROM


Ubicacin Fecha Nombre

Directorios para ficheros indexados.

Longitud
Sistemas Operativos - Curso 2008/2009

Tamao
Sistemas Operativos - Curso 2008/2009

Material de apoyo. Debe completarse estudiando el libro de texto.

Sistemas Operativos. Universidad Carlos III de Madrid. (c) rea de Arquitectura y Tecnologa de Computadores

Directorio para ficheros enlazados


19 20

Directorio para ficheros indexados


Entrada de directorio:
Atributos

de fichero. Nmero del primer bloque. Tamao del fichero.

Alternativa ms usada. Entrada de directorio:


Nombre. Identificador

de metadatos de fichero (nodo-i, entrada

Ejemplo: FAT
Tipo Hora Fecha Tamao

MFT, ).

Id nodo-i

Nombre

Nombre

Atributos

Nro Primer
Sistemas Operativos - Curso 2008/2009

bloque Sistemas Operativos - Curso 2008/2009

Directorios para ficheros indexados


21 22

Organizacin del directorio


Ventajas:
No

hay que modificar el directorio para cambiar los atributos de un fichero. No hay que modificar el directorio cuando un fichero cambia de longitud. Un nodo-i puede representar un directorio o un fichero.
Sencillez

Eficiencia: localizar un fichero rpidamente Nombrado: conveniente y sencillo para los usuarios

Dos usuarios pueden tener el mismo nombre para ficheros distintos Los mismos ficheros pueden tener nombres distintos Nombres de longitud variable

en la construccin de sistemas jerrquicos.

La

longitud de los nombres no est predeterminada. Fcil creacin de sinnimos para el nombre de un fichero.
Sistemas Operativos - Curso 2008/2009

Agrupacin: agrupacin lgica de los ficheros segn sus propiedades (por ejemplo: programas Pascal, juegos, etc.) Estructurado: operaciones claramente definidas y ocultacin Sencillez: la entrada de directorio debe ser lo ms sencilla posible.
Sistemas Operativos - Curso 2008/2009

Nombres jerrquicos
23 24

Contenido

Nombre absoluto: especificacin del nombre respecto a la raz (/ en LINUX, \ en Windows). Nombre relativo: especificacin del nombre respecto a un directorio distinto del raz
Ejemplo: (Estamos en /users/) miguel/claves Relativos al dir. de trabajo o actual: aquel en el se est al indicar el nombre relativo. En Linux se obtiene con pwd

Directorios. Alternativas de estructura. Interpretacin de nombres. Manipulacin de directorios.

Directorios especiales:
. Directorio de trabajo. Ejemplo: cp / users/miguel/claves . .. Directorio padre. Ejemplo: ls .. Directorio HOME: el directorio base del usuario

Sistemas Operativos - Curso 2008/2009 Sistemas Operativos - Curso 2008/2009

Material de apoyo. Debe completarse estudiando el libro de texto.

Sistemas Operativos. Universidad Carlos III de Madrid. (c) rea de Arquitectura y Tecnologa de Computadores

Interpretacin de nombres en UNIX


25 26

Interpretacin de nombres en UNIX

Cada directorio se almacena como un fichero con paras <nmero de i-nodo, nombre de fichero>. Inicialmente en memoria el directorio /.
.

Localizar el i-nodo del fichero /users/daniel/notas.txt.


El recorrido de cada directorio puede implicar ms de una lectura a disco.
2 2 25 80 37 . .. carlos daniel 80 2 88 121 . .. proy daniel 88 80 21 33

Cuantos bloques de disco ocupa un directorio?

.. tmp users Bin

Depende del nmero de ficheros en el directorio y de la longitud de los nombres.

La bsqueda en un directorio es secuencial.


lectura
Sistemas Operativos - Curso 2008/2009

i-nodo 2

Sistemas Operativos - Curso 2008/2009 121 i-nodo 80 i-nodo

i-nodo 33

Jerarqua de directorios
27 28

Sistemas de ficheros y particiones

rbol nico de directorios?


Por dispositivo lgico en Windows (c:\users\miguel\claves, j:\pepe\tmp, ...) Para todo el sistema en UNIX (/users/miguel/claves, /pepe/tmp, ...).

Volumen: conjunto coherente de metainformacin y datos. Ejemplos de Sistemas de ficheros:

Hacen falta servicios para construir la jerarqua: mount y umount.


MS-DOS Boot UNIX Boot Super Bloque Mapas de bits nodos-i Datos y Directorios Dos copias de la FAT Directorio Raz Datos y Directorios

mount /dev/hda /users umount /users

Ventajas: imagen nica del sistema y ocultan el tipo de dispositivo Desventajas: complican la traduccin de nombres, problemas para enlaces fsicos entre ficheros
Sistemas Operativos - Curso 2008/2009

Sistemas Operativos - Curso 2008/2009

Montado de sistemas de ficheros o particiones


29
Volumen raiz (/dev/hd0) / Volumen sin montar (/dev/hd1) / mount /lib /bin /usr /d 1 /d2 /d3 /dev/hd1 /usr /lib /bin /usr Volumen montado

Contenido
30

Directorios. Alternativas de estructura. Interpretacin de nombres. Manipulacin de directorios.

/d3/f1

/d3/f2

/usr/d1

/usr/d 3

/usr/d 3/f1

/usr/d3/f2

Sistemas Operativos - Curso 2008/2009

Sistemas Operativos - Curso 2008/2009

Material de apoyo. Debe completarse estudiando el libro de texto.

Sistemas Operativos. Universidad Carlos III de Madrid. (c) rea de Arquitectura y Tecnologa de Computadores
Ejemplo: manipulacin de directorios
31 32

Mkdir Crear un directorio

Servicios que realizan el tratamiento de los archivos que representan directorios. Cmo se sabe si un nombre corresponde con fichero o directorio? Servicio
#include <sys/types.h> #include <sys/stat.h> int stat(char *name, struct stat *buf); int fstat(int fd, struct stat *buf); ... S_ISDIR(s.st_mode) /* cierto si se trata de directorio */

Servicio:
#include <sys/types.h> #include <dirent.h> int mkdir(const char *name, mode_t mode);

Argumentos:

name nombre del directorio mode bits de proteccin Cero -1 si error Crea un directorio de nombre name. UID_dueo = UID_efectivo GID_dueo = GID_efectivo
Sistemas Operativos - Curso 2008/2009

Devuelve:

Descripcin:

Sistemas Operativos - Curso 2008/2009

Rmdir Borrar un directorio


33 34

Opendir Abrir un directorio

Servicio:
#include <sys/types.h> int rmdir(const char *name);

Servicio:
#include <sys/types.h> #include <dirent.h> DIR *opendir(char *dirname);

Argumentos:

name nombre del directorio Cero -1 si error Borra el directorio si est vaco. Si el directorio no est vaco no se borra.
Sistemas Operativos - Curso 2008/2009

Argumentos:

Devuelve:

dirname puntero al nombre del directorio Un puntero para utilizarse en readdir() o closedir(). NULL si hubo error. Abre un directorio como una secuencia de entradas. Se coloca en el primer elemento.
Sistemas Operativos - Curso 2008/2009

Devuelve:

Descripcin:

Descripcin:

Closedir Cerrar un directorio


35 36

Readdir Lectura de entradas de directorio

Servicio:
#include <sys/types.h> #include <dirent.h> int closedir(DIR *dirp);

Servicio:
#include <sys/types.h> #include <dirent.h> struct dirent *readdir(DIR *dirp);

Argumentos:

Argumentos:

dirp puntero retornado por opendir(). Un puntero a un objeto del tipo struct dirent que representa una entrada de directorio o NULL si hubo error. Devuelve la siguiente entrada del directorio asociado a dirp. Avanza el puntero a la siguiente entrada. La estructura es dependiente de la implementacin. Debera asumirse que tan solo se obtiene un miembro: char *d_name.
Sistemas Operativos - Curso 2008/2009

dirp puntero devuelto por opendir(). Cero -1 si error. Cierra la asociacin entre dirp y la secuencia de entradas de directorio.
Sistemas Operativos - Curso 2008/2009

Devuelve:

Devuelve:

Descripcin:

Descripcin:

Material de apoyo. Debe completarse estudiando el libro de texto.

Sistemas Operativos. Universidad Carlos III de Madrid. (c) rea de Arquitectura y Tecnologa de Computadores
Rewindir Posicionar el puntero de directorio
37 38

Link Crear una entrada de directorio

Servicio:
#include <sys/types.h> #include <dirent.h> void rewindir(DIR *dirp);

Servicio:
#include <unistd.h> int link(const char *existing, const char *new); int symlink(const char *existing, const char *new);

Argumentos:

Argumentos:
puntero devuelto por opendir() Descripcin: Sita el puntero de posicin dentro del directorio en la primera entrada.
dirp
Sistemas Operativos - Curso 2008/2009

existing nombre del archivo existente. new nombre de la nueva entrada que ser un enlace al archivo existente. Cero -1 si error. Crea un nuevo enlace, fsico o simblico, para un archivo existente. El sistema no registra cul es el enlace original. existing no debe ser el nombre de un directorio salvo que se tenga privilegio suficiente y la implementacin soporte el enlace de directorios
Sistemas Operativos - Curso 2008/2009

Devuelve:

Descripcin:

Unlink Eliminacin de entrad de directorio


39 40

Chdir Cambiar el directorio actual

Servicio:
#include <sys/types> int unlink(char *name);

Servicio:
int chdir(char *name);

Argumentos:

name nombre de archivo Cero -1 si error Elimina la entrada de directorio y decrementa el nmero de enlaces del archivo correspondiente. Cuando el nmero de enlaces es igual a cero y ningn proceso lo mantiene abierto, se libera el espacio ocupado por el archivo y el archivo deja de ser accesible.
Sistemas Operativos - Curso 2008/2009

Argumentos:

Devuelve:

name nombre de un directorio Cero -1 si error Modifica el directorio actual, aquel a partir del cual se forman los nombre relativos.
Sistemas Operativos - Curso 2008/2009

Descripcin:

Devuelve:

Descripcin:

Rename Cambiar el nombre de un archivo


41 42

Getcwd Obtener el nombre del directorio actual

Servicio:
#include <unistd.h> int rename(char *old, char *new);

Servicio:
char *getcwd(char *buf, size_t size);

Argumentos:
old nombre de un archivo existente new nuevo nombre del archivo

Argumentos:
buf puntero al espacio donde almacenar el nombre del directorio actual size longitud en bytes de dicho espacio

Devuelve:

Cero -1 si error Cambia el nombre del archivo old. El nuevo nombre es new.
Sistemas Operativos - Curso 2008/2009

Devuelve:

Descripcin:

Puntero a buf o NULL si error. Obtiene el nombre del directorio actual


Sistemas Operativos - Curso 2008/2009

Descripcin:

Material de apoyo. Debe completarse estudiando el libro de texto.

Sistemas Operativos. Universidad Carlos III de Madrid. (c) rea de Arquitectura y Tecnologa de Computadores

Ejemplo: Listado de un directorio


43 44

Ejemplo: Listado de un directorio


/* abre el directorio pasado como argumento */ dirp = opendir(argv[1]); if (dirp == NULL) {

#include <sys/types.h> #include <dirent.h> #include <stdio.h> #define MAX_BUF 256

fprintf(stderr,"No puedo abrir %s\n", argv[1]); } else { /* lee entrada a entrada */ while ( (dp = readdir(dirp)) != NULL) printf("%s\n", dp->d_name); closedir(dirp); } exit(0); }
Sistemas Operativos - Curso 2008/2009

void main(int argc, char **argv) { DIR *dirp; struct dirent *dp; char buf[MAX_BUF]; /* imrpime el directorio actual */ getcwd(buf, MAX_BUF); printf("Directorio actual: %s\n", buf);
Sistemas Operativos - Curso 2008/2009

Lecturas recomendadas
45

Bsica

Complementaria

Carretero 2007:

Stallings 2005:

9.3. Directorios 9.4. Nombre jerrquicos. 9.9. Estructura y almacenamiento del directorio. 9.10. El servidor de directorios.

12.3 Directorios. 10.3 Estructura de directorios. 10.4 Montaje de sistemas de archivos. 11.3. Implementacin de directorios.

Silberschatz 2006:

Sistemas Operativos - Curso 2008/2009

Material de apoyo. Debe completarse estudiando el libro de texto.

Vous aimerez peut-être aussi