Questa mattina ho letto su Linux scheduling in tempo reale. Come per il libro 'Programmazione del sistema Linux di Robert Love', ci sono due programmi principali lì. Uno è SCHED_FIFO, fifo e il secondo è SCHED_RR, il round robin. E ho capito come funziona un algoritmo di fifo e rr. Ma come abbiamo la chiamata di sistema,tempo reale pianificazione in Linux
sched_setscheduler (pid_t pid, int policy, const struct sched_parem *sp)
possiamo impostare in modo esplicito la politica di pianificazione per il nostro processo. Quindi, in alcuni casi, due processi eseguiti da root, possono avere differenti criteri di pianificazione. Come un processo con SCHED_FIFO e un altro con SCHED_RR e con la stessa priorità. In tal caso, quale processo verrà selezionato per primo? il processo classificato FIFO o il processo classificato RR? Perché?
considerare questo caso. Ci sono tre processi A, B, C. Tutti stanno avendo la stessa priorità. A e B sono processi di classe RR e C è di classe FIFO. A e B sono eseguibili (quindi entrambi funzionano alternativamente in un intervallo di tempo). E attualmente A è in esecuzione. Ora C diventa eseguibile. In questo caso, se
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: dal momento che Linux 3.14 , esiste una politica aggiuntiva denominata SCHED_DEADLINE (http://en.wikipedia.org/wiki/SCHED_DEADLINE), che implementa l'algoritmo di pianificazione ELEest Deadline First (EDF). A ciascuna attività in questo criterio viene assegnata una scadenza e la prima - Il task di pianificazione viene eseguito. – Claudio