3.sistema de archivos

17
Introducción al Sistema de Archivos Ing Carlos Rojas Ortiz

Transcript of 3.sistema de archivos

Introducción al Sistema de Archivos

Ing Carlos Rojas Ortiz

Requerimientos esenciales para el almacenamiento a largo plazo de la

información

Los ficheros son un mecanismo de abstracción que permite almacenar información en el disco y leerla después. Esto debe hacerse de tal modo que el usuario no tenga que enterarse de los detalles de cómo y dónde está almacenada la información, y de cómo funcionan en realidad los discos.

• Debe poder almacenarse una cantidad de información muy grande.

• La información debe permanecer tras la terminación del proceso que la usa.

• Debe permitir que múltiples procesos puedan acceder a la información concurrentemente

Tipos de ficheros el sistema operativo no sabe qué contiene el fichero, ni le interesa; lo único que ve son bytes. Cualquier significado que tenga el fichero deberán atribuírselo los programas en el nivel de usuario.

(a) Sucesión de bytes. (b) sucesión de registros. (c) Árbol.

Tipos de ficheros

Los ficheros regulares son normalmente ficheros ASCII o ficheros binarios. ficheros ASCII consisten en líneas de texto pueden visualizarse e imprimirse tal cual, y pueden editarse con cualquier editor de texto, los ficheros binarios tienen alguna estructura interna conocida por los programas que los usan

El sistema de ficheros de MS-DOS

Acceso a ficheros

• Acceso secuencial . un proceso podía leer todos los bytes o registros de un fichero por orden, comenzando por el principio, pero no podía efectuar saltos para leerlos en otro orden.

• Acceso Aleatorio. Los ficheros cuyos bytes o registros pueden leerse en cualquier orden se denominan ficheros de acceso aleatorio, y muchas aplicaciones los necesitan.

Atributos de los ficheros

Todo fichero tiene un nombre y datos. Además, todos los sistemas operativos asocian otra información a cada fichero, como la fecha y la hora en que se creó, y su tamaño. Esta información adicional son los atributos del fichero. La lista de atributos varía de manera considerable de un sistema a otro.

protección y propiedad del fichero

Operaciones con ficheros

• Create.

• Delete.

• Open.

• Close.

• Read.

• Write.

• Append.

• Seek.

• Get attributes

• Set attributes

• Rename.

Programa sencillo para copiar un fichero.

• /* Programa de copia de ficheros. */

• /* Con una mínima comprobación y comunicación de errores */

• #include <sys/types.h> /* se incluyen los ficheros de cabecera necesarios */

• #include <fcntl.h>

• #include <stdlib.h>

• #include <unistd.h>

• int main ( int argc, char * argv[]) ; /* prototipo ANSI */

• #define BUF_SIZE 4096 /* tamaño de bufer de 4096 bytes */

• #define OUTPUT_MODE 0700 /* bits de proteccion para el fichero de salida */

• int main ( int argc, char * argv[])

• {

• int in_fd, out_fd, rd_count, wt_count ;

• char buffer[BUF_SIZE] ;

• if (argc != 3) exit(1) ; /* error de sintaxis si argc no es 3 */

• /* Abre el fichero de entrada y crea el fichero de salida */

• in_fd = open(argv[1], O_RONLY) ; /* abre el fichero de origen */

• if (in_fd < 0) exit(2) ; /* si no se puede terminar */

• out_fd = creat(argv[2], OUTPUT_MODE) ; /* crea el fichero de destino */

• if (out_df < 0) exit(3) ; /* si no se puede terminar */

• /* bucle de copia */

• while (TRUE) {

• rd_count = read(in_fd, buffer, BUF_SIZE) ; /* lee bloque de datos */

• if (rd_count <= 0) break ; /* si fin de fichero o error, salir del bucle */

• wr_count = write(out_fd, buffer, rd_count) ; /* escribe datos */

• if (wt_count <= 0) exit(4) ; /* wt_count <= 0 es un error */

• }

• /* Cierra los ficheros */

• close(in_fd) ;

• close(out_fd) ;

• if (rd_count) == 0)

• exit(0) ; /* no hubo error en la ultima lectura */

• else

• exit(5) ; /* hubo un error en la ultima lectura */

Ficheros con correspondencia en memoria

(a) Proceso segmentado antes de establecer las correspondencias entre los ficheros y su espacio de direcciones. (b) El proceso después de establecer una correspondencia entre un fichero existente abc y un segmento, y crear un segmento nuevo para el fichero xyx.

DIRECTORIOS

• Para llevar el control de los ficheros, los sistemas de ficheros suelen tener directorios o carpetas que, en muchos sistemas son a su vez ficheros.

Sistemas de directorios jerárquicos

Nombres de camino

• Cuando un sistema de ficheros está organizado como un árbol de directorios, se necesita un mecanismo para especificar los nombres de fichero.

• Ejemplos:

- Windows \usr\ast\correo

- UNIX /usr/ast/correo

Un árbol de directorios UNIX.

Operaciones con directorio

• Create.

• Delete.

• Opendir.

• Closedir.

• Readdir.

• Rename.

• Link.

• Unlink.

Implementación de los ficheros

El aspecto más importante de la implementación del almacenamiento de los ficheros es llevar el control de qué bloques de disco corresponden a qué fichero. Se emplean diversos métodos en los distintos sistemas operativos.

Asignación contigua

Asignación contigua de espacio en disco para siete ficheros.

El estado del disco después de borrar los ficheros D y F.

la asignación contigua también tiene una importante desventaja: con el tiempo, el disco se fragmenta.

Asignación por lista enlazada

Almacenamiento de un fichero como una lista enlazada de bloques del disco.

Implementación de directorios