Gestor de Memoria - Práctica 3 OS 1.0
Simulador de gestión de memoria con algoritmos de Primer Hueco y Siguiente Hueco.
Cargando...
Buscando...
Nada coincide
Referencia del archivo main.c

Punto de entrada del simulador de gestión de memoria. Más...

#include <raylib.h>
#include "sim_engine.h"
#include "ficheros.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/wait.h>
Gráfico de dependencias incluidas en main.c:

Ir al código fuente de este archivo.

defines

#define WIN_WIDTH   1200
 Ancho de la ventana gráfica en píxeles.
#define WIN_HEIGHT   750
 Alto de la ventana gráfica en píxeles.
#define Y_BARRA   250
 Posición Y de la barra de memoria.
#define ALTO_BARRA   100
 Alto de la barra de memoria.
#define MARGEN_IZQ   50
 Margen izquierdo de la interfaz.
#define MARGEN_DER   50
 Margen derecho de la interfaz.

Funciones

void test_sim ()
 Ejecuta la simulación en modo terminal (TUI).
void run_gui (Memoria *m, Proceso *procesos, int num_procesos)
 Ejecuta la interfaz gráfica con Raylib.
int main (int argc, char const *argv[])
 Punto de entrada principal del programa.

Descripción detallada

Punto de entrada del simulador de gestión de memoria.

Implementa dos interfaces de usuario:

  • GUI: Interfaz gráfica con Raylib (proceso hijo)
  • TUI: Interfaz de terminal para depuración (proceso padre)

Usa fork() para ejecutar ambas interfaces en paralelo.

Autor
Julian Hinojosa Gil
Fecha
2025
Versión
1.0

Definición en el archivo main.c.

Documentación de «define»

◆ ALTO_BARRA

#define ALTO_BARRA   100

Alto de la barra de memoria.

Definición en la línea 34 del archivo main.c.

Referenciado por run_gui().

◆ MARGEN_DER

#define MARGEN_DER   50

Margen derecho de la interfaz.

Definición en la línea 38 del archivo main.c.

Referenciado por run_gui().

◆ MARGEN_IZQ

#define MARGEN_IZQ   50

Margen izquierdo de la interfaz.

Definición en la línea 36 del archivo main.c.

Referenciado por run_gui().

◆ WIN_HEIGHT

#define WIN_HEIGHT   750

Alto de la ventana gráfica en píxeles.

Definición en la línea 30 del archivo main.c.

Referenciado por run_gui().

◆ WIN_WIDTH

#define WIN_WIDTH   1200

Ancho de la ventana gráfica en píxeles.

Definición en la línea 28 del archivo main.c.

Referenciado por run_gui().

◆ Y_BARRA

#define Y_BARRA   250

Posición Y de la barra de memoria.

Definición en la línea 32 del archivo main.c.

Referenciado por run_gui().

Documentación de funciones

◆ main()

int main ( int argc,
char const * argv[] )

Punto de entrada principal del programa.

Crea dos procesos mediante fork():

  • Proceso hijo (pid == 0): Ejecuta la interfaz gráfica (GUI)
  • Proceso padre (pid > 0): Ejecuta la interfaz de terminal (TUI) y espera al hijo
Parámetros
argcNúmero de argumentos (no utilizado)
argvArray de argumentos (no utilizado)
Devuelve
0 si la ejecución fue exitosa
-1 si hubo error en fork()

Definición en la línea 57 del archivo main.c.

Hace referencia a cargar_procesos(), inicializar_memoria(), MAX_PROCESOS, run_gui() y test_sim().

Gráfico de llamadas de esta función:

◆ run_gui()

void run_gui ( Memoria * m,
Proceso * procesos,
int num_procesos )

Ejecuta la interfaz gráfica con Raylib.

Crea una ventana de WIN_WIDTH x WIN_HEIGHT píxeles y muestra:

  • Barra de memoria con particiones coloreadas
  • Lista de procesos y su estado
  • Controles interactivos
Parámetros
[in,out]mPuntero a la estructura de memoria del simulador
[in,out]procesosArray de procesos a simular
[in]num_procesosCantidad de procesos en el array
Controles:
  • ESPACIO: Avanzar un tick
  • P: Activar/desactivar auto-play
  • R: Reiniciar simulación
  • ESC: Salir
Nota
Genera log en "particiones.txt"
Velocidad auto-play: 1 tick/segundo

Definición en la línea 177 del archivo main.c.

Hace referencia a ALGO_SIGUIENTE_HUECO, ALTO_BARRA, avanzar_tiempo(), Memoria::cant_particiones, cargar_procesos(), Particion::dir_inicio, Particion::estado, inicializar_memoria(), limpiar_log(), MARGEN_DER, MARGEN_IZQ, MEMORIA_TOTAL, Particion::nombre_proceso, Memoria::particiones, Particion::tamano, WIN_HEIGHT, WIN_WIDTH y Y_BARRA.

Referenciado por main().

Gráfico de llamadas de esta función:
Gráfico de llamadas a esta función:

◆ test_sim()

void test_sim ( )

Ejecuta la simulación en modo terminal (TUI).

Carga procesos desde "entrada.txt" y ejecuta la simulación paso a paso, mostrando el estado en consola.

Nota
Usa getchar() para avanzar manualmente entre ticks
Genera log en "particiones_tui.txt"
Usa algoritmo First Fit por defecto

Definición en la línea 95 del archivo main.c.

Hace referencia a ALGO_SIGUIENTE_HUECO, avanzar_tiempo(), cargar_procesos(), inicializar_memoria(), limpiar_log(), MAX_PROCESOS, MEMORIA_TOTAL, mostrar_estado() y Proceso::t_ejecucion.

Referenciado por main().

Gráfico de llamadas de esta función:
Gráfico de llamadas a esta función: