You are on page 1of 49

Sistemas Operativos

Captulo 8: Sistemas de Archivo (Filesystems)

Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Introduccin


Jerarqua del almacenamiento

Registros CPU Cach L1, L2 Memoria Primaria (RAM) Memoria Secundaria (Discos, flash cards, CDs, DVDs, Cintas)

Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Introduccin (cont.)


Requerimientos de la memoria secundaria

No voltil (permanente sin energa elctrica) Guardar / Recuperar fcilmente Organizada Desde el punto de vista de procesos / SO: Almacenar gran cantidad de datos/informacin (data) Sobrevivr la terminacin del proceso que la usa Acceso concurrente de mltiples procesos
Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Introduccin (cont.)


En general, el dispositivo clsico para el almacenamiento, durante muchos aos, y variando un poco la tecnologa: DISCO MAGNTICO (hard disk o disco duro, como oposicin al floppy disk o disco flexible, tambin magntico)

Dipositivos rotacionales Lectura/escritura electro-magntica (RLL/MFM) Multiples superficies --> mltiples cabezales r/w Incremento de complejidad en la org. Interna, se trata de mantener transparente al software.
Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Introduccin (cont.)

Para nuestro estudio y comprensin, es suficiente pensar en el disco en general, como


una secuencia lineal de bloques de tamao fijo que soportan dos operaciones:

Leer el bloque k Escribir el bloque k

llevadas a cabo por el driver o manejador del dispositivo. 0 k n-1

Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Introduccin (cont.)


(los drivers soportan algunas ms, pero que tiene que ver con numeracin de sectores, posicin del cabezal, parqueo, etc.) En sistemas con mltiples procesos y usuarios:

Cmo encontrar la informacin requerida? Cmo alejar a un usuario de la data de otro? Cmo saber qu bloques estn disponibles? Se requiere de alguna abstraccin, as como el proceso para la CPU, el espacio de direcciones para la memoria....esta abstraccin es el ARCHIVO (FILE)(FICHERO en espaol...)
Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Introduccin (cont.)

Los archivos son unidades lgicas de informacin, que crean los procesos. Como abstraccin, podramos hacer una semejanza con los espacios de direcciones, usados para modelar la memoria, esta vez, para modelar el disco. Los archivos deben ser persistentes ms all de la terminacin de los procesos, y desaparecer cuando el propietario explcitamente lo remueve. Deben establecerse operaciones centralizadas para los archivos. Operativos 2009 F. Solari Sistemas

Cap. 8 Filesystems: Introduccin (cont.)

El Sistema Operativo administra los archivos, definiendo como se:


Estructuran Nombran Acceso, uso Proteccin Implementacin ...

La parte del Sistema Operativo que tiene que ver con los archivos se conoce como Filesystem o Sistema de Archivos
Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Introduccin (cont.)

Desde el punto de vista del usuario, es de inters:


Cmo se visualiza, cmo se ven los archivos Qu constituye un archivo Cmo se nombran y protegen Qu operaciones se permiten

Desde el punto de vista del diseo del sistema:


Cmo llevar la cuenta de bloques libres/ocupados Cmo obtener los bloques de un archivo ...
Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Introduccin (cont.)


En general podemos esquematizar por niveles

Aplicacin Swap Filesystem Database

Volumen

Memoria

Medio de almacenamiento fsico

Network

Filesystem Forensics, B. Carrier


Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Introduccin (cont.)

A nivel de Volumen :

Particionamiento del medio Agregacin de particiones/medios/dispositivos Archivos Directorios Manejo del espacio Implementacin: casos reales

A nivel de Filesystem:

Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Archivos


Los archivos son una ABSTRACCIN Proporcionan una forma de


guardar (permanentemente) y recuperar (posteriormente)

la informacin generada y requerida por los procesos.

La facilidad de su uso normalmente oculta al usuario final los detalles de cmo y donde se almacena y las operaciones sobre el medio. Una caracterstica muy importante de la abstraccin es la forma de identificar: nombre
Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Archivos (cont.)

Nombres de Archivo, dependiendo del sistema propiamente dicho:


Caracteres ASCII o UNICODE Cadenas de caracteres, de 1 a 8 mnimo. Mx 255 Se permiten dgitos y algunos caracteres especiales: -,_,+,$,.,! No se permiten otros meta-caracteres:
.,..,/,\

Distincin de maysculas y minsculas:


Case sensitive Case insensitive Case aware or case retaining


Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Archivos

Partes del Nombre: extensin


Nombre separado en dos partes, mediante un . Ejemplos:

MS-DOS (FAT): extensiones de hasta 3 char, como INDEX.HTM Unix: depende del usuario (el . parte del nombre); ms de una extensin, como index.html.zip Convencionalmente: el usuario y aplicaciones El sistema operativo: restringe el uso Recurso intermedio: asociacin de la extensin al shell Sistemas Operativos 2009 F. Solari

Extensin: su significado,interpretado por...


Cap. 8 Filesystems: Archivos

Algunas extensiones comunes


Nombre.ext file.bak file.c file.gif file.hlp file.html file.o file.lib file.pdf file.ps file.zip file.bz2 file.tar.gz Gzipped and Tarred (output from Tape Archiver | Gzip ) Significado Archivo backup o de respaldo Programa fuente en Lenguaje C Imagen en Graphical Interchange Format Archivo de ayuda Documento en Lenguaje de Marcacin de Hypertexto Archivo objeto (salida del compilador, sin enlazar) Archivo de biblioteca (library) para enlazado Portable Document Format Postscript Zip-Lampel format compressed file

Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Archivos


Estructura de los archivos

Secuencias de bytes (byte streams, sequence)


...

Registros (records) rboles (tree)


Cat Cow Dog Goat Lion

Ant

Fox

Pig

Owl Hen Ibis Lamb

Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Archivos


Tipos de Archivo Cmo mnimo, los sistemas actuales distinguen y dan tratamiento diferente a:

Archivos regulares Directorios Character special file Block special file Hard links Soft links
Sistemas Operativos 2009 F. Solari

Unix tiene archivos especiales


NTFS: devices, (W2000+) link,reparse-points

Cap. 8 Filesystems: Archivos


Archivos regulares

Ascii o Unicode

Desplegables en pantalla directamente Editables fcilmente Imprimibles directamente en cualquier dispositivo Contenido conocido por la aplicacin que la produjo Problema de compatiblidad de aplicaciones

Binarios

Contenido de archivamiento

Contenido ejecutable: reconocible por el SO razones?


Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Archivos


Modo de Acceso

Histricamente: acceso secuencial, principalmente por las caractersticas del medio (cintas) Discos, en la actualidad: acceso aleatorio similarmente que la RAM, puede leerse o escribirse un byte en cualquier orden.

Mtodo directo, cada operacin requiere posicin Mtodo relativo, se d una operacin de ubicacin (seek), y a partir de esta posicin actual, secuencia. Este es el comnmente usado.
Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Archivos


Atributos La informacin relativa al archivo que no es su contenido, tambin llamada metadata del archivo.

Vara mucho de sistema a sistema, en cantidad, en terminologa, forma de almacenar, tipo de dato a almacenar. La tabla siguiente muestra posibles atributos que los sistemas pueden implementar para cada archivo. El contenido puede considerarse atributo (NT).
Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Archivos


Atributos: posibles atributos de un file
Atributo Nombre Creador Propietario Proteccin ReadOnly flag Hidden flag System flag Archive flag ASCII/Binary Temporary Lock flags Tiempo de acceso Tiempo de modificacin Tamao Significado identificador ID del usuario que cre el archivo ID del usuario propietario actual Acceso permitido al archivo 0 para r/w; 1 para read-only 0 para normal; 1 para oculto a listados 0 para normal; 1 para archivo de sistema 0 para ya archivado; 1 requiere respaldo 0 archivo de texto; 1 archivo binario 0 para normal; 1 para borrar al finalizar el proceso 0 para no cerrojo;1 cerrojo de uso Fecha y hora de ltimo acceso Fecha y hora de ltima modificacin Nmero de bytes del archivo
Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Archivos


Operaciones sobre archivos

Crear (create) Borrar (delete) Abrir (open) Cerrar (close) Leer (read) Escribir (write) Agregar (append)

Posicionar (seek) Pedir Atributos (get attributes) Cambiar Atributos (set attributes) Renombrar (rename)

Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Archivos

Ejemplo de uso de filesystem calls (UNIX)

/* Chapter 1. Basic cp file copy program. */ /* UNIX Implementation. */ /* cp file1 file2: Copy file1 to file2. */ #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <errno.h> #define BUF_SIZE 256 int main (int argc, char *argv []){ int input_fd, output_fd; ssize_t bytes_in, bytes_out; char rec [BUF_SIZE]; if (argc != 3) { printf ("Usage: cp file1 file2\n"); return 1; }

input_fd = open (argv [1], O_RDONLY); if (input_fd == -1) { perror (argv [1]); return 2; } output_fd = open (argv [2], O_WRONLY | O_CREAT, 0666); if (output_fd == -1) { perror (argv [2]); return 3; } /* Process the input file a record at a time. */ while ((bytes_in = read (input_fd, &rec, BUF_SIZE)) > 0) { bytes_out = write (output_fd, &rec, (size_t)bytes_in); if (bytes_out != bytes_in) { perror ("Fatal write error."); return 4; } } close (input_fd); close (output_fd); return 0; }

Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Archivos

Ejemplo de uso de filesystem C library


out_file = fopen (argv [2], "wb"); if (out_file == NULL) { perror (argv [2]); return 3; } /* Process the input file a record at a time. */ while ((bytes_in = fread (rec, 1, BUF_SIZE, in_file)) > 0) { bytes_out = fwrite (rec, 1, bytes_in, out_file); if (bytes_out != bytes_in) { perror ("Fatal write error."); return 4; } } fclose (in_file); fclose (out_file); return 0;

/* Chapter 1. Basic cp file copy program.*/ /* C library Implementation. */ /* cp file1 file2: Copy file1 to file2. */ #include <windows.h> #include <stdio.h> #include <errno.h> #define BUF_SIZE 256 int main (int argc, char *argv []) { FILE *in_file, *out_file; char rec [BUF_SIZE]; size_t bytes_in, bytes_out; if (argc != 3) { printf ("Usage: cp file1 file2\n"); return 1; } in_file = fopen (argv [1], "rb"); if (in_file == NULL) { perror (argv [1]); return 2; }

Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Archivos


Ejemplo de uso de filesystem calls (WIN32)
/* Chapter 1. Basic cp file copy program.*/ /* Win32 Implementation. */ /* cp file1 file2: Copy file1 to file2. */ #include <windows.h> #include <stdio.h> #define BUF_SIZE 256 int main (int argc, LPTSTR argv []) { HANDLE hIn, hOut; DWORD nIn, nOut; CHAR Buffer [BUF_SIZE]; if (argc != 3) { printf ("Usage: cp file1 file2\n"); return 1; } hIn = CreateFile (argv [1], GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hIn == INVALID_HANDLE_VALUE) { printf ("Cannot open input file. Error: %x\n", GetLastError ()); return 2; }
Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Archivos


Ejemplo de uso de filesystem calls (WIN32)
hOut = CreateFile (argv [2], GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (hOut == INVALID_HANDLE_VALUE) { printf ("Cannot open output file. Error: %x\n", GetLastError ()); return 3; } while (ReadFile (hIn, Buffer, BUF_SIZE, &nIn, NULL) && nIn > 0) { WriteFile (hOut, Buffer, nIn, &nOut, NULL); if (nIn != nOut) { printf ("Fatal write error: %x\n", GetLastError ()); return 4; } } CloseHandle (hIn); CloseHandle (hOut); return 0; }

Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Archivos


Ejemplo adicional (Win32 API)
/* Chapter 1. Basic cp file copy program. Win32 Implementation using CopyFile for convenience and possible performance. */ /* cp file1 file2: Copy file1 to file2. */ #include <windows.h> #include <stdio.h> #define BUF_SIZE 256 int main (int argc, LPTSTR argv []) { if (argc != 3) { printf ("Usage: cp file1 file2\n"); return 1; } if (!CopyFile (argv [1], argv [2], FALSE)) { printf ("CopyFile Error: %x\n", GetLastError ()); return 2; } return 0; }
Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Directorios


Directorios o carpetas

Utilizados para organizar los archivos. Comnmente, tambin son archivos, pero tratados de manera especial por el Sist. Operativo. Sistemas antiguos y pequeas aplicaciones:
un nico directorio

Sistemas actuales y de propsito general:


un rbol, con directorio raz y subdirectorios

Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Directorios


Directorios Jerrquicos

OSDI 3/e Tanenbaum-Woodhull Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Directorios


Rutas de directorio y archivo (pathnames)

/usr/lib/dict

OSDI 3/e Tanenbaum-Woodhull Sistemas Operativos 2009 F. Solari

Directorios y atributos

(a) Attributes in the directory entry. (b) Attributes elsewhere.


OSDI 3/e Tanenbaum-Woodhull Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Directorios


Operaciones con directorios

Crear (create) Borrar (delete) Abrir (opendir) Cerrar (closedir) Leer Directorio (readdir) Escribir Directorio (writedir) Renombrar (rename) Enlazar (link) sobre un archivo existente Desenlazar (unlink) dem
Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Volumenes

