Skip to content

GalekTato/memmanager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧠 Simulador de Administración de Memoria Virtual

Simulador avanzado de memoria virtual desarrollado en C++20. Implementa paginación por demanda, el algoritmo de reemplazo adaptativo CAR (Clock with Adaptive Replacement), un despachador Round Robin para la planificación de procesos y una arquitectura Cliente-Servidor mediante sockets TCP POSIX. Cuenta con una Interfaz Gráfica interactiva estilizada con Catppuccin.


Interfaz Gráfica del Simulador

📋 Tabla de Contenidos


✨ Características Principales

  • Paginación por Demanda: Simulación del mapeo de direcciones lógicas a físicas mediante tablas de páginas y un mapa de bits global.
  • Algoritmo CAR: Política híbrida que supera a LRU al mantener un equilibrio dinámico entre la recencia y la frecuencia de acceso utilizando historiales fantasma.
  • Despacho Round Robin: Planificación equitativa de procesos basada en un quantum configurable, intercalando la ejecución de cadenas de referencia.
  • Visualización en Tiempo Real (GUI): Interfaz en Qt6 que permite observar el estado de la memoria virtual, la tabla de páginas local y el log de aciertos/fallos paso a paso.
  • Modo Red (Cliente-Servidor): Extensión que ejecuta el gestor en un servidor TCP multihilo, permitiendo a clientes remotos enviar procesos y recibir asíncronamente sus métricas.

🛠️ Requisitos del Sistema

Componente Requisito
Sistema Operativo GNU/Linux (Arch Linux, Ubuntu 22.04+) o macOS
Compilador GCC 13.0+ o Clang 16.0+ (soporte completo para C++20)
Framework Gráfico Qt 6.4+ (qt6-base-dev y herramientas como qmake6)
Herramientas de Construcción GNU Make

🚀 Instalación y Compilación

Clona este repositorio y utiliza el script de construcción proporcionado para compilar tanto la interfaz gráfica como los binarios de red.

git clone https://github.com/GalekTato/memmanager.git
cd memmanager

# Dar permisos de ejecución al script
chmod +x build_all.sh

# Compilar todos los módulos (GUI, Servidor y Cliente)
./build_all.sh

El script ejecutará qmake6 y make en los subdirectorios correspondientes, generando los ejecutables en las carpetas gui/ y network/.


💻 Uso del Simulador

El proyecto puede operarse de dos formas: localmente con la interfaz gráfica o mediante la terminal en modo cliente-servidor.

1. Modo Interfaz Gráfica (Local)

Ejecuta el simulador interactivo:

./gui/memmanager_gui

Flujo de uso básico:

  1. En el panel PROCESOS, configura el Quantum y el Ciclo Reloj (recomendados: 5 y 3).
  2. Crea un proceso asignando un PID, el número de páginas requeridas, y una cadena de referencias separada por comas (ej. 0,1,2,0,3). Presiona Crear y Asignar.
  3. Haz clic en el botón ▶ Paso para avanzar la simulación instrucción por instrucción.
  4. Observa el estado en la "Memoria Virtual Global" y las traducciones. Al finalizar, se generará un reporte de métricas.

2. Modo Cliente-Servidor (Red)

Este modo ejecuta la simulación en segundo plano.

Terminal 1 — Servidor:

Inicia el servidor especificando un puerto (por defecto 9000).

cd network
./memserver 9000

Terminal 2 — Cliente:

Envía la solicitud de un proceso al servidor:

# Uso: ./memclient <host> <puerto> <pid> <num_páginas> <referencias>
cd network
./memclient 127.0.0.1 9000 100 10 0,1,2,0,1,4,5

📄 Documentación Técnica

El repositorio incluye documentación exhaustiva dentro del directorio docs/:

  • Reporte Técnico (PDF) / Código Fuente (LaTeX): Marco teórico, explicaciones detalladas del algoritmo CAR y análisis de mitigación de Thrashing.
  • Diagrama UML (PDF): Diseño completo del modelo de clases del sistema.
  • Manual Técnico (Markdown): Detalles de implementación y arquitectura de las clases principales (MemoryManager, Process, Page).

👥 Equipo de Desarrollo

Nombre GitHub
Gael Askary Razo Montañez @GalekTato
Angel Hernandez Gonzalez Angel Hernandez Gonzalez
José Gabriel Hernández Mejía Jose Gabriel Hernández Mejía

📜 Licencia y Créditos

Este proyecto fue desarrollado de manera colaborativa para la materia de Sistemas Operativos II en la Benemérita Universidad Autónoma de Puebla (BUAP).

Distribuido bajo la licencia MIT. Consulta el archivo LICENSE para más información.

About

Simulador interactivo de administración de memoria virtual desarrollado en C++20. Cuenta con interfaz gráfica en Qt6, planificación Round Robin y algoritmo CAR.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors