Ignacio Vissani 1 Cuat - 2012
1 Repaso 2 3
Dónde estamos Repaso 1 Repaso 2 3
Ya vimos: Que las computadores tienen discos Que los discos tienen platos Que los platos tienen pistas Que las pistas tienen sectores Que los sectores tienen bytes ( Cuántos?)
Ya vimos: Que las computadores tienen discos Que los discos tienen platos Que los platos tienen pistas Que las pistas tienen sectores Que los sectores tienen bytes ( Cuántos?) La pregunta del millón (de archivos): Cómo hacemos para hacer algo útil con todo eso?
A priori no parece muy amigable para el usuario manejar bytes dentro de sectores dentro de pistas dentro de platos dentro de discos Dónde guardé el curriculum para el concurso? Era en el disco 1, plato 0, pista 321, sector 4? O era sector 44? Quiero que nadie más que yo tenga acceso a mi curriculum antes del concurso. Quiero ampliar mi curriculum, pero no me entra en un sector Cómo la guardo? Cómo la recupero fácilmente? Todos estos problemas aparecen porque estamos demasiado cerca del hardware. Recordar que el SO es un intermediario entre el software específico y el hardware, y entre el usuario y el hardware.
Aparecen los archivos Qué es un archivo?
Aparecen los archivos Qué es un archivo? A los archivos hay que administrarlos (principalmente almacenarlos y recuperarlos, pero también manejar de permisos, mantener fechas de acceso, modificación, etc.)
Aparecen los archivos Qué es un archivo? A los archivos hay que administrarlos (principalmente almacenarlos y recuperarlos, pero también manejar de permisos, mantener fechas de acceso, modificación, etc.) Aparecen los sistemas de archivos (filesystems) Qué es un archivo? Depende del filesystem
Asignación contigua Repaso Todos los bloques de un archivo se almacenan en forma consecutiva Ventajas: Acceso rápido (secuencial + aleatorio) Desventajas: Difícil decidir dónde ubicar un archivo nuevo (desconozco el tamaño final del archivo) Costo muy alto (potencialmente) al modificar archivos Fragmentación Guardo A de N bloques Guardo B de 1 bloque Guardo C de M bloques Borro B Desperdicio de espacio (si quiero guardar un archivo de N bloques necesito que en algún lugar del disco haya N bloques libres consecutivos)
Lista enlazada Repaso En cada bloque de un archivo guardo data+ptr_next_block Ventajas: Acceso secuencial relativamente rápido ( impacto en scheduling de E/S?) Puedo usar todos los bloques del disco (no pierdo espacio por fragmentación) Desventajas: Acceso aleatorio extremadamente lento (O(N) puaj!) Desperdicio espacio del bloque (tengo que guardar el puntero al siguiente)
FAT (lista enlazada + refactoring de punteros) Guardo una tabla (en disco, pero la puedo cargar en memoria) en la que la entrada i tiene el puntero (N de bloque) al bloque siguiente a i Ventajas: Acceso secuencial+aleatorio rápido 1 No desperdicio espacio del bloque Puedo usar todos los bloques del disco Desventajas: El tamaño de la tabla es proporcional al tamaño del disco 1 En los algoritmos en memoria secundaria el orden de complejidad temporal se mide en accesos a disco. Los accesos a memoria son despreciables. Más sobre esto en Bases de Datos
i-nodos (Steve Jobs (1955-2011) no tuvo nada que ver con estos) A cada archivo se asocia una estructura (de tamaño fijo) llamada i-nodo que contiene punteros a los bloques del archivo (o a bloques de punteros a bloques) Ventajas: Acceso secuencial+aleatorio rápido (overhead acotado por una constante pequeña) La memoria ocupada es k n (donde k es el tamaño de los i-nodos y n la cantidad de archivos abiertos) Desventajas: Tamaño máximo de archivos limitado (igual se pueden conseguir archivos muy grandes)
Dónde estamos Repaso 1 Repaso 2 3
Ejercicio 1 Repaso Se tiene un disco con capacidad de 128GB, con bloques de 8KB. Suponga un sistema de archivos similar a FAT, donde la tabla se ubica desde la posición 0. 1 Cuál es el tamaño que ocupará la tabla? 2 Se sabe que un archivo comienza en el bloque 20000. Dada la siguiente FAT, indicar el tamaño de dicho archivo. B 0 1... 6143... 7003 7004 7005 7006... 20000 20001 20002... S 1 2... EOF... 7004 7005 7006 EOF... 20001 20002 7003...
Ejercicio 2 Repaso Un disco posee bloques de 8KB. Un FS está administrando un archivo que ocupa 10 MB. El usuario del archivo desea insertar un bloque de 8KB con datos a la mitad del archivo. Suponiendo que el usuario ya se encuentra posicionado en la mitad del archivo. Cada bloque en el disco se direcciona con 4B Cuántos accesos de lectura y de escritura realiza el FS si... a)... los archivos se almacenan consecutivamente?
Ejercicio 2 Repaso Un disco posee bloques de 8KB. Un FS está administrando un archivo que ocupa 10 MB. El usuario del archivo desea insertar un bloque de 8KB con datos a la mitad del archivo. Suponiendo que el usuario ya se encuentra posicionado en la mitad del archivo. Cada bloque en el disco se direcciona con 4B Cuántos accesos de lectura y de escritura realiza el FS si... a)... los archivos se almacenan consecutivamente? b)... si el FS usa tabla de alocación?
Ejercicio 2 Repaso Un disco posee bloques de 8KB. Un FS está administrando un archivo que ocupa 10 MB. El usuario del archivo desea insertar un bloque de 8KB con datos a la mitad del archivo. Suponiendo que el usuario ya se encuentra posicionado en la mitad del archivo. Cada bloque en el disco se direcciona con 4B Cuántos accesos de lectura y de escritura realiza el FS si... a)... los archivos se almacenan consecutivamente? b)... si el FS usa tabla de alocación? c)... si el FS usa i-nodes?
Ejercicio 3 Repaso En un FS con inodos de 200bytes se desea acelerar el resultado de la operación ls -la que muestra los nombres de los archivos, sus atributos y su tamaño % ls -la drwxr-xr-x 20 root wheel 2560 25 may 18:51. drwxr-xr-x 21 root wheel 512 2 jun 00:21.. drwxr-xr-x 2 root wheel 512 16 may 19:44 X11 -rw-r--r-- 1 root wheel 221 16 feb 23:19 amd.map -rw-r--r-- 1 root wheel 1248 16 feb 23:19 apmd.conf -rw-r--r-- 1 root wheel 241 16 feb 23:19 auth.conf drwxr-xr-x 2 root wheel 512 16 feb 23:19 bluetooth -rw-r--r-- 1 root wheel 736 16 feb 23:19 crontab 1 Si el FS tiene bloques de 512bytes, los i-nodos de un mismo directorio se encuentran contiguos y el primero comienza al principio de un bloque. En el listado del ejemplo, cuántos accesos a bloques fueron necesarios? 2 Cómo podría modificarse el FS para resolverlo en un acceso? Cuál sería el precio que se pagaría?
Dónde estamos Repaso 1 Repaso 2 3
Estructuras de un HDD 2 2 http://home.teleport.com/ brainy/fat32.htm
FAT32 Boot Record Repaso
Organización Partición FAT32
Root Directory Entry Repaso
Ejercicio 4 Repaso Se tiene un disco rígido con un sistema de archivos de tipo FAT. Se pide programar el algoritmo void loadfile(const char * path, void * buffer) Para ello utilice las siguientes estructuras y funciones ya definidas (la variable fat_bs ya se encuentra cargada en memoria): s t r u c t FAT BS STRUCT { unsigned char jumpcode [ 3 ] ; unsigned char OEMName [ 8 ] ; unsigned s h o r t bytesxsect ; unsigned char sectxclust ; unsigned s h o r t reservedsect ; unsigned char numofcopies ; unsigned s h o r t maxrootdirent ; unsigned s h o r t smallnumofsect ; unsigned char mediadesc ; unsigned s h o r t sectxfat ; unsigned s h o r t sectxtrack ; unsigned s h o r t numofheads ; unsigned i n t hiddensect ; unsigned i n t bignumofsect ; unsigned s h o r t logdrivenum ; unsigned char extendsignat ; unsigned i n t serialnum ; unsigned char volumename [ 1 1 ] ; unsigned char FATName [ 8 ] ; unsigned char code [ 4 4 8 ] ; unsigned char execmarker [ 2 ] ; } f a t b s ; // Ya e s t á c a r g a d a en memoria v o i d h d d l o a d s e c t o r ( unsigned i n t s e c t o r, v o i d b u f f e r ) ; s t r u c t d i r e n t r y { unsigned char name [ 8 ] ; unsigned char extension [ 3 ] ; unsigned char a t t r i b u t e s ; unsigned char nada [ 1 0 ] ; unsigned s h o r t time ; unsigned s h o r t date ; unsigned s h o r t c l u s t e r ; unsigned i n t f i l e S i z e ; }; b o o l e a n i s d i r ( s t r u c t d i r e n t r y de ) ; b o o l e a n i s f i l e ( s t r u c t d i r e n t r y de ) ; i n t s p l i t p a t h ( c o n s t char path, char array ) ; // p t r a s t r i n g [ ]
http://www.asknacho.fcen.uba.ar
http://www.asknacho.fcen.uba.ar O sea Preguntas?