Los sistemas de archivo, se almacenan en dispositivos como los discos Los discos, se suelen subdividir en particiones La organizacin bsica en una PC-IBM o compatible (Mac, Sun y otros difieren):

Sector 0, los primeros 512 bytes, es llamado MBR (Master Boot Record)

Cdigo estndar de bsqueda de particin activa Tabla de particin en los ltimos bytes Firma o signatura

En cada particin, el primer sector es el boot record o tambin conocido como boot block.
Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Volumenes


Layout de un disco

OSDI 3/e Tanenbaum-Woodhull Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Implementacin


Asignacin del espacio

Volumenes: (contenedor del filesystem)


Contiguo: una sola particin en un solo disco No contiguo: hasta varias particiones en varios discos (manejo por software, sw RAID y hw RAID) Contiguo: problemas de crecimiento y reubicacin

Archivos:

No Contiguo: administrar la ubicacin (metadata)

Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Implementacin


Linked list
lista enlazada de bloques de cada archivo, en el mismo archivo

OSDI 3/e Tanenbaum-Woodhull Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Implementacin


tabla Lista enlazada con tabla en memoria/disco
File Allocation
Table FAT
bits cluster

OSDI 3/e Tanenbaum-Woodhull Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Implementacin


Index Node (i-node)

Lista los atributos y los bloques del archivo Solo se necesita en memoria los i-nodes de los archivos abiertos Desventaja, nmero fijo de bloques enum.
Minix 3 i-node,(OSDI 3/e Tanenbaum & Woodhull)

Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Implementacin


Administracin del Espacio

FAT
La tabla misma indica cuales bloques estn ocupados y cules libres Tamao de la lista

Bitmap
Un bit representa cada bloque: 0 libre, 1 uso Tamao del bitmap

Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Implementacin


Directorios

(a) Todos los atributos en directorio (b) nombre y nmero de ndice

OSDI 3/e Tannenbaum & Woodhull Tanenbaum & Woodhull


Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Implementacin


VFAT (Virtual FAT) Windows 9x, NT

(cont.) Marca entradas de nombre largo como no vlidas para MSDOS Agrega ms atributos como fecha de creacin; soporte a tamaos mayores de archivo.

Soporte para nombres largos en UNICODE, adems del nombre corto en 83 Relacionado a FAT32, pero tiene que ver con directorios y se usa en FAT12, FAT16

Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Implementacin

Figure 5-13. A Windows 98 base directory entry.


OSDI 3/e Tanenbaum & Woodhull

Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Implementacin

Figure 5-14. An entry for (part of) a long file name in Windows 98.
OSDI 3/e Tanenbaum & Woodhull

Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Implementacin

Figure 5-15. A Version 7 UNIX directory entry.

OSDI 3/e Tanenbaum & Woodhull 4 bytes I-node # 60 bytes Filename Minix 3 Directory entry

Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Implementacin

Figure 5-16. The steps in looking up /usr/ast/mbox.


OSDI 3/e Tanenbaum & Woodhull
Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Implementacin


FAT12 / FAT 16 Layout
boot FAT(1) FAT(2) RootDir (fixed size) Data blocks (clusters)

FAT32 Layout
boot reserved FAT(1) FAT(2) RootDir (first file) Data blocks (clusters)

Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Implementacin


Partition size and Max. Cluster size for FAT
Block Size 0.5 kiB 1 kiB 2 kiB 4 kiB 8 kiB 16 kiB 32 kiB FAT 12 2 MiB 4 MiB 8 MiB 16 MiB FAT 16 32 MiB 64 MiB 128 MiB 256 MiB 512 MiB 1 GiB 2 GiB FAT 32 ?? calcular ?? calcular 1 TiB 2 TiB

Sistemas Operativos 2009 F. Solari

Cap. 8 Filesystems: Implementacin


Shared Files

La idea es apuntar al mismo contenido

links o enlaces

hard links soft links inodos,fcil, pero = filesystem archivo extra de tipo link En FAT, cross-link; error
Sistemas Operativos 2009 F. Solari

Implementacin:

Cap. 8 Filesystems: Implementacin


Shared Files (cont.)

En NTFS, es posible, pero recin en VISTA aparece utilitario para crear Links, a pesar de funcin WinAPI32 CreateLink desde W2000 Ms detalle, al ver estructuras...

Sistemas Operativos 2009 F. Solari

You might also like