Sistemas Operativos Tema 4 Ficheros y Directorios
Contenido Visión del usuario. Estructura del sistema de 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 1 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 2 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 3 © J. Carretero, F. García, P. de Miguel, F. Pérez
Estos atributos son ligeramente distintos según SSOO. 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 4 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 5 © J. Carretero, F. García, P. de Miguel, F. Pérez
Contenido Visión del usuario. Directorios. 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 6 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 7 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 8 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 9 © J. Carretero, F. García, P. de Miguel, F. Pérez
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/hda1 /mnt/windows umount /mnt/windows Sistemas operativos: una visión aplicada 10 © J. Carretero, F. García, P. de Miguel, F. Pérez
Contenido Visión del usuario. Enlaces. 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 11 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 12 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 13 © J. Carretero, F. García, P. de Miguel, F. Pérez
Contenido Visión del usuario. Llamadas al sistema. 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 14 © J. Carretero, F. García, P. de Miguel, F. Pérez
Para la gestión de ficheros creat / open lseek rename unlink link symlink stat / fstat / lstat Sistemas operativos: una visión aplicada 15 © J. Carretero, F. García, P. de Miguel, F. Pérez
creat/open 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 16 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 17 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 int link(const char *oldpath, const char *newpath); Sistemas operativos: una visión aplicada 18 © J. Carretero, F. García, P. de Miguel, F. Pérez
symlink #include <unistd.h> 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 19 © J. Carretero, F. García, P. de Miguel, F. Pérez
stat 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 20 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 21 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 directorio\n"); exit(1); } if (stat(argv[1],&datos)!=0) { printf("Error al ejecutar stat\n"); Sistemas operativos: una visión aplicada 22 © J. Carretero, F. García, P. de Miguel, F. Pérez
printf("Numero de enlaces fisicos: %d\n",datos.st_nlink); printf("Proteccion y tipo fichero: %ho\n",datos.st_mode); printf("Numero de enlaces fisicos: %d\n",datos.st_nlink); printf("Propietario : %d\n",datos.st_uid); printf("Grupo : %d\n",datos.st_gid); printf("Tamaño total en bytes : %ld\n",datos.st_size); printf("Numero de bloques : %ld\n",datos.st_blocks); printf("Tamaño de bloque para E/S: %ld\n",datos.st_blksize); printf("Ultimo acceso : %ld\n",datos.st_atime); printf("Ultima modificacion : %ld\n",datos.st_mtime); printf("Ultimo cambio : %ld\n",datos.st_ctime); printf("Es fichero regular? : %d\n",S_ISREG(datos.st_mode)); printf("Es un directorio? : %d\n",S_ISDIR(datos.st_mode)); printf("Es enlace simbolico? : %d\n",S_ISLNK(datos.st_mode)); printf("Segundos desde el ultimo acceso: %ld\n",time(NULL)-datos.st_atime); exit(0); } Sistemas operativos: una visión aplicada 23 © J. Carretero, F. García, P. de Miguel, F. Pérez
Para la gestión de directorios mkdir rmdir chdir getcwd opendir readdir closedir Sistemas operativos: una visión aplicada 24 © J. Carretero, F. García, P. de Miguel, F. Pérez
mkdir y rmdir mkdir - crea un directorio rmdir - borra 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 int rmdir(const char *pathname); Sistemas operativos: una visión aplicada 25 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 char *getcwd(char *buf, size_t tam); char *get_current_dir_name(void); char *getwd(char *buf); Sistemas operativos: una visión aplicada 26 © J. Carretero, F. García, P. de Miguel, F. Pérez
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. struct dirent *readdir(DIR *dir); Sistemas operativos: una visión aplicada 27 © J. Carretero, F. García, P. de Miguel, F. Pérez
closedir closedir - cierra un directorio #include <sys/types.h> #include <dirent.h> int closedir(DIR *dir); Sistemas operativos: una visión aplicada 28 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 directorio\n"); exit(1); } Sistemas operativos: una visión aplicada 29 © J. Carretero, F. García, P. de Miguel, F. Pérez
printf("Error al abrir el directorio\n"); exit(1); } d= opendir(argv[1]); if (d==NULL) { printf("Error al abrir el directorio\n"); 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); closedir(d); exit(0); Sistemas operativos: una visión aplicada 30 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 %s\n",nombredir); d= opendir(nombredir); if (d==NULL) { printf("Error al abrir el directorio\n"); exit(1); } Sistemas operativos: una visión aplicada 31 © J. Carretero, F. García, P. de Miguel, F. Pérez
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); } closedir(d); int main(int argc, char *argv[]) { if (argc!=2) { printf("Debe especificar un directorio\n"); exit(1); recorre(argv[1]); exit(0); Sistemas operativos: una visión aplicada 32 © J. Carretero, F. García, P. de Miguel, F. Pérez
Contenido Visión del usuario. Estructura del sistema de 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 33 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 34 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 35 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 36 © J. Carretero, F. García, P. de Miguel, F. Pérez
Dispositivos Dispositivos magnéticos: discos duros, cintas magnéticas, etc… Dispositivos magnético-ópticos: CDs, DVDs, … Sistemas operativos: una visión aplicada 37 © J. Carretero, F. García, P. de Miguel, F. Pérez
Disco duro abierto Sistemas operativos: una visión aplicada 38 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 39 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 40 © J. Carretero, F. García, P. de Miguel, F. Pérez
Diversas estructuras MS-DOS UNIX WINDOWS-NT Boot 2 copias FAT Dir. Raíz Datos Boot Super Bloque Mapa bits i-nodos Datos Boot Super Bloque Mapa bits Descriptores físicos archivos Datos Sistemas operativos: una visión aplicada 41 © J. Carretero, F. García, P. de Miguel, F. Pérez
Representación del espacio libre Mapas de bits. Listas de recursos libres. Sistemas operativos: una visión aplicada 42 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 (+100Gb), el mapa de bits también lo es, lo cual ralentiza las búsquedas. Sistemas operativos: una visión aplicada 43 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 44 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 45 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 46 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 47 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 48 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 49 © J. Carretero, F. García, P. de Miguel, F. Pérez
FAT Archivo A: 6, 8, 4, 2 Archivo B: 5, 9, 12 Archivo C: 10, 3, 13 x EOF 13 2 9 8 FREE 4 12 3 BAD Archivo A: 6, 8, 4, 2 Archivo B: 5, 9, 12 Archivo C: 10, 3, 13 Sistemas operativos: una visión aplicada 50 © J. Carretero, F. García, P. de Miguel, F. Pérez
Problema ¿Cuánto ocuparía la FAT en un sistema FAT32 de un disco duro de 4 Gbytes, con 4Kbytes 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 = 4MB Sistemas operativos: una visión aplicada 51 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 FAT32 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 52 © J. Carretero, F. García, P. de Miguel, F. Pérez
Solución Tamaño de la FAT: 20 Gbytes / 512 bytes = 20,971,520 bytes / 512 bytes = 40960 sectores 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 FAT32 Tal vez esta mal, revisarlo… Sistemas operativos: una visión aplicada 53 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 54 © J. Carretero, F. García, P. de Miguel, F. Pérez
Mapa de bloques en un nodo-i Información del archivo Dir. 10 bloques de datos Indirecto simple Indirecto doble Indirecto triple 820 120 901 12 567 Sistemas operativos: una visión aplicada 55 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 56 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 57 © J. Carretero, F. García, P. de Miguel, F. Pérez
Solución Cuantos bloques se pueden referenciar con un bloque de datos: 32 bits/ 8 bits = 4 bytes 4 Kbytes / 4 bytes = 1K bloques Un indirecto simple: 1K bloques Un indirecto doble: 1K * 1K = 1M bloques Total: 3 + 2 * 1K + 1 * 1M = 1,050,627 bloques 1,050,627 bloques * 4 Kbytes = 4,202,508 Kbytes Sistemas operativos: una visión aplicada 58 © J. Carretero, F. García, P. de Miguel, F. Pérez
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 1Kbyte 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 59 © J. Carretero, F. García, P. de Miguel, F. Pérez