Sistemas Distribuidos Finalizado UTN FRBA

Master of Files (TP Sistemas Operativos)

Desarrollo modular en C de un sistema distribuido mutiprocesamiento que simula la planificación de queries, traducción de direcciones con paginación a demanda y administración de un File System propio con deduplicación por hash MD5.

Descripción General

El objetivo del proyecto fue diseñar e implementar una solución distribuida integral en lenguaje C capaz de administrar consultas, ejecutar planificaciones de tareas sobre hilos de procesamiento y gestionar almacenamiento persistente con memoria virtual.

Diseñado bajo un esquema modular, el sistema permite que múltiples componentes independientes ejecuten tareas en distintas máquinas virtuales interconectadas mediante sockets TCP/IP.

Arquitectura y Módulos

Módulo Query Control

Envía peticiones (archivos con instrucciones) al sistema.

  • Parámetros de ejecución: ruta de query, archivo de config y prioridad.
  • Mantiene la conexión activa con el Master hasta recibir respuestas de lecturas o fin de ejecución.

Módulo Master (Planificador)

Coordina la distribución de las queries asignadas entre los Workers disponibles.

  • Planificación a corto plazo: Algoritmos FIFO y Prioridades con Desalojo y Aging.
  • Gestión dinámica de estados de procesos (NEW, READY, EXEC, EXIT).
  • Soporta la conexión y desconexión caliente de nodos Worker.

Módulo Worker (Procesamiento)

Interpreta y ejecuta las instrucciones de las Queries una a la vez.

  • Query Interpreter: Interpreta operaciones como CREATE, TRUNCATE, READ, WRITE, COMMIT, FLUSH, etc.
  • Memoria Interna: Paginación simple a demanda respaldada por un único bloque de memoria (malloc).
  • Algoritmos de reemplazo de páginas: LRU y CLOCK-M.

Módulo Storage (File System)

Representa el sistema de archivos sobre el que operan los Workers.

  • Estructura jerárquica con Superbloque, Bitmap de bloques y archivos de metadata.
  • Deduplicación de datos: Optimiza espacio mediante cálculo de hashes MD5 en bloques de datos.
  • Mapeo de archivos lógicos mediante hard links a bloques físicos.

Aspectos Técnicos Destacados

Concurrencia y Sincronización: Implementación de hilos (Pthreads), semáforos y mutexes para proteger estructuras compartidas entre conexiones simultáneas.

Serialización y Redes: Creación de un protocolo IPC personalizado sobre Sockets POSIX para empaquetar y transferir información entre procesos distribuidos.