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.