La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Módulo 7: Sistema de Archivos

Presentaciones similares


Presentación del tema: "Módulo 7: Sistema de Archivos"— Transcripción de la presentación:

1 Módulo 7: Sistema de Archivos
Objetivos: Organización del Sistema de Archivos y Entrada/Salida Administración de Directorios Sistema Básico de Archivos Métodos de Organización Física Subsistema de I/O Buffering Planificación de disco Sistema de archivos de UNIX System V

2 Sistema de Archivos Computadora compuesta por CPU, Memoria y dispositivos de Entrada/Salida. Dispositivos de I/O: Dispositivos de comunicaciones Dispositivos de almacenamiento secundario: Organizado bajo el concepto de archivos. Archivo: Colección de elementos de datos agrupados con el objeto de controlar su acceso, recuperación y modificación. El sistema de archivos es la porción del SO responsable de organizar, crear, eliminar, leer, escribir, modificar, mover y controlar el acceso a dichos archivos.

3 Tópicos básicos en el manejo de dispositivos
Funciones básicas realizadas por el sistema de archivos pueden ser divididas en 3 partes: Presentar una visión abstracta o lógica de los archivos Facilitar el compartimiento de los dispositivos de I/O y optimizar su uso. Proveer mecanismos de protección de los datos (seguridad) El primer punto intenta simplificar las interfaces con los dispositivos de I/O que son de alta complejidad. Se define a un archivo lógico como una secuencia ordenada de registros lógicos R1,...,Rn Con un archivo lógico se provee a los usuarios con un espacio lineal y uniforme para almacenar datos.

4 Tópicos básicos en el manejo de dispositivos
La segunda función de un sistema de archivo es la del compartimiento y optimización de recursos de I/O. Se debe planificar el uso de los dispositivos por parte de los diferentes procesos. La tercera función compete con la seguridad en el acceso a los archivos por los usuarios dueños de los procesos.

5 Interface de Usuario Se introduce una interface abstracta con solo seis operaciones. Open (F, tipo_op) Close (F) Read_d (F, rec_no, buf) Write_d (F, rec_no, buf) Read_s (F, buf) Write_s (F, buf) Las dos primeras operaciones establecen y rompen la relación entre un proceso y archivo. Las cuatro últimas operaciones permiten manejar la transferencia de datos entre memoria y el archivo.

6 Modelo Jerárquico de Sistema de Archivo e I/O

7 Modelo Jerárquico Nivel 5: Recuperación de directorio
Conversión de nombres simbólicos en identificadores de archivos que permiten ubicar sus descriptores. Nivel 4: Sistema básico de archivos Se obtiene el descriptor de archivos desde el identificador Activa y desactiva los archivos con las rutinas open() y close(). Implementa seguridad de acceso al archivo. Nivel 3: Métodos de organización física Traducción de registros lógicos en físicos. Asignación de bloques de almacenamiento secundario Manejo de espacio libre.

8 Modelo Jerárquico Nivel 2: Técnicas de dispositivos de I/O
Las operaciones sobre registros físicos son convertidos en instrucciones de I/O. Manejo de buffering para optimización de acceso a los dispositivos. Nivel 1: Planificación y control de I/O Manejo de colas de “schedulers” de dispositivos de I/O Inicialización y control de dispositivos de I/O. La elección de estos cinco niveles se basa en la simplicidad y naturaleza de la intercomunicación entre ellos.

9 Modelo Jerárquico

10 Administración de Directorios
Permiten identificar y ubicar la totalidad de archivos con nombres simbólicos referenciados por los procesos. En este nivel se realiza la traducción del nombre simbólico a un identificador de archivo. En UNIX cada elemento de directorio contiene el nombre simbólico y un número identificador de archivos denominado “inodo”. Dicho número de inodo permite acceder al descriptor de archivo archivo.

11 Administración de Drectorios: UNIX e Inodos

