Sistemas Operativos:

Unidad 2 - Sistema de Archivos

Gustavo Andrés Uribe Gómez

guribe@unicomfacauca.edu.co

+572 8220517 Ext. 130

Requerimientos para la Persistencia de Datos

  • Debe ser posible almacenar una cantidad muy grande de información
  • La información debe sobrevivir a la terminación del proceso que la utilice
  • Múltiples procesos deben ser capaces de acceder a la información concurrentemente

Sistemas de Archivos

Sistemas de Archivos

  • FAT-12, FAT-16 y FAT-32 (File Allocation Table)
    • Fragmentación de los discos
    • Nombres cortos (8 caracteres)
    • No diferencia mayúsculas
  • NTFS
    • Nombres más extensos
    • No usa la memoria para la tabla de archivos
    • Requiere al menos 400MB para operar
    • Reduce la fragmentación

 

Sistemas de Archivos

  • Ext2, Ext3 y Ext4
    • Nombres 255 caracteres
    • Soporta volúmenes hasta 1024 PiB.
    • Reduce la fragmentación
    • Poco uso de la memoria principal

 

Estructura de Archivos

Tipos de Archivos

Fuente: Sistemas Operativos Modernos, tanenbaum, 3ra edición

Archivo Ejecutable

Fuente: Sistemas Operativos Modernos, tanenbaum, 3ra edición

Tipos de Acceso

  • Acceso secuencial
  • Accesos Aleatorio

Atributos de los Archivos

Fuente: Sistemas Operativos Modernos, tanenbaum, 3ra edición

Operaciones con Archivos

  • Create
  • Delete
  • Open
  • Close
  • Read
  • Write
  • Append
  • Seek
  • Get attributes
  • Set attributes
  • Rename

Operaciones con Archivos

/* Programa para copiar archivos. La verificación y el reporte de errores son mínimos. */
#include
#include
#include
#include
<sys/types.h>
<fcntl.h>
<stdlib.h>
<unistd.h>
/* incluye los archivos de encabezado necesarios *
int main(int argc, char *argv[]); /* prototipo ANSI */
#define TAM_BUF 4096
#define MODO_SALIDA 0700 /* usa un tamaño de búfer de 4096 bytes */
/* bits de protección para el archivo de salida */
int main(int argc, char *argv[])
{
int ent_da, sal_da, leer_cuenta, escribir_cuenta:
char bufer[TAM_BUF];
if (argc != 3) exit(1); /* error de sintaxis si argc no es 3 */
/* Abre el archivo de entrada y crea el archivo
ent_da = open(argv[1], O_RDONLY);
if (ent_da < 0) exit(2);
sal_da = creat(argv[2], MODO_SALIDA);
if (sal_da < 0) exit(3); de salida */
/* abre el archivo fuente */
/* si no se puede abrir, termina */
/* crea el archivo de destino */
/* si no se puede crear, termina */
/* Ciclo de copia */
while (TRUE) {
leer_cuenta = read(ent_da,bufer,TAM_BUF); /* lee un bloque de datos */
if (lee_cuenta <= 0) break;
/* si llega al fin de archivo o hay un error, sale del ciclo */
escribe_cuenta = write(sal_da,bufer,lee_cuenta); /* escribe los datos */
if (escribe_cuenta <= 0) exit(4);
/* escribe_cuenta <= 0 es un error */
}
/* Cierra los archivos */
close(ent_da);
close(sal_da);
if (lee_cuenta==0)
exit(0);
else
exit(5);
/* no hubo error en la última lectura */
/* hubo error en la última lectura */
}

Operaciones con Archivos

  • Create
  • Delete
  • Opendir
  • Closedir
  • Readdir
  • Rename
  • Link
  • Unlink

Implementación de Sistema de Archivos

Distribuición del Sistema de Archivos

Fuente: Sistemas Operativos Modernos, tanenbaum, 3ra edición

Implementación de Archivos

Fuente: Sistemas Operativos Modernos, tanenbaum, 3ra edición

Implementación de Archivos

Fuente: Sistemas Operativos Modernos, tanenbaum, 3ra edición

Implementación de Archivos

Fuente: Sistemas Operativos Modernos, tanenbaum, 3ra edición

Implementación de Archivos

Fuente: Sistemas Operativos Modernos, tanenbaum, 3ra edición

Implementación de Directorios

Fuente: Sistemas Operativos Modernos, tanenbaum, 3ra edición

Algunos Tipos de Sistemas de Archivos

Sistemas de Archivos LFS (Long Structured File System)

  • La mayoría de las peticiones se encuentran en la caché
  • Las escrituras de archivos pequeños son lentas
  • Solución: Grabar en el disco por segmentos de aproximadamente 1MB
  • Los segmentos incluyen nodos-i a diferencia de en Unix donde se encuentran en una posición fija
  • Tiene un hilo limpiador para evitar la fragmentación y los nodos-i inútiles

Sistemas de Archivos por Bitácora JFS (Journaling files system)

  • Ejemplos: NTFS, ext3 y ReiserFS
  • Sistema para garantizar la integridad del sistema de archivos frente a fallas en el sistema
  • Introduce un sistema de transacciones para realizar las operaciones no realizadas debido a una falla
  • Las operaciones registradas deben ser idempotentes (repetibles n veces con los mismos resultados)

Sistemas de Archivos Virtuales

Fuente: Sistemas Operativos Modernos, tanenbaum, 3ra edición

Ejemplos de Sistemas de Archivos

ISO 9660

Fuente: Sistemas Operativos Modernos, tanenbaum, 3ra edición

FAT

Fuente: Sistemas Operativos Modernos, tanenbaum, 3ra edición

FAT

Fuente: Sistemas Operativos Modernos, tanenbaum, 3ra edición

Sistemas Operativos - Unidad 2 - Sistema de Archivos

By Gustavo Andrés Uribe Gómez

Sistemas Operativos - Unidad 2 - Sistema de Archivos

  • 754