Diferencia entre revisiones de «Planificadores de sistemas operativos existentes»

De Wiki de Sistemas Operativos
Saltar a: navegación, buscar
(Planificador Mac Os X (Darwin))
 
(No se muestran 17 ediciones intermedias de 6 usuarios)
Línea 13: Línea 13:
 
         }
 
         }
  
== Planificador Mac Os X (Darwin) ==
+
= Planificador Mac Os X (Darwin) =
  
 
La planificación en el kernel de Mac OS X esta basada en cuatro listas de ejecución, cada una de ellas con diferente prioridad. Un hilo puede migrar de un nivel de prioridad a otro en función de sus requerimientos, dependiendo de la política en concreto que se utilice en el sistema. En general, es posible manejar estas prioridades mediante los procedimientos definidos en el estándar de llamadas POSIX. Con lo que podemos decir, que se trata de un '''criterio de planificación en colas multinivel''' mezclado con '''prioridades'''. Algo parecido al planificador SCHED_OTHER de Linux.
 
La planificación en el kernel de Mac OS X esta basada en cuatro listas de ejecución, cada una de ellas con diferente prioridad. Un hilo puede migrar de un nivel de prioridad a otro en función de sus requerimientos, dependiendo de la política en concreto que se utilice en el sistema. En general, es posible manejar estas prioridades mediante los procedimientos definidos en el estándar de llamadas POSIX. Con lo que podemos decir, que se trata de un '''criterio de planificación en colas multinivel''' mezclado con '''prioridades'''. Algo parecido al planificador SCHED_OTHER de Linux.
Línea 20: Línea 20:
  
  
{| class="wikitable"
+
[[Archivo:DarwinSched.svg]]
! Prioridad
+
 
! Aplicación
+
 
|-
+
= Planificador de Windows =
|Normal||Aplicaciones normales
+
 
|-
+
El planificador 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:
|Alta||Aplicaciones cuya prioridad se ha aumentado
+
 
|-
+
- Niveles 16 a 31: Tiempo Real
|Modo Kernel||Procesos internos al kernel con mayor prioridad que el nivel usuario (Ej: E/S)
+
- Niveles 1 a 15: Variable
|-
+
- Nivel 0: Reservado para el sistema
|Tiempo real||Hilos con una fracción definida de tiempos de ejecución
+
 
|}
+
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 SO 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.
 +
Si quieres saber más del sistema de planificación de Windows puedes leer el libro Windows Internals[https://repo.zenk-security.com/Linux%20et%20systemes%20d.exploitations/Windows%20Internals%20Part%201_6th%20Edition.pdf](PDF), donde se explica el funcionamiento y las caracteristicas de todo el SO.
 +
 
 +
 
 +
 
 +
4.5. [[Planificación_de_procesos_de_tiempo_real | La planificación de procesos de tiempo real]]

Revisión actual del 17:25 2 abr 2020

Planificador de Linux 2.6

Este planificador posee 140 prioridades (de 0 a 139), de 0 a 99 son para tiempo real y para el resto de procesos que no son de tiempo real de 100 a 139 basadas en el Nice(de -20 a 19).

Posee un mapa de bits (140 bits), 1 bit para cada prioridad en la que implementan distintas estructuras SCHED_FIFO y SCHED_RR ambas para tiempo real y el resto SCHED_OTHER. 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
        }

Planificador Mac Os X (Darwin)

La planificación en el kernel de Mac OS X esta basada en cuatro listas de ejecución, cada una de ellas con diferente prioridad. Un hilo puede migrar de un nivel de prioridad a otro en función de sus requerimientos, dependiendo de la política en concreto que se utilice en el sistema. En general, es posible manejar estas prioridades mediante los procedimientos definidos en el estándar de llamadas POSIX. Con lo que podemos decir, que se trata de un criterio de planificación en colas multinivel mezclado con prioridades. Algo parecido al planificador SCHED_OTHER de Linux.

Las cuatro listas de ejecución que maneja el planificador de Mac OS X, son:


DarwinSched.svg


Planificador de Windows

El planificador 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 a 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 SO 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. Si quieres saber más del sistema de planificación de Windows puedes leer el libro Windows Internals[1](PDF), donde se explica el funcionamiento y las caracteristicas de todo el SO.


4.5. La planificación de procesos de tiempo real