12 Organización de Directorios
El método más común de organización es el árbol.

13 Sistema Básico de Archivos
En este nivel se realizan las siguientes funciones: Recuperación del descriptor de archivos Rutinas de apertura y cierre de archivos Seguridad de acceso a datos. Descriptores de archivos: Estructura de datos que describe la composición de un archivo. Esta estructura de datos normalmente es almacenada en una tabla del sistema de archivos. Hipotéticamente el descriptor de archivos podría almacenarse en la tabla de directorios.

14 Descriptores de archivos
Contiene tres unidades básicas: Identificación del archivo: Podría contener un nombre simbólico y un identificador interno. Información de dirección física: Contiene al ubicación física de los registros físicos y tamaño del archivo. Información de control de acceso: Controla que usuario y/o procesos pueden acceder al archivo y de que manera (lectura, escritura, etc.) Otra información que puede contener: Fechas de creación, modificación, último acceso, etc. Tipo de archivo (ordinario, directorio, dispositivo, etc.)

15 Apertura y Cierre de Archivos
Para que un proceso pueda tener acceso a los datos de un archivo, debe invocar un “system call” del tipo open(). Open() asocia el archivo con el proceso permitiendo la transferencia de datos bidireccional. Cuando un proceso termina de utilizar el archivo lo debe cerrar para retornar los recursos en uso al sistema El cierre de archivos puede ser explícito o implícito dependiendo de si proceso invoca la rutina de cierre o se realiza como parte de la terminación del proceso.

16 Rutina de Apertura Archivos
I) Para archivos existentes: Ubicar el archivo a partir del identificador provisto por el Nivel 5. Verificar que el usuario que invocó la rutina tiene los permisos necesarios para abrir el archivo en la forma solicitada. II) Para archivos nuevos (a crearse): Asignar almacenamiento secundario y/o dispositivos para el archivo. III) Para archivos existentes y nuevos: Obtener memoria primaria para buffers de I/O Almacenar datos de I), II), III) y el descriptor en la tabla de archivos abiertos.

17 Rutina de Cierre de Archivos
Para archivos temporarios: Liberar el espacio ocupado y borrar la entrada del archivo de la tabla de directorios. Para archivos nuevos a ser mantenidos por el sistema: Insertar entrada en la estructura de directorios Para archivos existen y nuevos a ser mantenidos: Actualizar descriptor de archivos (tamaño, ubicación física, fechas, etc.) Si es necesario introducir el marcador de “End of file” Para todos los archivos: Eliminar la entrada del archivo de todas las tablas de archivos abiertos Liberar Buffers y dispositivos utilizados por el archivo.

18 Métodos de Organización Física de Archivos
Este nivel utiliza la información del descriptor para ubicar los registros que se encuentran en el dispositivo de almacenamiento secundario. También se administra el espacio libre. Organización Lógica de Archivos: Archivo lógico: colección ordenada de registros R0, R1, ... Rn. Un registro es un bloque contiguo de información transferido mediante una lectura o escritura lógica. Archivo puede ser abierto para ser accedido de dos formas: Directa: Registros pueden ser accedidos en forma en un orden aleatorio. Secuencial: Registros son accedidos uno detrás del otro en forma serial.

19 Métodos de Organización Física de Archivos
El espacio en los dispositivos de almacenamiento secundario es organizado en base a registros físicos o bloques. El tamaño del bloque depende de la características del dispositivo. Es posible que varios registros lógicos mapeen a un único registro físico y viceversa. Se define a un archivo físico como una secuencia de registros físicos que corresponden a un archivo lógico. Existen varios métodos de organización física de archivos: asignación contigua, encadenada, indexada, etc.

20 Administración de Espacio Libre
El sistema operativo debe mantener una lista de bloques físicos libres. Existen diferentes métodos de implementar esta lista: Bit Vector Lista Encadenada Agrupamiento Conteo

21 Asignación de Espacio en Disco
La asignación de espacio en disco puede ser: Preasignación: Se asigna espacio en el momento de creación del archivo. Asignación dinámica: Se asigna espacio en demanda. Algunos métodos de asignación de espacio son: Asignación contigua Asignación encadenada Asignación indexada Asignación B-Tree

22 Asignación Contigua Cada archivo ocupa una serie contigua de bloques físicos.

23 Asignación Contigua En el descriptor de archivo se indica la dirección del primer bloque y el tamaño del archivo:

24 Asignación Contigua Ventajas: Desventajas:
Acceso secuencial y aleatorio a un registro simple Optima performance al recorrer un archivo en cuanto a movimientos de las cabezas de discos. Desventajas: Complejo para encontrar espacio libre para un nuevo archivo (algorítmos “best-fit” o “first-fit”). Se puede presentar fragmentación externa. Difícil estimar el espacio del archivo a-priori.

25 Asignación Encadenada
Cada archivo es una lista encadenada de bloques de discos.

26 Asignación Encadenada
Cada descriptor de archivo posee un puntero al primer y último bloque del archivo. Ventajas: No existe fragmentación externa. Asignación de espacio dinámica (no se necesita saber a-priori el tamaño del archivo) Desventajas: Acceso aleatorio ineficiente Baja confiabilidad integral del sistema de archivos.

27 Ejemplo de Asignación Encadenada: FAT

28 Asignación Indexada Utiliza bloques “índices” que contienen los punteros a los bloques que constituyen el archivo.

29 Asignación Indexada Ventajas: Desventajas:
No existe fragmentación externa No necesita conocerse a-priori el tamaño del archivo Es eficiente tanto para acceso aleatorio como secuencial Desventajas: Uso de espacio de disco por los bloques índices (en especial en archivos chicos)

30 Ejemplo de Asignación Indexada: UNIX

31 Asignación B-tree Tiende a minimizar en número de accesos a disco para la obtención de información del archivo.

32 Asignación B-tree Ventaja: Desventajas:
No necesita mantener archivos índices sino que la misma información de acceso está en el archivo. Al ser los B-tree árboles balanceados, el acceso aleatorio es logarítmico (del número de bloques). Desventajas: Acceso secuencial no eficiente. (Se solucionan con árboles B+-tree) Ejemplos de utilización de B-tree: IBM OS/2, NTFS (Windows NT File System)

33 Subsistema de I/O Traduce las operaciones de lectura/escritura generadas por el usuario en comandos de bajo nivel. Específicamente: Nivel 2: Maneja las técnicas de acceso a los dispositivos (I/O programada, DMA, etc.) Nivel 1: Planificación y control de dispositivos de I/O. Esquemas básicos de transferencia de información: I/O Programada. I/O con manejo de interrupciones DMA (Acceso Directo a Memoria)

34 I/O Programada Utilizada con dispositivos lentos orientados a caracteres ya que la CPU explícitamente realiza la transferencia de datos. Por ejemplo para escritura: CPU mueve un carácter entre memoria y buffer del dispositivo Inicia el dispositivo y esperar la terminación del mismo Realizar una nueva transferencia de datos.

35 Interrupciones También utilizada con dispositivos lentos orientados a caracteres ya que la CPU explícitamente realiza la transferencia de datos. En este caso se avisa la terminación de la operación de I/O implícitamente en cada instrucción de la CPU. Un proceso que necesita esperar por un dispositivo se bloquea a si mismo esperando por la interrupción que lo despertará.

36 DMA Un módulo especifico (controlador de DMA) controla el intercambio de datos entre memoria primaria y el dispositivo. Este esquema es utilizado con dispositivos rápidos y de gran flujo de transferencia de datos. La CPU solo inicia la transferencia: Start_io(contr, Contr_Prog) Read(contr, f_rec, buf) Write(contr, f_rec, buf) La CPU puede chequear el estado del controlador de DMA (a través de registros internos del mismo).

