Planificación

Planificación

Se necesita realizar una planificación para determinar cuáles serán los programas admitidos en el sistema

Tipos de planificación

  • Planificación a largo plazo: Decisión de añadir procesos al conjunto de procesos a ejecutar
  • Planificación a medio plazo: Decisión de añadir procesos al conjunto de procesos que se encuentran parcial o completamente en la memoria
  • Planificación a corto plazo: Decisión sobre qué proceso / hilo disponible será ejecutado en el procesador

Planificación a largo plazo

Determina cuáles son los programas admitidos en el sistema. Debe tomar dos decisiones:

  • Cuándo puede crear un nuevo proceso
  • Cuál va a ser el siguiente proceso a admitir. Combinar procesos con mayor carga de procesador y procesos con mayor carga de E/S

Controla el grado de multiprogramación. Cuantos más procesos se crean, menor es el porcentaje de tiempo en el que cada proceso se puede ejecutar

Planificación a medio plazo

Forma parte de la función de intercambio

Se basa en la necesidad de controlar el grado de multiprogramación

Si no se emplea memoria virtual, deberá tener en cuenta las necesidades de memoria del proceso

Planificación a corto plazo

Planificación del uso de la CPU: Gestionar la compartición de la CPU entre los procesos / hilos listos para ejecutarse

El objetivo del planificador (scheduler) es repartir el tiempo del procesador entre los procesos / hilos que pueden ejecutar

Debe tener en cuenta factores como:

  • Equidad: repartir el uso de la CPU
  • Eficiencia: evitar tiempos ociosos de la CPU
  • Rendimiento: maximizar el número de peticiones

Mecanismos de planificación

El planificador está compuesto por tres componentes lógicos:

  • Encolador: Cuando un proceso cambia al estado Listos, el encolador lo coloca en una estructura de datos de tipo cola
  • Conmutador de contexto: Cuando un proceso va a ser desalojado de la CPU, el conmutador de contexto guarda el contenido de los registros de la CPU en el BCP del proceso
  • Distribuidor: El distribuidor selecciona uno de los procesos de la cola de Listos y le asigna la CPU

Diagrama de colas de planificación

Criterios de la planificación

Criterios para comparar el rendimiento de los diversos algoritmos de planificación:

  • Tiempo de servicio (T_s) Tiempo estimado de ejecución
  • Tiempo de retorno (T_r) Tiempo transcurrido desde que llega al sistema hasta que termina
  • Tiempo de espera (T_w) Suma de tiempos que el proceso está en no ejecución
  • Tiempo de retorno normalizado (\frac{T_r}{T_s}) Tiempo de retorno dividido por el tiempo de servicio

Uso de prioridades

El planificador seleccionará siempre a un proceso de mayor prioridad antes que a los de menor prioridad

Utiliza múltiples colas de Listos para representar cada nivel de prioridad

Los procesos de prioridad más baja pueden sufrir inanición (no son elegidos núnca)

Una solución ante la inanición consiste en permitir que un proceso cambie su prioridad en función de su antigüedad o su historial de ejecución

Políticas de planificación

Se basan en una función de selección para determinar qué proceso, de entre los Listos, se elige para ejecutar

La función puede estar basada en prioridades, necesidades de recursos o en las características de ejecución de los procesos

Hay dos clases de algoritmos según el modo de decisión (instante en que se aplica la función de selección):

  • Sin expulsión (no apropiativos o no preferentes): Una vez que el proceso pasa al estado de Ejecución, continúa ejecutando hasta que termina o se bloquea en espera de una E/S (ráfaga)
  • Con expulsión (apropiativos o preferentes): El proceso que se está ejecutando actualmente puede ser interrumpido y pasado al estado de Listos por el sistema operativo. Permiten dar un mejor servicio ya que evitan que un proceso pueda monopolizar el procesador durante mucho tiempo

Algoritmos de planificación

Algoritmos sin expulsión:

  • FIFO (First-come First-served): Primero en llegar, primero en ser servido
    • Se selecciona para ejecutar el proceso más antiguo de la cola de Listos
    • Sencillo de implementar
    • Tiempo medio de espera muy alto
    • Penaliza a los procesos cortos sobre los procesos largos
    • Favorece a los procesos con carga de CPU sobre los procesos con carga de E/S
    • Suele utilizarse combinado con prioridades
  • SPN (Shortest Process Next): Primero el proceso más corto
    • Se selecciona el proceso con menor tiempo de servicio
    • Dificultad en estimar el tiempo esperado de ejecución para cada proceso
    • Minimiza el tiempo medio de espera
    • Penaliza a los procesos largo sobre los procesos cortos
    • Posibilidad de inanición para los procesos largos

Algoritmos con expulsión:

  • Turno rotatorio (RR, Round Robin)
    • Utiliza un cuanto de tiempo que es una fracción de tiempo que permite a cada proceso utilizar la CPU
    • Se expulsa el proceso que ha consumido su cuanto de tiempo y pasa a ocupar el último lugar de la cola de Listos
    • Hay dificultades para elegir el tamaño del cuanto (inferior al 80% de las ráfagas de CPU)
    • Favorece a los procesos con carga de CPU sobre los procesos con carga de E/S
    • El tiempo de espera grande, pero garantiza un reparto de la CPU con buenos tiempos de respuesta
  • FB (Feedback): Realimentación multinivel
    • Divide la cola de Listos en una jerarquía de colas: RQ_0, \cdots, RQ_n, cada una con un nivel de prioridad
    • Utiliza un cuanto de tiempo y un mecanismo dinámico de prioridades
    • Los procesos entran por RQ_0 y en cada ráfaga de ejecución descienden a la siguiente cola
    • En cada cola se utiliza FIFO, excepto en la de menor prioridad que se trata con turno rotatorio
    • Favorece a los procesos cortos frente a los procesos más viejos y largos
      • Los procesos cortos terminarán rápidamente, sin descender demasiado en la jerarquía de colas
      • Los procesos largos serán gradualmente llevados hacia abajo
    • Existe un gran número de variaciones de este esquema
    • Para evitar la inanición de los procesos largos se puede variar el cuanto en función de cada cola

    Planificación en POSIX

    Cada política de planificación lleva asociada un rango de, al menos, 32 niveles de prioridad

    El planificador seleccionará el proceso con la prioridad más alta

    Cuando un proceso es expulsado por otro de mayor prioridad, el proceso pasa a ser el primero de la cola asociada a su prioridad

    En el planificador conviven tres políticas de planificación:

    • SCHED_FIFO: Es una política de planificación expulsora basada en prioridades estáticas, en la que los procesos con la misma prioridad se atienden en el orden de llegada (cola FIFO). Esta política tendrá al menos 32 niveles de prioridad
    • SCHED_RR: Esta política es muy similar a SCHED_FIFO, pero emplea un método round-robin para planificar procesos de la misma prioridad. También tiene 32 niveles de prioridad como mínimo
    • SCHED_OTHER: Es una política de planificación definida por la implementación

    Servicios POSIX para la planificación de procesos

    Las tres políticas de planificación están definidas en el archivo de cabecera

    Modificar los parámetros de planificación de un proceso:

    Obtener los parámetros de planificación de un proceso: