Ingeniería de Software · Sistemas Operativos

Sesión 14 · Sistemas de Archivos Modernos y Taller Integrado

Arquitecturas de almacenamiento, Journaling y Memoria Virtual

Sesión magistral y práctica de 2 horas enfocada en el análisis profundo de arquitecturas reales de sistemas de archivos (FAT, NTFS, Ext, HFS+) y la resolución matemática de traducciones de direcciones de memoria virtual.

Navegación: para cambiar de diapositiva, Home / End para ir al inicio/fin, F pantalla completa.

Objetivos de la Sesión

¿Qué lograremos hoy?

  • Comparar FAT, NTFS, Ext4 y HFS+/APFS desde estructura interna, política de asignación, recuperación y costo operacional.
  • Explicar Journaling como protocolo de consistencia: intención, confirmación, replay y límites frente a corrupción de datos de usuario.
  • Resolver traducciones de direcciones con método reproducible: descomposición de bits, TLB, tabla de páginas, fallo y reemplazo.
  • Conectar decisiones de sistema de archivos con el comportamiento de Swap, latencia de page fault y rendimiento de aplicaciones.

Acrónimos rápidos: SO = Sistema Operativo, Swap = espacio de disco usado como extensión de RAM, Page fault = fallo al acceder a una página no residente.

Contexto de Ingeniería

Esta sesión funciona como cierre técnico de Unidad 2: no basta saber definiciones. Se espera justificar decisiones arquitectónicas según carga de trabajo, tolerancia a fallos y evidencia cuantitativa de tiempos de acceso.

Producto esperado: resolución completa de casos con trazabilidad de cada paso y argumentos de diseño.

De la Asignación a la Implementación

El problema del Mundo Real

Los modelos vistos (contigua, enlazada, indexada) son el punto de partida. En producción aparecen restricciones que fuerzan arquitecturas híbridas:

  • Persistencia con cortes de energía y reinicio no limpio.
  • Concurrencia de metadatos y datos bajo miles de operaciones por segundo.
  • Mezcla de patrones I/O: secuencial, aleatorio, append-only y writes pequeños.
  • Seguridad y auditoría: ACLs, cifrado, cuotas, integridad.

Acrónimos rápidos: ACL = Access Control List: Es un mecanismo de seguridad que define quién puede acceder a un recurso (archivo, red, sistema) y qué operaciones puede realizar sobre él.

Criterios de análisis de hoy

Evaluaremos cada sistema con cinco preguntas: ¿cómo localiza bloques?, ¿cómo protege metadatos?, ¿qué tan costosa es su recuperación?, ¿qué tan portable es?, ¿en qué cargas se degrada?

Con esas respuestas, la selección deja de ser "preferencia" y se vuelve ingeniería justificable.

Arquitectura FAT (File Allocation Table)

Fundamentos de FAT

  • Paradigma: Asignación enlazada centralizada.
  • Estructura central: Tabla FAT al inicio del volumen (usualmente con copia), directorio y área de datos por clusters.
  • Cadena lógica: cada entrada apunta al siguiente cluster del archivo (lista enlazada en disco).
  • Directorio: guarda nombre, atributos, cluster inicial y tamaño; la ruta completa depende del directorio jerárquico.

Glosario: Cluster = unidad de asignación en disco; Volumen = partición formateada; EOF = End Of File (fin de archivo).

Implicaciones directas

  • FAT16: al crecer disco, crece tamaño de cluster y empeora fragmentación interna.
  • FAT32: mejora capacidad de volumen, pero conserva límite de archivo de 4 GiB.
  • exFAT: corrige límites para flash moderno, pero sigue orientado a portabilidad más que a seguridad transaccional.
Análisis Crítico de FAT

Ventajas en la Ingeniería

  • Modelo simple: implementación corta, bajo costo de RAM y firmware.
  • Portabilidad: prácticamente todos los SO y dispositivos consumen FAT/exFAT.
  • Caso ideal: medios removibles, transferencia entre plataformas y uso offline sin ACL compleja.

Vulnerabilidades Estructurales

  • Acceso aleatorio costoso: seguir cadenas largas degrada rendimiento en archivos fragmentados.
  • Punto sensible: daño de FAT compromete topología global del volumen.
  • Sin journaling robusto: recuperación ante corte depende de escaneo correctivo.
  • Seguridad limitada: sin permisos finos ni auditoría nativa comparable con NTFS/Ext4.
Arquitectura NTFS (New Technology File System)

El paradigma de la MFT

  • Centro neurálgico: MFT con registros de tamaño fijo para archivos y metadatos del sistema.
  • Todo como objeto NTFS: directorios, bitmap, journal y atributos siguen el mismo modelo.
  • Archivos residentes: datos muy pequeños pueden quedar dentro del registro MFT y ahorrar I/O.

Glosario: MFT = Master File Table; I/O = Input/Output (entrada/salida entre CPU, RAM y disco).

Estructuras Avanzadas

  • Indices tipo B-Tree: directorios grandes con búsqueda logarítmica.
  • Bitmap de clusters: administración de espacio libre con actualización frecuente de metadatos.
  • ADS: múltiples flujos por archivo; útil en compatibilidad, sensible en seguridad forense.
El salto cualitativo: Journaling

Qué garantiza y qué NO garantiza

Journaling protege principalmente la consistencia de metadatos. No implica automáticamente que el contenido del archivo de usuario siempre quede íntegro.

  • Writeback: prioriza rendimiento; datos pueden llegar después de metadatos.
  • Ordered: datos principales se escriben antes de confirmar metadatos.
  • Data journaling: datos y metadatos pasan por journal; mayor seguridad, mayor costo.

Cómo funciona en una frase: el sistema registra la intención de cambio en un diario secuencial, confirma la transacción y luego aplica/recupera cambios para que el sistema de archivos no quede en estado intermedio.

Idea clave de ingeniería: journaling reduce tiempo de recuperación (recovery time) porque evita reconstruir todo el volumen; solo procesa transacciones pendientes del journal.

Secuencia operacional

1. Intento
de escritura
2. Registro
en Journal
3. Commit
de transacción
4. Replay o
rollback al reiniciar

El resultado es recuperación en segundos/minutos en lugar de escaneos completos de volumen.

Detalle interno de una transacción

  1. Se bloquea temporalmente la estructura de metadatos afectada.
  2. Se escribe un descriptor de cambios en el journal.
  3. Se registran los bloques de metadatos involucrados.
  4. Se marca commit cuando la transacción es válida.
  5. Posteriormente se hace checkpoint: los cambios pasan a su ubicación final.

Glosario: Commit = confirmación final de la transacción; Rollback = revertir cambios incompletos; Replay = reejecutar operaciones registradas en el journal.

Journaling en Profundidad: Ciclo Completo de Recuperación

¿Qué pasa cuando se corta la energía?

Supón que el SO está creando un archivo y actualiza: directorio, mapa de bloques e i-nodo/MFT. Si el corte ocurre en la mitad, el journal evita que el volumen quede "a medias".

  1. Al reiniciar, el sistema localiza el journal.
  2. Lee transacciones desde el último checkpoint.
  3. Si una transacción tiene commit: replay.
  4. Si no tiene commit: rollback (se descarta).
  5. Se limpia el journal y se monta el volumen consistente.

Límites y decisiones de diseño

  • No reemplaza backups: protege consistencia, no borra errores humanos.
  • Más seguridad = más escrituras: data journaling incrementa I/O.
  • Disco subyacente importa: SSD/NVMe reducen costo del journal.
  • Parámetros importan: modo de journaling y frecuencia de commit cambian latencia y riesgo.

Glosario: Checkpoint = punto hasta el cual los cambios ya están aplicados en destino final; Montaje = proceso de habilitar el volumen para uso del SO.

NTFS: Orientación Empresarial

Funcionalidades para Entornos Corporativos

  • ACLs detalladas: heredables, auditables y con semántica avanzada de permisos.
  • Cuotas y trazabilidad: control por usuario/grupo para entornos multiusuario.
  • EFS y atributos: cifrado por archivo y metadatos extensibles.
  • Integración Windows: pensado para políticas corporativas y Active Directory.

Glosario: ACL = Access Control List (lista de permisos detallada); EFS = Encrypting File System (cifrado por archivo en NTFS).

Compromisos de Rendimiento

Toda esta complejidad exige cachés más grandes de metadatos y operaciones adicionales por escritura.

  • En cargas de archivos pequeños, el overhead de metadatos puede dominar el tiempo total.
  • En hardware limitado, exFAT puede ser más conveniente si se prioriza portabilidad y simplicidad.
Familia Ext (Extended File System)

El enfoque UNIX: i-nodos

  • Separación nombre/objeto: directorios enlazan nombre hacia i-nodo.
  • i-nodo: metadatos, permisos, tiempos y mapa lógico de datos.
  • Asignación por grupos: block groups mejoran localidad de datos y metadatos.
  • Punteros jerárquicos: directos e indirectos, luego optimizados por extents.