37 Buffering También implementado en el Nivel 2 del modelo
Objetivo de los buffers de I/O: Minimizar acceso a disco manteniendo en memoria primaria los registros de disco recientemente accedidos (e incluso de registros que serán accedidos en el futuro cercano: “read-ahead buffers). El espacio de memoria que ocupan los buffers depende de la configuración del sistema operativo.

38 Planificación de Discos
Los “request” de lectura y escritura originados en Nivel 2 son “planificados” por el “scheduler” de disco que ejecuta en el Nivel 1. El tiempo total para escribir o leer un registro físico es la suma de: Tiempo de búsqueda (“Seek time”) Tiempo de latencia (“Latency time”) Tiempo de transferencia (“Transfer time”) A estos tiempos que dependen de la tecnología del dispositivo físico hay que sumar otros tiempos. El más importante es: Tiempo de espera: Tiempo en que un “request” espera en la cola de espera para ser atendido.

39 Planificación de Disco
La planificación de la atención de esta cola de espera se conoce con el nombra de “Planificación de disco”. Algunos algoritmos son: FCFS: Muy simple de implementar. No ofrece la mejor performance puesto que si las solicitudes alternan pistas distantes, el tiempo de búsqueda puede ser alto. SSTF (Shortest-seek-time-first): Selecciona el “request” con el menor tiempo de búsqueda desde el actual. Puede conducir a inanición. SCAN o ascensor: El cabezal recorre el disco desde un extremo al otro atendiendo solicitudes encontradas. Una variante de SCAN es C-Scan (Circular-SCAN). Muy buena performance.

40 Planificación de Disco
Look y C-Look: No mueve el cabezal hasta el extremo del disco (como SCAN o C-SCAN) sino hasta el “request” de la pista más distante.

