martes, 27 de septiembre de 2016

Planificador de Linux y Windows

..Planificadores..




Planificador de Windows


El planificador de Windows utiliza un sistema de multi-cola ordenadas por prioridades. Son 32 niveles de prioridades (de 0 a 31) que se dividen de la siguiente forma:
  • Niveles 16 a 31: Tiempo real
  • Niveles 1 - 15: Variable
  • Nivel 0: Reservado para el Sistema

El planificador utiliza Round Robin para recorrer las distintas colas. Tiene un quantum fijo que por defecto valdrá q=2 o q=12, dependiendo de si es un Sistema Operativo de servidor o de usuario. El quantum se puede cambiar entre estos dos valores a través del sistema. Windows utiliza este sistema de planificación desde Windows NT.

Planificador de Linux


Es un algoritmo planificador desarrollado con la meta de maximizar el uso de la CPU con las diferentes tareas que se lanzan en un sistema Linux basándose en el Fair QueuingEste planificador fue desarrollado en 62 horas con 100 Kbytes de código añadido. tambien llamado ePlanificador Completamente Justo (Completely Fair Scheduler - CFS)
Este algoritmo tiene como objetivo el maximizar el uso de la CPU pero permitiendo el uso interactivo de la máquina. Es decir, tratará de que en ningún momento un usuario vea una bajada de rendimiento.
Este planificador posee 140 prioridades (de 0 a 139)
  • 0 a 99 son para tiempo real.
  • 100 a 139 basadas en el Nice(de -20 a 19) para el resto de procesos que no son de tiempo real.

Posee un mapa de bits (140 bits), 1 bit para cada prioridad. 
Esta ultima estructura posee el número de procesos preparados y dos colas, una para los procesos pendientes y otra para los que ya han consumido su quantum. Cuando un proceso solo consume una parte de su quantum es insertado al final de la cola de pendientes con lo que le queda de su ventana de tiempo(es decir, si ha consumido el 25% la siguiente vez que sea asignado al procesador solo tendra el 75% del quantum), y si consume totalmente su tiempo de asignación al procesador este pasa a la cola de consumido hasta que este totalmente vacía la cola de pendientes. (Esto se hace para compensar los procesos más interactivos)

Esquema de estructura de SCHED_OTHER:

        struct{
           int num_procesos_preparados
           cola pendientes
           cola consumido_quantum
        }

No hay comentarios:

Publicar un comentario