Glosario: POSIX = estándar de interfaces y permisos en sistemas tipo Unix; i-nodo = estructura que describe metadatos y ubicación lógica de un archivo.

Evolución: Ext2 -> Ext3 -> Ext4

  • Ext2: veloz y simple, sin recuperación transaccional.
  • Ext3: journaling compatible, salto de confiabilidad.
  • Ext4: extents, delayed allocation y mejor gestión de grandes volúmenes.
El concepto de Extents (Ext4)

Reemplazando los punteros bloque a bloque

Un extent resume una región contigua: bloque inicial + longitud. Se reducen punteros y operaciones de búsqueda.

  • Menos metadatos por archivo grande.
  • Mejor lectura secuencial en cargas multimedia y backups.
  • Menor presión sobre caché de metadatos en kernel.

Impacto en el Desarrollo

En un archivo de 1 GiB, pasar de miles de entradas de bloques a pocos extents reduce fragmentación lógica y acelera recorridos de I/O. Esto se traduce en menor latencia de arranque de servicios y menor tiempo de restauración.

Bloques sueltos vs Extent

Bloques sueltos: 101→230→88→540... (muchas referencias)

Extent: [inicio=1200, longitud=256 bloques]

El Ecosistema Apple: HFS+ y APFS

HFS+ a APFS: El cambio de paradigma

  • HFS+: diseño robusto para HDD, con limitaciones en cifrado y snapshots modernos.
  • APFS: arquitectura copy-on-write, optimizada para SSD y operaciones atómicas.
  • Metaobjetivo: consistencia rápida, clonación y administración eficiente en dispositivos móviles.

Glosario: SSD = Solid State Drive (almacenamiento de estado sólido); HDD = disco mecánico; Copy-on-write = copiar solo cuando se modifica un bloque.

Características de APFS

  • Clonación: copias lógicas instantáneas sin duplicar bloques al inicio.
  • Snapshots: puntos de recuperación consistentes en segundos.
  • Space sharing: varios volúmenes comparten pool físico dinámico.
  • Cifrado nativo: integración profunda en ecosistema Apple.
Síntesis Comparativa para Ingeniería
Característica FAT32 / exFAT NTFS (Windows) Ext4 (Linux) APFS (Apple)
Estructura Base Tabla FAT + clusters MFT + índices tipo B-Tree i-nodos + block groups + extents Copy-on-write + árboles + snapshots
Journaling No (en FAT/exFAT clásico) Sí (metadatos y recuperación rápida) Sí (modos configurables) Modelo transaccional + snapshots
Control Acceso Muy básico ACLs granulares y auditoría POSIX + ACL opcional POSIX + cifrado integrado
Punto fuerte Interoperabilidad y simplicidad Administración corporativa en Windows Servidores y cargas Linux de propósito general Ecosistema Apple con SSD y snapshots
Riesgo principal Corrupción de tabla y poca seguridad Overhead en hardware limitado Mala sintonía puede afectar latencia Dependencia de plataforma Apple

Decisión recomendada: escoger por carga real, no por costumbre de plataforma.

Transición: Del Disco a la Memoria RAM

Ahora aplicamos todo a un problema de rendimiento real:
traducción de direcciones, TLB y costo de page faults.

Taller de Memoria Virtual: El puente entre CPU y Disco

Recordando el Modelo

La CPU emite direcciones virtuales. La MMU intenta resolverlas primero en TLB; si falla, consulta tabla de páginas y eventualmente genera page fault.

  • Página: bloque lógico del proceso.
  • Marco: bloque físico en RAM del mismo tamaño.
  • TLB: caché de traducciones recientes para reducir latencia.
  • Tabla de páginas: fuente de verdad del mapeo virtual-físico.

Glosario: MMU = Memory Management Unit; TLB = Translation Lookaside Buffer (caché de traducciones); Thrashing = exceso de fallos de página que degrada fuertemente el rendimiento.

El Papel del Sistema de Archivos

Si no hay marco libre, el SO mueve páginas al área de swap y lee desde almacenamiento secundario. Ahí impactan directamente la latencia del disco, el sistema de archivos y la política de reemplazo.

Conclusión: page fault frecuente + E/S lenta = degradación severa (thrashing).

Fundamentos Matemáticos de la Traducción

Análisis de Bits

Toda dirección lógica se parte en: número de página (p) y desplazamiento (d).

  • d: si tamaño de página = 4 KiB = 2^12, entonces d usa 12 bits.
  • p: bits restantes (más significativos) de la dirección virtual.
  • Regla práctica: p = DL div tam_pagina, d = DL mod tam_pagina.

Algoritmo Operativo (examen/taller)

1) Calcular p y d. 2) Consultar TLB por p. 3) Si TLB hit: obtener marco f. 4) Si TLB miss: consultar tabla de páginas. 5) Si bit de validez = 0: page fault. 6) Atender fault (reemplazo si aplica) y actualizar TLB. 7) Dirección física: DF = (f * tam_pagina) + d.

Glosario: div = división entera (sin decimales); mod = residuo de la división; DF = Dirección Física.

Ejercicio Práctico 1: Traducción Directa

Enunciado Claro y Criterio de Entrega

Escenario: sistema con páginas de 4 KiB (4096 bytes). Dirección lógica solicitada: 8250.

Supuesto obligatorio: TLB inicial vacío. Use la siguiente tabla de páginas del proceso:

Página (p) Marco Físico (f) Bit Validez (v) Bit Modificado (m)
0510
1811
2-0-
3210

Lo que debe entregar (15 min):

  1. Calcule p y d mostrando la operación div/mod.
  2. Indique si hay hit o miss en TLB y justifique en una frase.
  3. Revise la tabla en la fila p calculada e informe v y f (si existe).
  4. Concluya explícitamente: hay o no page fault.
  5. Si hay page fault, escriba el orden de atención del SO (mínimo 5 pasos).

Formato sugerido de respuesta: Datos -> Cálculo p,d -> Estado TLB -> Lectura de tabla -> Decisión final.

Punto crítico de evaluación: no basta decir "hay fallo"; debe demostrarse con el bit de validez.

Solución Ejercicio 1: Resolución Analítica

Paso a Paso (sin saltos lógicos)

Datos del problema: tam_pagina = 4096, DL = 8250, TLB inicial vacía.

  1. Separar dirección: p = 8250 div 4096 = 2, d = 8250 mod 4096 = 58.
  2. Consultar TLB: no hay entrada para p=2, por tanto hay miss TLB.
  3. Consultar tabla de páginas: en p=2 se observa v=0.
  4. Decisión: v=0 implica página no residente, ocurre page fault.

Verificación rápida: 2*4096 = 8192 y 8192 + 58 = 8250, la descomposición (p,d) es correcta.

Servicio del Page Fault (orden operativo)

  1. CPU genera trap y transfiere control al kernel.
  2. Kernel valida que la referencia sea legal para el proceso.
  3. Busca marco libre; si no existe, selecciona una víctima.
  4. Si la víctima tiene m=1, escribe primero a disco (swap o archivo).
  5. Carga la página p=2 desde respaldo secundario a RAM.
  6. Actualiza PTE (v=1, nuevo marco) y luego TLB.
  7. Reintenta la instrucción que falló.

Conclusión del ejercicio: no se calcula DF en este punto inicial porque la página todavía no estaba en RAM.

Glosario: Trap = interrupción hacia el kernel; PTE = Page Table Entry (entrada de tabla de páginas); Víctima = página elegida para reemplazo.

Ejercicio Práctico 2: Cálculo Exitoso

Enunciado Claro y Resultado Esperado

Escenario: mismo sistema (4 KiB/página). Dirección lógica: 4150.

Supuesto: use la misma tabla del ejercicio anterior y considere TLB sin entrada previa para la página consultada.

Lo que debe entregar (10 min):

  1. Calcule p y d mostrando cada operación.
  2. Decida estado de TLB (hit/miss) y luego consulte la tabla.
  3. Reporte los valores de v y f para la página hallada.
  4. Si v=1, calcule la DF con sustitución numérica completa.
  5. Compare costo relativo de: hit TLB, miss TLB sin fault y page fault.

Tip de validación: luego de obtener DF, verifique que $DL = p * tam\_pagina + d$.

Si no muestra la sustitución de la fórmula, la respuesta se considera incompleta.

Solución Ejercicio 2: Resolución Analítica

Paso a Paso (caso sin fallo de página)

Datos del problema: tam_pagina = 4096, DL = 4150.

  1. Separar dirección: p = 4150 div 4096 = 1, d = 4150 mod 4096 = 54.
  2. TLB: asumimos que no existe entrada previa para p=1, entonces miss TLB.
  3. Tabla de páginas: para p=1 se tiene f=8 y v=1.
  4. Decisión: como v=1, la página ya reside en RAM y no hay page fault.

Verificación rápida: 1*4096 = 4096 y 4096 + 54 = 4150, la descomposición (p,d) es consistente.

Cálculo Final Físico

  1. Fórmula: DF = (f * tamaño_página) + d.
  2. Sustitución: DF = (8 * 4096) + 54.
  3. Producto: 8 * 4096 = 32768.
  4. Suma final: DF = 32768 + 54 = 32822.

Interpretación: hubo miss TLB, pero sin page fault. El costo es intermedio: más que hit TLB, mucho menor que traer página desde disco.

Plantilla reusable para cualquier ejercicio: 1) calcular p,d; 2) revisar TLB; 3) revisar v; 4) decidir fault/no fault; 5) si v=1, calcular DF.

Aclaracion tecnica clave: bits de validez y modificacion

Como se usan y como cambian v y m

En cada acceso, la MMU y el kernel consultan la entrada de tabla de paginas (PTE). Los bits v (validez) y m (modificacion) cambian segun el tipo de acceso y el estado de residencia.

Evento Bit v Bit m Accion del SO/MMU
PTE con v=0 y acceso 0 - Page fault: cargar pagina desde respaldo secundario
Pagina cargada (lectura inicial) 1 0 Se actualiza PTE y TLB
Escritura sobre pagina residente 1 1 La pagina queda sucia (dirty)
Reemplazo de victima con m=0 0 (victima) 0 Se expulsa sin escritura previa a disco
Reemplazo de victima con m=1 0 (victima) 1 -> 0 Write-back a disco antes de expulsar

Traza corta conectada con el Ejercicio 1

  1. Referencia a DL=8250: p=2, d=58, v=0 -> page fault.
  2. Si no hay marco libre, se elige victima. Si victima tiene m=1, primero se escribe a disco.
  3. Tras cargar p=2: v pasa a 1 y m inicia en 0 (si fue solo lectura).
  4. Si luego el proceso escribe en p=2, m cambia de 0 a 1.
  5. En una futura expulsión de p=2, m define si hay write-back obligatorio.

Regla operativa: v responde "esta o no esta en RAM". m responde "se modifico en RAM desde la carga".

Impacto en rendimiento: los reemplazos con m=1 suelen ser mas costosos porque agregan escritura a disco ademas de la lectura de la nueva pagina.

Cierre: Integración Conceptual de la Unidad

Conclusiones Arquitectónicas

  • La complejidad algorítmica sola no explica rendimiento; la jerarquía memoria-disco puede dominar el tiempo total.
  • La localidad de referencia reduce fallos de página y evita thrashing.
  • El sistema de archivos elegido condiciona recuperación ante fallos y confiabilidad de logs.
  • La calidad del diseño se evidencia en decisiones justificadas con carga y métricas, no en preferencias subjetivas.

Lectura transversal de la sesión

La comparativa de sistemas de archivos y el taller de memoria virtual convergen en una idea central: cada decisión de estructura y política tiene impacto cuantificable en confiabilidad y tiempo de respuesta.

Checklist de comprensión: identificar estructura de cada FS, explicar journaling con tus palabras, resolver traducción con y sin page fault.

Con esto queda cerrada la Unidad 2 en su núcleo técnico.

Glosario de Términos y Acrónimos (A-M)

ACL: Access Control List. Lista de permisos granulares por usuario/grupo.

ADS: Alternate Data Streams. Flujos secundarios de datos en NTFS.

APFS: Apple File System con enfoque copy-on-write y snapshots.

Cluster: unidad mínima de asignación de espacio en FAT/exFAT.

Commit: confirmación de una transacción en journal.

Copy-on-write: técnica que retrasa copia física hasta modificación real.

EFS: Encrypting File System, cifrado por archivo en NTFS.

Extent: descriptor de rango contiguo de bloques.

FAT: File Allocation Table, esquema de asignación enlazada por tabla.

Frame (Marco): bloque físico en RAM donde reside una página.

HDD: Hard Disk Drive mecánico.

HFS+: sistema de archivos histórico de Apple previo a APFS.

Glosario de Términos y Acrónimos (N-Z)

MFT: Master File Table, estructura central de metadatos en NTFS.

MMU: Memory Management Unit, unidad que traduce direcciones.

NTFS: New Technology File System de Windows.

Page fault: fallo por acceso a página no residente en RAM.

PTE: Page Table Entry, fila/entrada de la tabla de páginas.

POSIX: estándar de interfaces/semántica Unix.

Replay: reejecución de operaciones del journal tras un fallo.

Rollback: reversión de transacciones incompletas.

Swap: espacio en disco usado como extensión de memoria virtual.

SSD: Solid State Drive, almacenamiento de estado sólido.

TLB: Translation Lookaside Buffer, caché de traducciones virtual-físico.

Thrashing: paginación excesiva que bloquea el rendimiento.