PLANIFICACION EN LINUX

 

 

Linux está basado en la planificación tradicional de Unix  añadiendo 2 clases de prioridad para procesos de tiempo real flexibles. Las tres clases de prioridad de Linux son las siguientes:

 

ð    SCHED_FIFO: hilos de tiempo real con planificación FIFO.

 

ð   SCHED_RR: hilos de tiempo real con planificación por turno rotatorio.

 

ð   SCHED_OTHER: hilos que no son de tiempo real y otros.

 

Dentro de cada clase se utilizan múltiples prioridades, siendo las prioridades de las clases de tiempo real mayores que la de la clase SCHED_OTHER. Para los hilos FIFO, se aplican las siguientes reglas:

 

1.      El sistema no interrumpe la ejecución de un hilo FIFO, exepto en los siguientes casos:

 

a)   Pasa a estar listo otro hilo FIFO de mayor prioridad.

 

b)   El hilo FIFO en ejecución  se bloquea a la espera de un evento, como una E/S.

 

c)   El hilo FIFO en ejecución abandona el procesador como resultado de la ejecución de la primitiva sched_yield.

 

2.Cuando se interrumpe un hilo FIFO en ejecución, pasa a la cola asociada a su prioridad.

 

3.Cuando un hilo FIFO pasa a listo y tiene mayor prioridad que el hio que está en ejecución, se expulsa al hilo en ejecución y pasa a ejecutar el hilo de mayor prioridad. Si más de un hilo tiene esta mayor prioridad, se escoge al que lleva más tiempo esperado.

 

La política SCHED_RR es similar a la SCHED_FIFO, exepto por el uso de un cuanto de tiempo asociada a cada hilo. Cuando un hilo SCHED_RR ha consumido su cuanto de tiempo, pasa a suspendido y se escoge un hilo de tiempo real con una prioridad igual o mayor.

La figura 10.9 ilustra las diferencias entre la planificación FIFO y RR. Supóngase un programa de cuatro hilos con tres prioridades relativas asignadas según la figura 10.9. Supóngase que todos los hilos que esperan están listos para ejecutarse cuando termina o se bloquea el hilo actual y no hay ningún hilo de mayor prioridad despierto mientras se está ejecutando un hilo. La figura 10.9 muestra el orden de ejecución si todos los hilos son de la clase SCHED_FIFO. El hilo D se ejecuta hasta que termina su bloqueo. A continuación, aunque los hilos B y C tienen la misma prioridad, se ejecuta el hilo B porque lleva mas tiempo esperando que C. El hilo B se ejecuta hasta que termina o se bloquea; entonces, pasa a ejecutar el hilo C hasta que termina o se bloquea. Por último, se ejecuta el hilo A.

 

 

 

Figura 10.9  Ejemplo de planificación Linux

 

 

La figura 10.9 muestra el orden de ejecución si todos los hilos son de la clase SCHED_RR. El hilo D se ejecuta hasta que termina su bloqueo. A continuación, los hilos B y C comparten el tiempo porque ambos tienen la misma prioridad. Por último, se ejecuta el hilo A.

La última clase de prioridad es SCHED_OTHER. Un hilo de esta clase ejecuta sólo si no hay hios de tiempo real listos para ser ejecutados. Dentro de la clase SCHED_OTHER, se utiliza el algoritmo tradicional de Unix.

 

 

Indice