Algoritmi di pianificazione del sistema operativo
Un Process Scheduler pianifica diversi processi da assegnare alla CPU in base a particolari algoritmi di pianificazione. Ci sono sei popolari algoritmi di pianificazione dei processi di cui parleremo in questo capitolo:
- Pianificazione FCFS (First-Come, First-Served)
- Pianificazione Shortest-Job-Next (SJN)
- Pianificazione prioritaria
- Tempo rimanente più breve
- Programmazione Round Robin (RR)
- Pianificazione delle code a più livelli
Questi algoritmi sono entrambi non-preemptive or preemptive. Gli algoritmi non preventivi sono progettati in modo che una volta che un processo entra nello stato di esecuzione, non può essere anticipato fino a quando non completa il tempo assegnato, mentre la pianificazione preventiva è basata sulla priorità in cui uno scheduler può anticipare un processo in esecuzione a bassa priorità in qualsiasi momento quando una priorità alta il processo entra in uno stato pronto.
Primo arrivato, primo servito (FCFS)
- I lavori vengono eseguiti in base all'ordine di arrivo.
- È un algoritmo di pianificazione non preventivo e preventivo.
- Facile da capire e implementare.
- La sua implementazione è basata sulla coda FIFO.
- Scarse prestazioni poiché il tempo di attesa medio è elevato.
Wait time di ogni processo è il seguente:
Processi | Tempo di attesa: Orario di servizio - Orario di arrivo |
---|---|
P0 | 0 - 0 = 0 |
P1 | 5-1 = 4 |
P2 | 8-2 = 6 |
P3 | 16-3 = 13 |
Tempo di attesa medio: (0 + 4 + 6 + 13) / 4 = 5,75
Lavoro più breve successivo (SJN)
Questo è anche noto come shortest job firsto SJF
Questo è un algoritmo di pianificazione preventivo e non preventivo.
Il miglior approccio per ridurre al minimo i tempi di attesa.
Facile da implementare nei sistemi batch dove il tempo di CPU richiesto è noto in anticipo.
Impossibile implementare in sistemi interattivi in cui il tempo di CPU richiesto non è noto.
L'elaboratore dovrebbe sapere in anticipo quanto tempo richiederà il processo.
Dati: tabella dei processi e ora di arrivo, ora di esecuzione
Processi | Orario di arrivo | Tempo di esecuzione | Tempo di servizio |
---|---|---|---|
P0 | 0 | 5 | 0 |
P1 | 1 | 3 | 5 |
P2 | 2 | 8 | 14 |
P3 | 3 | 6 | 8 |
Waiting time di ogni processo è il seguente:
Processi | Tempo di attesa |
---|---|
P0 | 0 - 0 = 0 |
P1 | 5-1 = 4 |
P2 | 14 - 2 = 12 |
P3 | 8-3 = 5 |
Tempo di attesa medio: (0 + 4 + 12 + 5) / 4 = 21/4 = 5,25
Pianificazione basata su priorità
La pianificazione prioritaria è un algoritmo non preventivo e uno degli algoritmi di pianificazione più comuni nei sistemi batch.
Ad ogni processo viene assegnata una priorità. Il processo con la priorità più alta deve essere eseguito per primo e così via.
I processi con la stessa priorità vengono eseguiti in base all'ordine di arrivo.
La priorità può essere decisa in base ai requisiti di memoria, ai requisiti di tempo o a qualsiasi altro requisito di risorse.
Dato: tabella dei processi e loro ora di arrivo, ora di esecuzione e priorità. Qui stiamo considerando che 1 è la priorità più bassa.
Processi | Orario di arrivo | Tempo di esecuzione | Priorità | Tempo di servizio |
---|---|---|---|---|
P0 | 0 | 5 | 1 | 0 |
P1 | 1 | 3 | 2 | 11 |
P2 | 2 | 8 | 1 | 14 |
P3 | 3 | 6 | 3 | 5 |
Waiting time di ogni processo è il seguente:
Processi | Tempo di attesa |
---|---|
P0 | 0 - 0 = 0 |
P1 | 11 - 1 = 10 |
P2 | 14 - 2 = 12 |
P3 | 5-3 = 2 |
Tempo di attesa medio: (0 + 10 + 12 + 2) / 4 = 24/4 = 6
Tempo rimanente più breve
Il tempo rimanente più breve (SRT) è la versione preventiva dell'algoritmo SJN.
Il processore viene assegnato al lavoro più vicino al completamento, ma può essere preceduto da un lavoro pronto più recente con tempi più brevi per il completamento.
Impossibile implementare in sistemi interattivi in cui il tempo di CPU richiesto non è noto.
Viene spesso utilizzato in ambienti batch in cui è necessario dare la preferenza a lavori brevi.
Round Robin Scheduling
Round Robin è l'algoritmo di pianificazione preventiva del processo.
A ogni processo viene fornito un tempo di correzione per l'esecuzione, è chiamato a quantum.
Una volta che un processo viene eseguito per un determinato periodo di tempo, viene interrotto e altri processi vengono eseguiti per un determinato periodo di tempo.
Il cambio di contesto viene utilizzato per salvare gli stati dei processi anticipati.
Wait time di ogni processo è il seguente:
Processi | Tempo di attesa: Orario di servizio - Orario di arrivo |
---|---|
P0 | (0-0) + (12-3) = 9 |
P1 | (3 - 1) = 2 |
P2 | (6 - 2) + (14 - 9) + (20 - 17) = 12 |
P3 | (9 - 3) + (17 - 12) = 11 |
Tempo medio di attesa: (9 + 2 + 12 + 11) / 4 = 8.5
Pianificazione delle code a più livelli
Le code a più livelli non sono un algoritmo di pianificazione indipendente. Fanno uso di altri algoritmi esistenti per raggruppare e programmare lavori con caratteristiche comuni.
- Vengono mantenute più code per processi con caratteristiche comuni.
- Ogni coda può avere i propri algoritmi di pianificazione.
- Le priorità vengono assegnate a ciascuna coda.
Ad esempio, i lavori associati alla CPU possono essere pianificati in una coda e tutti i lavori associati a I / O in un'altra coda. Il Process Scheduler seleziona quindi alternativamente i lavori da ciascuna coda e li assegna alla CPU in base all'algoritmo assegnato alla coda.