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
- 771