41 Ejemplo de File System: UNIX System V
Una de las tantas contribuciones de UNIX a la teoría de SO es su file system (quizás la más importante. El file system de UNIX se basa en los inodos que son los descriptores de archivos. Existen dos tipos de inodos: “In-core inodes”: Residen en la tabla de inodos mantenida en memoria primaria: inode[NINODE] Inodos en disco: Residen en la tabla de inodos mantenida en disco.

42 Tablas del FS en Memoria
En memoria, el FS mantiene las siguientes tablas: Tabla de archivos - file[NFILE]: Tabla global Mantiene entre otras cosas un puntero al inodo que hace referencia. Tabla de inodos “in-core” - inode[NINODE]: Tabla global. Mantiene los inodos (in-core) de los archivos abiertos. Tabla de descriptores por procesos - uofile[NOFILE]: Una tabla por proceso Mantiene un puntero al elemento de la tabla de archivos que hace referencia.

43 Tablas del FS en Memoria
Cuando se crea o abre un archivo (con el system call: creat( ) u open( )) se devuelve un número entero que se denomina “descriptor de archivos”. Este número debe ser utilizado por los otros “system calls” (read, write, etc.) para referenciar al archivo.

44 Tablas del FS en Memoria

45 Estructura del FS en Disco
En general puede existir más de un FS en un disco. Siempre debe existir por lo menos un FS denominado root file system. Todo FS en disco contiene las siguientes partes: Boot block: Contiene código de booteo en el caso en que el FS sea el “root file system” Superblock: Contiene diversos campos de estadísticas del File System y tablas: espacio libre, ocupado, lista de bloques libres, número de inodos libres, etc. Tabla de inodos: Contiene la tabla de los inodos residentes en el file system (inodos en disco). Bloques de Datos: Registros físicos que componen los archivos propiamente dichos.

46 Inodos: Descripción Inodos en disco contienen los siguientes elementos: Identificación de Propiedad del Archivo: uid y gid Tipo de Archivo: Regular (u ordinario), directorio, especiales (dispositivos orientados a caracteres o bloques) y FIFO (pipes) Permiso de acceso: Protege de acuerdo a tres clases de usuarios: Usuario dueño, grupo dueño y otros usuarios. Cada clase puede tener derecho para leer (r), escribir (w) y ejecutar (x). Información sobre fecha y horas: Hora/fecha de modificación y “acceso” al archivo. También última modificación del inodo. Número de links al archivo: Número de nombres que posee un archivo dentro del file system (hard-links) Tabla de contenido de direcciones: Identifica los bloques físicos que componen el archivo. Tamaño del archivo: Medido en Bytes. Se considera el offset de la ubicación del dato.

47 Ejemplo de Inodo (en disco)
owner daniel group iie type regular perms rwxr-xr-x accessed Nov :45 PM modified Nov :30 AM inode Nov :30 PM size bytes direcciones de bloques en disco ...

48 In-core inode El inodo en memoria contiene además los siguientes campos: Estado del inodo: Puede estar locked, modificado, etc. Identificador del Dispositivo: Indica el dispositivo donde reside el file system que contiene el archivo. Número de inodo: Número identificatorio del inodo. Contador de referencia: Número de referencias a un mismo archivo. Punteros a otros inodos: Necesario por implementación de la cola de inodos (no es un array)

49 System Call open( ) Sintaxis: fd = open (pathname, flags, mode)
pathname: nombre del archivo (camino) flags: forma de apertura: read, write, ec. mode: forma de creación (r, w, etc.) si el archivo va a ser creado fd: número entero. Indica el “file descriptor number” o índice en la tabla de descriptores por proceso. Este número es usado por otros system calls para referenciar al archivo (close, write, read, etc.)

50 Open ( ) algoritmo open input: file name, type of open, file permission output:file descriptor begin convertir nombre de archivo a número de inodo; {algoritmo namei} if (archivo no existe o no se permite su acceso) return (error); asignar entrada en tabla de archivos para inodo; inicializar contador y offset en la entrada de la tabla de archivos; asignar entrada del fd e inicializar puntero; return (descriptor de archivo); end

51 Open ( ) Ejemplo: Un proceso realiza los siguientes open( ):
fd1 = open (“/etc/passwd”,O_RDONLY); fd2 = open (“local”,O_RDWR); fd3 = open (“/etc/passwd”,O_WRONLY); Luego otro proceso ejecuta los siguientes system calls: fd2 = open (“privado”,O_RDONLY); Las tablas quedarían:

52 Open( ) Luego del primer proceso:

53 Open ( ) Luego del segundo proceso:

54 System call close ( ) Sintaxis:
close (fd) Si el contador de referencia de la tabla de archivos en mayor de uno, lo único que hace close es decrementar dicho valor. Si el contador es uno, el contador libera la entrada en la tabla de archivos y el inodo asignado con open( ), salvo que otro proceso este utilizando el inodo, en cuyo caso decrementa el contador respectivo Se libera la entrada en tabla de descriptores.

55 Close ( ) Luego que el segundo proceso ejecuta close():

56 System call dup ( ) Este system call copia un fd en la primera entrada libre de la tabla de descriptores. Sintaxis: nuevo_fd = dup (fd) Ejemplo: Se tiene la siguiente secuencia de system calls: se abrió “/etc/passwd” (fd = 3) se abrió “local” (fd = 4) se abrió “/etc/passd” nuevamente (fd = 5) se duplicó el descriptor 3, devolviendo el descriptor 6 Las tablas quedarían:

57 System call dup( )

58 System call read ( ) y write ( )
Sintaxis: number = read (fd, buffer, count) number = write (fd, buffer, count) Donde: fd: File Descriptor buffer: posición donde se almacenan / escriben los bytes leídos count: número de bytes a leer / escribir number: número real de bytes leídos / escritos.


Descargar ppt "Módulo 7: Sistema de Archivos"

Presentaciones similares


Anuncios Google