Este proyecto es un gestor de procesos que simula el funcionamiento de un sistema operativo. Permite crear, gestionar y simular la ejecución de procesos en un entorno controlado.
- Creación de procesos: Permite crear una pila de procesos con diferentes atributos como PID, tiempo de inicio, tiempo de vida, prioridad, etc.
- Gestión de procesos: Mueve procesos a la cola de espera, asigna procesos a núcleos libres y libera núcleos cuando el tiempo de vida del proceso ha terminado.
- Simulación de tiempo: Simula el paso del tiempo y muestra el estado de la pila de procesos, la cola de espera y los núcleos en ejecución.
- Cálculo de tiempos: Calcula el tiempo total y medio de estancia de los procesos en el sistema operativo.
- Árboles de búsqueda: Se implementan árboles de búsqueda, que ayudarán a realizar consultas del código.
Para utilizar la parte 1 introducir en la terminal:
g++ -I./include src/main.cpp -o main && ./main
Para utilizar la parte 2 introducir en la terminal:
g++ -I./include src/main2.cpp -o main2 && ./main2
Hay disponibles dos sh para facilitar la compilación, pero dependiendo de la codificación del equipo puede mostrar un caracter NULL
Al ejecutar el programa, se mostrará un menú con las siguientes opciones:
- Crear la pila de procesos
- Mostrar los procesos que se iniciarán
- Borrar la pila de procesos
- Mostrar la cola de espera de procesos
- Mostrar los detalles de los procesos en ejecución
- Simular que han pasado N minutos
- Simular el funcionamiento de todos los procesos
- Salir
- Crear la pila de procesos
- Mostrar los procesos que se iniciarán
- Borrar la pila de procesos y reiniciar
- Simular que han pasado N minutos
- Mostrar los datos de la lista de núcleos
- Consultar el núcleo con menos procesos y el más ocupado
- Consultar el número total de núcleos operativos
- Simular el funcionamiento de todos los procesos
- Añadir un proceso directamente al ABBProcesos
- Mostrar arbol, por nivel de prioridad
- Ver los procesos que se asignaron a un nivel de prioridad
- Mostrar todos los niveles de prioridad que han tenido al menos un proceso ejecutado
- Nivel de prioridad con mayor y menor carga de procesos ejecutados
- Calcular y mostrar el tiempo promedio de ejecución de los procesos con una prioridad específica
- Calcular y mostrar el tiempo promedio de ejecución de los procesos en cada nivel de prioridad
- Salir
Selecciona una opción para realizar la acción correspondiente.