Esta mañana he leído sobre la programación en tiempo real de Linux. Según el libro 'Programación del sistema Linux por Robert Love', hay dos horarios principales allí. Uno es SCHED_FIFO, fifo y el segundo es SCHED_RR, el round robin. Y entendí cómo funciona un algoritmo fifo y arr. Pero como tenemos la llamada al sistema,programación en tiempo real en Linux
sched_setscheduler (pid_t pid, int policy, const struct sched_parem *sp)
podemos establecer explícitamente la política de programación para nuestro proceso. Entonces, en algún caso, dos procesos que se ejecutan por root pueden tener una política de programación diferente. Como un proceso que tiene SCHED_FIFO y otro tiene SCHED_RR y con la misma prioridad. En ese caso, ¿qué proceso se seleccionará primero? el proceso clasificado FIFO o el proceso clasificado RR? ¿Por qué?
Considere este caso. Hay tres procesos A, B, C. Todos tienen la misma prioridad. A y B son procesos clasificados RR y C es FIFO clase uno. A y B son ejecutables (por lo tanto, ambos se ejecutan alternativamente en algún intervalo de tiempo). Y actualmente A se está ejecutando. Ahora C se vuelve ejecutable. En este caso, si
1. A will preempt for C, or
2. A will run until its timeslice goes zero and let C run. Or
3. A will run until its timeslice goes zero and let B run.
a) here after B runs till its timeslice becomes zero and let C run or
b) after B runs till its timeslice becomes zero and let A run again (then C will starve untill A and B finishes)
Nota: desde la versión 3.14 , existe una política adicional llamada SCHED_DEADLINE (http://en.wikipedia.org/wiki/SCHED_DEADLINE) .Esta política implementa el algoritmo de programación First Deadline First (EDF). A cada tarea bajo esta política se le asigna una fecha límite, y la fecha más temprana -se ejecuta la tarea. – Claudio