Home UC3M
Home IT

Práctica 2

Gestión de procesos

OBJETIVOS

En esta práctica vamos a trabajar con conceptos de planificación de procesos, una función esencial en el núcleo de todo sistema operativo.

EL SIMULADOR DE PLANIFICADOR DE PROCESOS

Vamos a construir un simulador de planificador de procesos que nos permita estudiar los distintos algoritmos de planificación, y el tipo de operaciones necesarias para gestionar multiples tareas simultaneamente dentro del nucleo de un sistema operativo. El esqueleto del simulador consta de 6 clases y una interfaz:

  • Simulator:
    Es la clase que contiene el main. Crea un planificador, le asigna un conjunto de tareas y lo arranca.

  • Task:
    Representa a los programas de usuario. Mantiene datos específicos del programa como:
    • totalEffort: Tiempo total de procesamiento requerido por la tarea.
    • remainingEffort: Tiempo de procesamiento restante.

  • TaskFactory:
    Encapsula la creación de tareas en el sistema. Le permite al planificador ir obteniendo las tareas en el instante en el que deben ser iniciadas, y no antes.

  • Process:
    Representa un proceso del sistema operativo. Guarda la siguiente información sobre su ejecución:
    • pid: identificador del proceso.
    • state: estado en el que se encuentra el proceso.
    • priority: prioridad del proceso.
    • creationTime: momento en el que se crea el proceso en el sistema.
    • responseTime: tiempo transcurrido desde que se crea el proceso hasta que se le permite acceso a la CPU
    • runningTime: tiempo que el proceso ha permanecido en ejecución (RUNNING)
    • waitingTime: tiempo que el proceso ha estado dormido, esperando por el procesador
    • totalTime: tiempo total que el proceso ha pasado en el sistema

  • SchedulingStrategy:
    Interfaz propuesta para la implementación de los distintos algoritmos de planificación.

  • DemoStrategy:
    Ejemplo de implementación de una estrategia de planificación sencilla.

  • Scheduler:
    Esta clase es el planificador y contiene el motor de planificación de tareas.

 

Figura1: Diagrama de estados simulado por el planificador

La implementación se apoya en 2 objetos de tipo Vector, que simulan las colas de procesos preparados para ser ejecutados y  los procesos terminados (aquellos que ya han realizado su procesamiento).

Funcionamiento del simulador
  1. En la clase Simulator se crean una serie de tareas que se añaden a una clase de tipo TaskFactory.
  2. Las tareas se crean con una duración, pero además, se le indica a la factoría el momento de entrada en el sistema y una prioridad.
  3. Se crea un objeto de tipo Scheduler al que se le pasa el algoritmo de planificación y la factoría de tareas.
  4. Finalmente, se arranca el planificador. La clase Scheduler se encarga de:
    1. Seleccionar proceso según el algoritmo de planificación
    2. Garantizar la CPU al proceso durante el tiempo asignado (de manera simulada)
    3. Desalojar o terminar el proceso según corresponda
Se pide
  1. ¿Qué tipo de algoritmo de planificación implementa la clase DemoStrategy?
  2. ¿Cómo se garantiza que los identificadores de procesos sean únicos en el sistema?
  3. ¿Qué clase decide que la tarea ha terminado su procesamiento?
  4. Programar los algoritmos de planificación de procesos SJF, SRTF, Round Robin y por prioridades. Para ello se pueden añadir y modificar cuantas cosas se quieran en las clases
  5. Completar la clase Process para que registre correctamente los tiempos runningTime, waitingTime, responseTime y totalTime
  6. Implementar el método printStats() de la clase Scheduler. Este método debe imprimir por pantalla el tiempo de espera medio y la productividad al terminar la simulación.
  7. Opcionalmente, modificar el simulador para que un proceso pueda entrar y salir del estado BLOCKED cuando de manera aleatoria se produzca un evento de entrada salida.

ENLACES