El kernel de Linux administra cuatro colas de planificación de procesos:
- SCHED_RR: Basada en Round Robin, es una cola que asigna tiempo de procesador a los procesos de forma cíclica un tiempo finito que llamamos cuanto (q, quantum);
- SCHED_FIFO: Basada en First In First Out, también dispone de un cuanto, pero normalmente no se usa porque no se fuerza al proceso a abandonar la CPU. Se usa en sistemas de tiempo real.
- SCHED_OTHER: Planificación clásica de Linux. Se basa en prioridades dinámicas del sistema, que se establecen en una combinación de la prioridad de usuario y la de sistema.
- SCHED_YIELD : No es una política de planificación, sino un modificador que afecta a las tres políticas anteriores. El proceso cede la CPU a cualquier otro que esté listo. Se activa con una llamada al sistema (sched_yield()) sólo para el siguiente ciclo de planificación.
Para ver cómo funciona, podemos crear un programa en C que trabaje contra el planificador:
- Para establecer y recoger los parámetros de planificación:
int sched_setparam(pid_t pid, const struct sched_param *p);int sched_getparam(pid_t pid, struct sched_param *p);
- Para conocer el intervalo del cuanto:
int sched_rr_get_interval(pid_t pid, struct timespec *tp);
- Para conocer los algoritmos de planificación:
int sched_setscheduler(pid_t pid, int policy, const struct sched_param *p);int sched_getscheduler(pid_t pid);
- Para conocer la el rango de prioridades estáticas:
int sched_get_priority_max(int politica);int sched_get_priority_min(int politica);
Y como más vale una imagen, el código aquí



Recent Comments
(12 weeks ago)
(28 weeks ago)
(28 weeks ago)
(29 weeks ago)
(29 weeks ago)
(32 weeks ago)
(32 weeks ago)
(32 weeks ago)
(32 weeks ago)
(36 weeks ago)