Sistemas Operativos Tema 4 Ficheros y Directorios Contenido

  • Slides: 60
Download presentation
Sistemas Operativos Tema 4 Ficheros y Directorios

Sistemas Operativos Tema 4 Ficheros y Directorios

Contenido • Visión del usuario. – – Ficheros. Directorios. Enlaces. Llamadas al sistema. •

Contenido • Visión del usuario. – – Ficheros. Directorios. Enlaces. Llamadas al sistema. • Estructura del sistema de ficheros. – – – Dispositivo lógico frente a dispositivo físico. Asignación contigua. Asignación enlazada. Asignación indexada. Gestión de espacio libre. Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Visión de usuario • Archivos y directorios. • Archivo: conjunto de información estructurada según

Visión de usuario • Archivos y directorios. • Archivo: conjunto de información estructurada según las necesidades del usuario. • Formalmente: Unidad de almacenamiento lógico no volátil que agrupa un conjunto de información relacionada entre si bajo un mismo nombre. Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Tipos de archivos • ASCII (imprimibles) • Binarios: ejecutables, imágenes. . . • Archivos

Tipos de archivos • ASCII (imprimibles) • Binarios: ejecutables, imágenes. . . • Archivos especiales: dispositivos físicos (en UNIX y Linux): imprimibles, de disco y cintas, etc. . Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Atributos • • Nombre: identificador para el usuario Identificador único: número entero Tipo de

Atributos • • Nombre: identificador para el usuario Identificador único: número entero Tipo de archivo Mapa del archivo: posición real del archivo en un dispositivo Protección: permisos del archivo Tamaño del archivo Información temporal: creación, acceso, modificación. . . Información de control del archivo: oculto, de sistema, normal, directorio. . . Estos atributos son ligeramente distintos según SSOO. Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Estructura de un archivo • La información de un archivo, sus atributos, se agrupa

Estructura de un archivo • La información de un archivo, sus atributos, se agrupa en una estructura de datos: – Nodo-i (UNIX y Linux): atributos y enlaces a los bloques de datos. Tipo – Nombres – Propietario – Grupo – tamaño – Creación – último acceso – última modificación – punteros a bloque – punteros indirectos. – Registro MFT (Windows NT): enlaces a grupos de bloques de datos, permite guardar hasta 1. 5 Kb de datos del archivo en el mismo registro. Cabecera – Atributos – Tamaño – Nombre – Seguridad – Datos – Vclusters (Punteros a bloques de datos) Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Contenido • Visión del usuario. – Ficheros. – Directorios. – Enlaces. – Llamadas al

Contenido • Visión del usuario. – Ficheros. – Directorios. – Enlaces. – Llamadas al sistema. • Estructura del sistema de ficheros. – – – Dispositivo lógico frente a dispositivo físico. Asignación contigua. Asignación enlazada. Asignación indexada. Gestión de espacio libre. Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Directorio • Directorio: objeto que relaciona de forma univoca el nombre de usuario de

Directorio • Directorio: objeto que relaciona de forma univoca el nombre de usuario de un archivo y el descriptor interno del mismo • Cada entrada de un directorio es un fichero o directorio. Pero no se guarda la estructura completa con todos los atributos, sino el identificador del descriptor de archivo. • En Unix contiene el nombre del fichero y el identificador del descriptor del fichero (número de nodo-i). • Usar sólo el identificador del archivo: La entrada de directorio no se ve afectada por los cambios de atributos del archivo. • Los nodos-i pueden representar a su vez directorios o ficheros, con lo que se pueden crear esquemas jerárquicos con facilidad. Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Directorios en Unix Ventajas: – La entrada de directorio no se ve afectada por

Directorios en Unix Ventajas: – La entrada de directorio no se ve afectada por los cambios de atributos del archivo. – Los nodos-i pueden representar a su vez directorios o archivos, con lo que se pueden construir esquemas de nombre jerárquicos de forma sencilla. – La longitud de los nombres no está predeterminada, pudiendo ser variada hasta un límite ( 4096 caracteres en versiones actuales). – La interpretación de nombres es regular, – Facilita la creación de sinónimos para el nombre del archivo. Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Sistemas de ficheros • Un sistema de ficheros es un directorio raíz y todos

