Académique Documents
Professionnel Documents
Culture Documents
Objetivos
2
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
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
Concepto de directorio
5 6
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:
Sistemas Operativos. Universidad Carlos III de Madrid. (c) rea de Arquitectura y Tecnologa de Computadores
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.
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
carta.doc
listado.xls
notas.txt
foto.jpg
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
Directorio raz
...
usr
marivi
miguel
...
elvira
bin
include
buzon
carta.doc
listado.xls
notas.txt
foto.jpg
foto.jpg
foto.jpg
sh correo agenda mio.o rm vi
Sistemas Operativos. Universidad Carlos III de Madrid. (c) rea de Arquitectura y Tecnologa de Computadores
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
marivi miguel
...
elvira
bin
include
buzon
rm
vi
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.
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
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
del fichero en entrada de directorio. del primer bloque del fichero. Tamao del fichero.
Identificador
Longitud
Sistemas Operativos - Curso 2008/2009
Tamao
Sistemas Operativos - Curso 2008/2009
Sistemas Operativos. Universidad Carlos III de Madrid. (c) rea de Arquitectura y Tecnologa de Computadores
Entrada de directorio:
Atributos
Ejemplo: FAT
Tipo Hora Fecha Tamao
MFT, ).
Id nodo-i
Nombre
Nombre
Atributos
Nro Primer
Sistemas Operativos - Curso 2008/2009
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
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 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
Sistemas Operativos. Universidad Carlos III de Madrid. (c) rea de Arquitectura y Tecnologa de Computadores
Cada directorio se almacena como un fichero con paras <nmero de i-nodo, nombre de fichero>. Inicialmente en memoria el directorio /.
.
i-nodo 2
i-nodo 33
Jerarqua de directorios
27 28
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
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
Contenido
30
/d3/f1
/d3/f2
/usr/d1
/usr/d 3
/usr/d 3/f1
/usr/d3/f2
Sistemas Operativos. Universidad Carlos III de Madrid. (c) rea de Arquitectura y Tecnologa de Computadores
Ejemplo: manipulacin de directorios
31 32
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:
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:
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:
Sistemas Operativos. Universidad Carlos III de Madrid. (c) rea de Arquitectura y Tecnologa de Computadores
Rewindir Posicionar el puntero de directorio
37 38
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:
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:
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:
Descripcin:
Sistemas Operativos. Universidad Carlos III de Madrid. (c) rea de Arquitectura y Tecnologa de Computadores
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: