Gestión de Archivos y Estructura de Inodes
Cálculo del Tamaño Máximo de Archivo
Valor máximo de archivo: (bytes inode / bytes que ocupa c/índice) x bytes por bloque
Solución al Límite de Tamaño Máximo
Para archivos más grandes, el inode no apunta solo a bloques de datos, sino también a bloques de punteros (indirectos, dobles, triples) que a su vez apuntan a muchos más bloques de datos, permitiendo archivos muchísimo más grandes con el mismo tamaño de inode.
Capacidad y Direccionamiento de Disco
- Sectores totales: (sectores/pista x cilindros x pistas/cilindros)
- Capacidad total del disco (en bytes): (sectores totales) x bytes por sector
- Capacidad del disco (en TiB): Capacidad en bytes / 1.099.511.627.776 (1 TiB)
- Valor máximo del Índice LBA: (sectores totales) – 1
Algoritmos de Reemplazo de Páginas
- FIFO/FCFS (First-In, First-Out / First-Come, First-Served): Saca la página que entró hace más tiempo.
- LRU (Least Recently Used): Saca la página menos recientemente usada.
- Segunda Oportunidad (SC – Second Chance): Es una variante de FIFO, donde las páginas con el bit de Referencia (R=1) reciben otra oportunidad.
- Clock: Implementación eficiente de SC en un círculo con una manecilla (puntero).
- NRU (Not Recently Used): Clasifica las páginas por los bits R/M y elige (al azar) la peor clase para reemplazar.
- WSClock (Working Set Clock): Combina Clock con el concepto de conjunto de trabajo; saca páginas no usadas recientemente.
Manejo de Interrupciones (IRQ)
La capa de IRQ atiende la interrupción siguiendo estos pasos:
- Identifica qué dispositivo la generó.
- Limpia la señal en el hardware.
- Si corresponde, mueve datos a buffers o los marca como listos.
- Desbloquea o despierta procesos que estaban esperando esa E/S.
- Finalmente, restaura el contexto para que la CPU siga ejecutando el código que estaba corriendo antes de la interrupción.
Contenido del Nodo Índice (Inode)
- Tipo de archivo
- Permisos
- Usuario propietario (UID)
- Grupo propietario (GID)
- Marcas de tiempo
- Tamaño del directorio
- Cantidad de enlaces
- Punteros a bloques de datos en disco
Modelos de Subsistema de E/S
- Mapeada en memoria (Memory-Mapped I/O): Los registros de dispositivos se ubican en el mismo espacio de direcciones que la memoria RAM.
- Aislada por puertos (Port-Isolated I/O): La CPU tiene un espacio de direcciones separado para puertos de E/S.
- Híbrido: Coexisten dispositivos accesibles mediante ambos subsistemas.
Tipos de Dispositivos de E/S
Dispositivos Orientados a Bloques
HDD, SSD, USB, CD/DVD
Dispositivos Orientados a Carácter
Teclado, ratón (mouse), terminal, impresora
Bits de Referencia y Clases de Páginas (NRU)
Bits de referencia:
- R=1 (Página leída o escrita)
- M=1 (Página modificada/escrita)
Clasificación de páginas:
- Clase 0: R=0, M=0 (No usada recientemente, no modificada) – Mejor candidata a reemplazo.
- Clase 1: R=0, M=1 (No usada recientemente, modificada)
- Clase 2: R=1, M=0 (Usada recientemente, no modificada)
- Clase 3: R=1, M=1 (Usada recientemente, modificada) – Peor candidata a reemplazo.
Tipos de Operaciones de E/S
- E/S Programada (Polling): La CPU consulta el registro del dispositivo en bucle (polling) hasta que esté listo, transfiriendo los datos ella misma. Ejemplo: leer puerto serie con
whileesperando un carácter. - E/S por Interrupciones: El SO inicia la operación y continúa; el dispositivo interrumpe al terminar. El ISR (Manejador de Interrupción) copia los datos y despierta los procesos. Ejemplo: placa de red al recibir un paquete.
- E/S con DMA (Acceso Directo a Memoria): El SO programa el controlador DMA con origen, destino y tamaño. El DMA mueve datos directamente entre memoria y dispositivo, sin intervención de la CPU. Ejemplo: leer un bloque de disco a RAM.
- Procesadores de E/S (Canales): La CPU les entrega un programa de canal; estos procesadores gestionan múltiples operaciones de dispositivos autónomamente. Ejemplo: mainframe IBM con canales controlando varios discos.
Errores Comunes en Sistemas de Archivos
- Bloques malos (Bad Blocks): Son bloques físicos del disco que no pueden almacenar datos de forma confiable (errores permanentes). Irreparable.
- Inconsistencias: Incoherencias entre las estructuras de datos del sistema de archivos. Ejemplo: un bloque marcado como libre en el mapa de bits, pero referenciado por un inode. Reparable.
- Cadenas perdidas (Lost Chains): Cadenas de bloques marcadas como usadas (ocupadas), pero ninguna entrada de directorio apunta a ellas. Reparable parcialmente.
- Cadenas cruzadas (Cross-Linked Chains): Dos archivos diferentes comparten uno o más bloques de datos (la FAT indica que ciertos bloques pertenecen a ambas cadenas). Reparable.
Diferencias Clave: FAT vs. Inodes
- FAT (File Allocation Table): Hay una única tabla global al comienzo del disco. Cada entrada representa un bloque e indica cuál es el siguiente bloque del archivo. Para recorrer un archivo, el sistema debe seguir esa cadena dentro de la FAT, bloque a bloque (acceso secuencial a los punteros).
- Inodes: Cada archivo tiene su propia estructura donde están los punteros a sus bloques de datos. Para acceder a un archivo, el sistema lee el inode correspondiente y desde ahí sabe directamente qué bloques de datos usar, sin depender de una única tabla gigante para todo el disco (acceso más directo).
Mapas de Bits (Bitmaps)
- Bitmap de bloques de datos: Marca qué bloques del disco están libres u ocupados. Se usa para asignar y liberar espacio a los archivos.
- Bitmap de inodes: Marca qué inodes están en uso y cuáles están libres. Se usa para crear nuevos archivos/directorios o liberar sus estructuras al borrarlos.
Jerarquía de Capas de E/S en Sistemas Operativos Modernos
El flujo de una operación de E/S típicamente sigue esta jerarquía:
- Capa de Usuario
- Librerías (Bibliotecas)
- Llamadas al Sistema
- Subsistema de E/S del Kernel
- Drivers (Controladores)
- Rutinas de Interrupción
- Controladores y Dispositivos de Hardware