Sistemas de ficheros • Un sistema de ficheros es un directorio raíz y todos los ficheros que “cuelgan” de él. • Se habla de árbol de directorios, cuando en realidad los sistemas modernos permiten la creación de grafos acíclicos. • Un sistema de ficheros puede montarse en otro sistema de ficheros, como si fuese un directorio más • Servicios: crear, borrar, abrir, leer, escribir, cambiar apuntador de posición, manipulación de atributos. Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Nombres jerárquicos • • Los nombres pueden ser relativos al directorio actual o Absolutos,

Nombres jerárquicos • • Los nombres pueden ser relativos al directorio actual o Absolutos, desde el directorio raíz del sistema de ficheros. Unix: Árbol de directorios único. Windows: Se genera un árbol a partir de cada dispositivo de memoria o partición. • Montaje en Unix: – mount /dev/hda 1 /mnt/windows – umount /mnt/windows Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Contenido • Visión del usuario. – Ficheros. – Directorios. – Enlaces. – Llamadas al

Contenido • Visión del usuario. – Ficheros. – Directorios. – Enlaces. – Llamadas al sistema. • Estructura del sistema de ficheros. – – – Dispositivo lógico frente a dispositivo físico. Asignación contigua. Asignación enlazada. Asignación indexada. Gestión de espacio libre. Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Enlaces • Un enlace es una referencia, un vínculo, a un fichero o directorio

Enlaces • Un enlace es una referencia, un vínculo, a un fichero o directorio que esta presente en otro directorio y/o dispositivo. • Cualquier operación sobre ficheros se puede hacer también sobre un enlace a dicho fichero, pero si se intenta borrar el fichero sólo se borra el enlace. Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Enlaces • Dos tipos de enlaces: – Lógico: el nombre del enlace es un

Enlaces • Dos tipos de enlaces: – Lógico: el nombre del enlace es un alias del nombre real del fichero. – Físico: se copia el nodo-i del fichero con otro nombre. Un atributo especial debe indicar cuantos enlaces físicos hay sobre el fichero. • Diferencia práctica: para borrar un fichero hay que borrar todos los enlaces físicos. Los lógicos se pueden ignorar. Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Contenido • Visión del usuario. – Ficheros. – Directorios. – Enlaces. – Llamadas al

Contenido • Visión del usuario. – Ficheros. – Directorios. – Enlaces. – Llamadas al sistema. • Estructura del sistema de ficheros. – – – Dispositivo lógico frente a dispositivo físico. Asignación contigua. Asignación enlazada. Asignación indexada. Gestión de espacio libre. Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Para la gestión de ficheros • • creat / open lseek rename unlink symlink

Para la gestión de ficheros • • creat / open lseek rename unlink symlink stat / fstat / lstat Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

creat/open, creat - abren y posiblemente crean un fichero o dispositivo #include <sys/types. h>

creat/open, creat - abren y posiblemente crean un fichero o dispositivo #include <sys/types. h> #include <sys/stat. h> #include <fcntl. h> int open(const char *camino, int flags); int open(const char *camino, int flags, mode_t modo); int creat(const char *camino, mode_t modo); Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

lseek y rename lseek - reposiciona el puntero de lectura/escritura de un fichero #include

lseek y rename lseek - reposiciona el puntero de lectura/escritura de un fichero #include <sys/types. h> #include <unistd. h> off_t lseek(int fildes, off_t offset, int whence); rename - cambia el nombre y/o posición de un fichero #include <stdio. h> int rename(const char *oldpath, const char *newpath); Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Unlink y link unlink - borra un nombre y si era el último enlace

Unlink y link unlink - borra un nombre y si era el último enlace a ese fichero, el fichero al que hace referencia #include <unistd. h> int unlink(const char *pathname); link crea un nuevo enlace (también conocido como enlace físico) a un fichero existente #include <unistd. h> int link(const char *oldpath, const char *newpath); Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

symlink - construye un nombre nuevo para un fichero (el antiguo no se pierde)

symlink - construye un nombre nuevo para un fichero (el antiguo no se pierde) #include <unistd. h> int symlink(const char *caminoviejo, const char *caminonuevo); Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

stat, fstat, lstat - obtiene el estado de un fichero #include <sys/stat. h> #include

stat, fstat, lstat - obtiene el estado de un fichero #include <sys/stat. h> #include <unistd. h> int stat(const char *file_name, struct stat *buf); int fstat(int filedes, struct stat *buf); int lstat(const char *file_name, struct stat *buf); Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Estructura stat struct stat { dev_t st_dev; /* dispositivo */ ino_t st_ino; /* inodo

Estructura stat struct stat { dev_t st_dev; /* dispositivo */ ino_t st_ino; /* inodo */ mode_t st_mode; /* protección */ nlink_t st_nlink; /* número de enlaces físicos */ uid_t st_uid; /* ID del usuario propietario */ gid_t st_gid; /* ID del grupo propietario */ dev_t st_rdev; /* tipo dispositivo (si es dispositivo inodo) */ off_t st_size; /* tamaño total, en bytes */ unsigned long st_blksize; /* tamaño de bloque */ unsigned long st_blocks; /* número de bloques asignados */ time_t st_atime; /* hora último acceso */ time_t st_mtime; /* hora última modificación */ time_t st_ctime; /* hora último cambio */ }; Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Ejemplo de acceso a stat #include <stdio. h> #include <time. h> #include <sys/stat. h>

Ejemplo de acceso a stat #include <stdio. h> #include <time. h> #include <sys/stat. h> #include <unistd. h> /* Muestra algunos valores de "stat" sobre un fichero dado */ int main(int argc, char *argv[]) { struct stat datos; if (argc!=2) { printf("Debe especificar un fichero o directorion"); exit(1); } if (stat(argv[1], &datos)!=0) { printf("Error al ejecutar statn"); exit(1); } Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

printf("Proteccion y tipo fichero: %hon", datos. st_mode); printf("Numero de enlaces fisicos: %dn", datos. st_nlink);

printf("Proteccion y tipo fichero: %hon", datos. st_mode); printf("Numero de enlaces fisicos: %dn", datos. st_nlink); printf("Propietario : %dn", datos. st_uid); printf("Grupo : %dn", datos. st_gid); printf("Tamaño total en bytes : %ldn", datos. st_size); printf("Numero de bloques : %ldn", datos. st_blocks); printf("Tamaño de bloque para E/S: %ldn", datos. st_blksize); printf("Ultimo acceso : %ldn", datos. st_atime); printf("Ultima modificacion : %ldn", datos. st_mtime); printf("Ultimo cambio : %ldn", datos. st_ctime); printf("Es fichero regular? : %dn", S_ISREG(datos. st_mode)); printf("Es un directorio? : %dn", S_ISDIR(datos. st_mode)); printf("Es enlace simbolico? : %dn", S_ISLNK(datos. st_mode)); printf("Segundos desde el ultimo acceso: %ldn", time(NULL)datos. st_atime); exit(0); } Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Para la gestión de directorios • • mkdir rmdir chdir getcwd opendir readdir closedir

Para la gestión de directorios • • mkdir rmdir chdir getcwd opendir readdir closedir Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

mkdir y rmdir mkdir - crea un directorio #include <sys/stat. h> #include <sys/types. h>

mkdir y rmdir mkdir - crea un directorio #include <sys/stat. h> #include <sys/types. h> #include <fcntl. h> #include <unistd. h> int mkdir(const char *pathname, mode_t mode); rmdir - borra un directorio #include <unistd. h> int rmdir(const char *pathname); Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

chdir y getcwd chdir, fchdir - cambia el directorio de trabajo #include <unistd. h>

chdir y getcwd chdir, fchdir - cambia el directorio de trabajo #include <unistd. h> int chdir(const char *path); int fchdir(int fd); getcwd, get_current_dir_name, getwd - Obtienen la dirección absoluta del directorio de trabajo en curso #include <unistd. h> char *getcwd(char *buf, size_t tam); char *get_current_dir_name(void); char *getwd(char *buf); Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

opendir y readdir opendir - abre un directorio #include <sys/types. h> #include <dirent. h>

opendir y readdir opendir - abre un directorio #include <sys/types. h> #include <dirent. h> DIR *opendir(const char *nombre); readdir - lee un directorio: devuelve un puntero a una estructura dirent que representa la siguiente entrada de directorio en el flujo de directorio al que apunte dir. #include <sys/types. h> #include <dirent. h> struct dirent *readdir(DIR *dir); Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

closedir - cierra un directorio #include <sys/types. h> #include <dirent. h> int closedir(DIR *dir);

closedir - cierra un directorio #include <sys/types. h> #include <dirent. h> int closedir(DIR *dir); Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Ejemplo de recorrido de directorio #include <stdio. h> #include <stdlib. h> #include <sys/stat. h>

Ejemplo de recorrido de directorio #include <stdio. h> #include <stdlib. h> #include <sys/stat. h> #include <dirent. h> int main(int argc, char *argv[]) { DIR *d; struct dirent *entrada; struct stat datos; char * ruta; if (argc!=2) { printf("Debe especificar un directorion"); exit(1); } Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

d= opendir(argv[1]); if (d==NULL) { printf("Error al abrir el directorion"); exit(1); } entrada= readdir(d);

d= opendir(argv[1]); if (d==NULL) { printf("Error al abrir el directorion"); exit(1); } entrada= readdir(d); while (entrada!=NULL) { ruta= malloc(strlen(argv[1])+strlen(entrada->d_name)+2); sprintf(ruta, "%s/%s", argv[1], entrada->d_name); stat(ruta, &datos); printf("%s (%ld)n", entrada->d_name, datos. st_size); free(ruta); entrada= readdir(d); } closedir(d); exit(0); } Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Ejemplo recorrido de árbol de directorios #include <stdio. h> #include <stdlib. h> #include <sys/stat.

Ejemplo recorrido de árbol de directorios #include <stdio. h> #include <stdlib. h> #include <sys/stat. h> #include <dirent. h> #include <unistd. h> void recorre(char *nombredir) { DIR *d; struct dirent *entrada; struct stat datos; char *ruta; printf("empiezo a recorrer %sn", nombredir); d= opendir(nombredir); if (d==NULL) { printf("Error al abrir el directorion"); exit(1); } Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

entrada= readdir(d); while (entrada!=NULL) { if (strcmp(entrada->d_name, ". ") && strcmp(entrada->d_name, ". . "))

entrada= readdir(d); while (entrada!=NULL) { if (strcmp(entrada->d_name, ". ") && strcmp(entrada->d_name, ". . ")) { /* Evita ciclos infinitos */ ruta= malloc(strlen(nombredir)+strlen(entrada->d_name)+2); sprintf(ruta, "%s/%s", nombredir, entrada->d_name); stat(ruta, &datos); if (S_ISDIR(datos. st_mode)) /* Es un directorio */ recorre(ruta); printf("%s/%s (%ld)n", nombredir, entrada->d_name, datos. st_size); free(ruta); } entrada= readdir(d); } closedir(d); } int main(int argc, char *argv[]) { if (argc!=2) { printf("Debe especificar un directorion"); exit(1); } recorre(argv[1]); exit(0); } Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Contenido • Visión del usuario. – – Ficheros. Directorios. Enlaces. Llamadas al sistema. •

Contenido • Visión del usuario. – – Ficheros. Directorios. Enlaces. Llamadas al sistema. • Estructura del sistema de ficheros. – Dispositivo lógico frente a dispositivo físico. – – Asignación contigua. Asignación enlazada. Asignación indexada. Gestión de espacio libre. Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Dispositivo lógico/físico • La visión lógica no se corresponde con la realidad física. –

Dispositivo lógico/físico • La visión lógica no se corresponde con la realidad física. – Lógica: conjunto de datos secuénciales, unidos en un vector. – Física: datos repartidos en bloques de datos dentro de un dispositivo. • El servidor de archivos crea un sistema de archivos virtual. Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Métodos de acceso • Métodos de acceso: – Secuencial: lectura de bytes en orden

Métodos de acceso • Métodos de acceso: – Secuencial: lectura de bytes en orden desde el principio. No permite saltos de lectura. – Directo o Aleatorio: el fichero se considera como un conjunto de registros, cada uno de los cuales puede ser un byte. Movimientos entre registros. • El SO establece una relación entre los números de registro relativos con números absolutos del dispositivo de almacenamiento. • Semántica de coutilización: como permitir el acceso a un fichero por varios procesos a la vez. En Unix cualquier lectura ve los efectos de las escrituras de los datos. Cada vez que se modifica se genera un versión. – Sección crítica. – Lectores-Escritores. Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Dispositivo físico • Sectores de datos dentro de un dispositivo. • Bloque: agrupación lógica

Dispositivo físico • Sectores de datos dentro de un dispositivo. • Bloque: agrupación lógica de sectores de disco y unidad de transferencia mínima de archivos. • Agrupación: conjunto de bloques que se gestionan como una unidad lógica de gestión de almacenamiento. • Problema: la existencia de fragmentación interna. • Los ficheros se reparten por diversos bloques. • No distingue tipos de ficheros (ASCII, binarios…). • El S. O. crea una ficción para el usuario, el sistema de archivos virtual. Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Dispositivos • Dispositivos magnéticos: discos duros, cintas magnéticas, etc… • Dispositivos magnético-ópticos: CDs, DVDs,

Dispositivos • Dispositivos magnéticos: discos duros, cintas magnéticas, etc… • Dispositivos magnético-ópticos: CDs, DVDs, … Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Disco duro abierto Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos

Disco duro abierto Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Sistemas de ficheros • Los discos se dividen en particiones o volúmenes: – Porción

Sistemas de ficheros • Los discos se dividen en particiones o volúmenes: – Porción de un disco a la cual se dota de identidad propia y puede ser manipulada por el SO como una entidad lógica independiente. • Existe un bloque de carga o boot que contiene el programa almacenado en la ROM (BIOS). • Sobre estas particiones se instalan los sistemas de archivos. Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Estructura del sistema de archivos • Metainformación del sistema: describe el sistema de archivos

Estructura del sistema de archivos • Metainformación del sistema: describe el sistema de archivos y sus componentes. – Superbloques: describen el sistema de archivos, donde están y cuanto ocupan. Instalación de la tabla de superbloques. – Información de gestión de espacio: dos mapas de espacio: mapa de bloques de datos libres y descripción física de los archivos (nodos-i). Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Diversas estructuras • MS-DOS Boot 2 copias FAT Dir. Raíz Super Bloque Mapa bits

Diversas estructuras • MS-DOS Boot 2 copias FAT Dir. Raíz Super Bloque Mapa bits Datos • UNIX Boot i-nodos Datos • WINDOWS-NT Boot Super Bloque Sistemas operativos: una visión aplicada de Miguel, F. Pérez Mapa bits Descriptores físicos archivos Sistemas Distribuidos Datos © J. Carretero, F. García, P.

Representación del espacio libre • Mapas de bits. • Listas de recursos libres. Sistemas

Representación del espacio libre • Mapas de bits. • Listas de recursos libres. Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Mapas de bits • Fácil de implementar y sencillo de usar. • Si el

Mapas de bits • Fácil de implementar y sencillo de usar. • Si el dispositivo está muy lleno o fragmentado es difícil encontrar zonas libres. • Si el dispositivo es muy grande (+100 Gb), el mapa de bits también lo es, lo cual ralentiza las búsquedas. Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Listas de recursos • El sistema mantiene una lista de recursos libres, con el

Listas de recursos • El sistema mantiene una lista de recursos libres, con el primer puntero siempre en memoria, para acelerar las búsquedas. • Un opción es que cada elemento consta de la posición y cuantos bloques seguidos están vacíos. 7, 11 1, 1 14, 1 16, 3 49, 2 65, 1 Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Asignación de sectores • Asignación contigua. – Un fichero está almacenado en bloques contiguos.

Asignación de sectores • Asignación contigua. – Un fichero está almacenado en bloques contiguos. • Asignación no contigua: – Asignación enlazada: un bloque lleva al siguiente. – Asignación indexada: el nodo-i de cada fichero tiene enlaces a todos los bloques. Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Asignación de sectores • Siempre hay espacio en disco desperdiciado: asignado a algún fichero

Asignación de sectores • Siempre hay espacio en disco desperdiciado: asignado a algún fichero pero que no utiliza. • Generalmente un fichero no tendrá justo el tamaño de un múltiplo del tamaño del bloque (fragmentación interna). Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Asignación contigua • La más sencilla: se sabe dónde se empieza el fichero y

Asignación contigua • La más sencilla: se sabe dónde se empieza el fichero y dónde acaba (con una marca especial, por ejemplo). • ¿Cómo pueden cambiar de tamaño los ficheros? • Reordenación de todos los sectores del dispositivo. Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Asignación enlazada • Cada sector apunta al siguiente: un fichero se define por su

Asignación enlazada • Cada sector apunta al siguiente: un fichero se define por su primer sector. • Permite las variaciones de tamaño. • Obliga al acceso secuencial. • Si se pierde uno de los enlaces se pierde todo el fichero. Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Asignación enlazada • Mejoras: se eliminan los apuntadores de los bloques del archivo y

Asignación enlazada • Mejoras: se eliminan los apuntadores de los bloques del archivo y se almacenan en un índice enlazado gestionado por el servidor de archivos: tabla especial, la FAT (File Allocation Table). • FAT muy grande si el dispositivo es grande. Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

FAT BAD FREE EOF FREE 3 12 4 FREE 8 9 2 13 EOF

FAT BAD FREE EOF FREE 3 12 4 FREE 8 9 2 13 EOF x x Archivo A: 6, 8, 4, 2 Archivo B: 5, 9, 12 Archivo C: 10, 3, 13 Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Problema • ¿Cuánto ocuparía la FAT en un sistema FAT 32 de un disco

Problema • ¿Cuánto ocuparía la FAT en un sistema FAT 32 de un disco duro de 4 Gbytes, con 4 Kbytes como tamaño de bloque? • Solución: 4 GB / 4 KB = 1 M entradas 32 bits / 8 = 4 bytes (lo que ocupa la dirección de un bloque) 1 M entradas * 4 bytes = 4 MB Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Problema • Disponemos de un disco duro de 20 Gbytes de capacidad. Hay establecida

Problema • Disponemos de un disco duro de 20 Gbytes de capacidad. Hay establecida sobre él una partición que contiene un sistema de archivos del tipo FAT 32 en el que cada agrupamiento (cluster) consta de 16 sectores de 512 bytes cada uno. ¿Cuántos sectores del disco se necesitarían para almacenar cada copia de la FAT? Razona tu respuesta. Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Solución • Tamaño de la FAT: 20 Gbytes / 512 bytes = 20, 971,

Solución • Tamaño de la FAT: 20 Gbytes / 512 bytes = 20, 971, 520 bytes / 512 bytes = 40960 sectores / 16 = 2560 clusters 32 bits / 8 bits = 4 bytes 2560 * 4 bytes = 10240 bytes 10240 / 512 = 20 bloques para cada copia de la FAT 32 Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Asignación indexada • Existen bloques con índices (enlaces) a todos los bloques del fichero.

Asignación indexada • Existen bloques con índices (enlaces) a todos los bloques del fichero. • Acceso rápido y no secuencial. • La utilización de índices dobles, triples, etc… permite ficheros de gran tamaño (índices multinivel). Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Mapa de bloques en un nodo-i Información del archivo 820 Dir. 10 bloques de

Mapa de bloques en un nodo-i Información del archivo 820 Dir. 10 bloques de datos 120 901 Indirecto simple Indirecto doble Indirecto triple 12 567 Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Algunos números Tamaño del bloque de datos = Tamaño del bloque de enlaces Tamaño

Algunos números Tamaño del bloque de datos = Tamaño del bloque de enlaces Tamaño bloque / Tamaño dirección de un bloque = Número de enlaces por bloque Número enlaces/bloque * Tamaño bloque = Tamaño máximo del fichero Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Problema • Considera un sistema de ficheros basado en i-nodos, en el que cada

Problema • Considera un sistema de ficheros basado en i-nodos, en el que cada i-nodo contiene 3 índices indirectos, 2 indirectos simples y 1 indirecto doble. Si el tamaño de un bloque de datos es de 4 Kbytes y para referenciar un bloque se utilizan 32 bits, ¿cuál es el máximo tamaño de fichero que se puede utilizar en dicho sistema? Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Solución • Cuantos bloques se pueden referenciar con un bloque de datos: 32 bits/

Solución • Cuantos bloques se pueden referenciar con un bloque de datos: 32 bits/ 8 bits = 4 bytes 4 Kbytes / 4 bytes = 1 K bloques • Un indirecto simple: 1 K bloques • Un indirecto doble: 1 K * 1 K = 1 M bloques • Total: 3 + 2 * 1 K + 1 * 1 M = 1, 050, 627 bloques * 4 Kbytes = 4, 202, 508 Kbytes Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.

Problema • Considera un sistema de ficheros basado en i-nodos en el que cada

Problema • Considera un sistema de ficheros basado en i-nodos en el que cada nodo contiene 4 índices directos, 3 indirectos simples, 2 indirectos dobles y 1 indirecto triple. Si el tamaño de un bloque de datos es de 1 Kbyte y para referenciar un bloque se utilizan 64 bits, ¿cuántos bloques de disco almacenarán enlaces para un fichero que contiene 16773 Kbytes de datos? Razona tu respuesta. Sistemas operativos: una visión aplicada de Miguel, F. Pérez Sistemas Distribuidos © J. Carretero, F. García, P.