Algoritmo di pianificazione delle priorità: preemptive, non preemptive
⚡ Riepilogo intelligente
La pianificazione a priorità è un metodo di pianificazione della CPU che seleziona i processi in base alla priorità, eseguendo prima le attività a priorità più alta. Può essere preemptive o non preemptive e i processi con la stessa priorità vengono gestiti secondo il principio "primo arrivato, primo servito" o "round-robin".

Cos'è la pianificazione prioritaria?
Pianificazione prioritaria è un metodo di pianificazione dei processi basato sulla priorità. In questo algoritmo, lo scheduler seleziona le attività da eseguire in base alla priorità.
I processi con priorità più alta dovrebbero essere eseguiti per primi, mentre i lavori con priorità uguali vengono eseguiti su base round-robin o FCFS. La priorità dipende dai requisiti di memoria, dai requisiti di tempo, ecc.
Tipi di pianificazione prioritaria
La programmazione prioritaria si divide in due tipologie principali:
Programmazione preventiva
Nella pianificazione preventiva, le attività vengono per lo più assegnate con le relative priorità. A volte è importante eseguire un'attività con priorità più alta prima di un'altra attività con priorità più bassa, anche se l'attività con priorità più bassa è ancora in esecuzione. L'attività con priorità più bassa viene mantenuta per un certo periodo e riprende quando l'attività con priorità più alta termina l'esecuzione.
Pianificazione non preventiva
In questo tipo di metodo di pianificazione, la CPU viene assegnata a uno specifico processo. Il processo che mantiene la CPU occupata la rilascerà cambiando contesto o terminando. È l'unico metodo utilizzabile su diverse piattaforme hardware, poiché non richiede hardware speciale (ad esempio, un timer) come la pianificazione preemptive.
Caratteristiche della pianificazione prioritaria
- Un algoritmo della CPU che pianifica i processi in base alla priorità.
- È utilizzato in Operasistemi di automazione per l'esecuzione di processi batch.
- Se due lavori aventi la stessa priorità sono PRONTI, si lavora su a PRIMO ARRIVATO, PRIMO SERVITO base.
- Nella pianificazione prioritaria, a ciascun processo viene assegnato un numero che ne indica il livello di priorità.
- Più basso è il numero, maggiore è la priorità.
- In questo tipo di algoritmo di pianificazione, se arriva un processo più recente con una priorità più alta rispetto al processo attualmente in esecuzione, quest'ultimo viene interrotto.
Esempio di pianificazione prioritaria
Si considerino i seguenti cinque processi da P1 a P5. Ciascun processo ha una priorità, un tempo di esecuzione e un tempo di arrivo unici.
| Processo | Priorità | Tempo di scoppio | Orario di arrivo |
|---|---|---|---|
| P1 | 1 | 4 | 0 |
| P2 | 2 | 3 | 0 |
| P3 | 1 | 7 | 6 |
| P4 | 3 | 4 | 11 |
| P5 | 2 | 2 | 12 |
Passo 0) All'istante t=0, arrivano i processi P1 e P2. P1 ha priorità più alta di P2. L'esecuzione inizia con il processo P1, che ha un tempo di esecuzione di 4.
Passo 1) All'istante t = 1, non arriva alcun nuovo processo. L'esecuzione continua con P1.
Passo 2) Al momento 2 non arriva alcun nuovo processo, quindi puoi continuare con P1. P2 è in coda di attesa.
Passo 3) Al tempo 3, non arriva alcun nuovo processo, quindi puoi continuare con P1. Il processo P2 è ancora in coda di attesa.
Passo 4) Al momento 4 P1 ha terminato la sua esecuzione. P2 inizia l'esecuzione.
Passo 5) Al tempo = 5, non arriva alcun nuovo processo, quindi proseguiamo con P2.
Passo 6) Al tempo = 6, arriva P3. P3 ha una priorità più alta (1) rispetto a P2 che ha priorità (2). P2 viene interrotto e P3 inizia la sua esecuzione.
| Processo | Priorità | Tempo di scoppio | Orario di arrivo |
|---|---|---|---|
| P1 | 1 | 4 | 0 |
| P2 | 2 | 1 su 3 in sospeso | 0 |
| P3 | 1 | 7 | 6 |
| P4 | 3 | 4 | 11 |
| P5 | 2 | 2 | 12 |
Passo 7) Al tempo 7, non arriva alcun nuovo processo, quindi proseguiamo con P3. P2 è in coda di attesa.
Passo 8) All'istante t=8 non arriva alcun nuovo processo, quindi possiamo proseguire con P3.
Passo 9) Al tempo = 9, non arriva alcun nuovo processo, quindi possiamo continuare con P3.
Passo 10) All'intervallo di tempo 10, non si verifica alcun nuovo processo, quindi proseguiamo con P3.
Passo 11) All'istante t=11, P4 arriva con priorità 4. P3 ha priorità più alta, quindi continua la sua esecuzione.
| Processo | Priorità | Tempo di scoppio | Orario di arrivo |
|---|---|---|---|
| P1 | 1 | 4 | 0 |
| P2 | 2 | 1 su 3 in sospeso | 0 |
| P3 | 1 | 2 su 7 in sospeso | 6 |
| P4 | 3 | 4 | 11 |
| P5 | 2 | 2 | 12 |
Passo 12) All'istante t=12, arriva P5. P3 ha priorità più alta, quindi continua l'esecuzione.
Passo 13) All'istante t=13, P3 completa l'esecuzione. Nella coda dei processi pronti sono presenti P2, P4 e P5. P2 e P5 hanno la stessa priorità. L'orario di arrivo di P2 è precedente a quello di P5, quindi P2 inizia l'esecuzione.
| Processo | Priorità | Tempo di scoppio | Orario di arrivo |
|---|---|---|---|
| P1 | 1 | 4 | 0 |
| P2 | 2 | 1 su 3 in sospeso | 0 |
| P3 | 1 | 7 | 6 |
| P4 | 3 | 4 | 11 |
| P5 | 2 | 2 | 12 |
Passo 14) All'istante t=14, il processo P2 ha terminato la sua esecuzione. P4 e P5 sono in stato di attesa. P5 ha la priorità più alta e inizia l'esecuzione.
Passo 15) Al tempo = 15, P5 continua l'esecuzione.
Passo 16) All'istante t=16, P5 ha terminato la sua esecuzione. P4 è l'unico processo rimasto. Inizia l'esecuzione.
Passo 17) Al tempo t = 20, P4 ha completato l'esecuzione e non rimane alcun processo in corso.
Passo 18) Calcoliamo il tempo di attesa medio per l'esempio sopra riportato.
Tempo di attesa = ora di inizio – ora di arrivo + tempo di attesa per il burst successivo
P1 = 0 - 0 = 0 P2 = 4 - 0 + 7 = 11 P3 = 6 - 6 = 0 P4 = 16 - 11 = 5 Average Waiting time = (0 + 11 + 0 + 5 + 2)/5 = 18/5 = 3.6
Vantaggi della pianificazione prioritaria
Ecco i vantaggi/benefici dell'utilizzo del metodo di pianificazione prioritaria:
- Metodo di pianificazione facile da usare.
- I processi vengono eseguiti in base alla priorità, quindi quelli ad alta priorità non devono attendere a lungo, il che consente di risparmiare tempo.
- Questo metodo fornisce un valido meccanismo che permette di definire con precisione l'importanza relativa di ciascun processo.
- Adatto per applicazioni con requisiti di tempo e risorse variabili.
Svantaggi della pianificazione prioritaria
Ecco gli svantaggi della programmazione prioritaria:
- Se il sistema alla fine si blocca, tutti i processi a bassa priorità andranno persi.
- Se i processi ad alta priorità richiedono molto tempo della CPU, i processi a priorità più bassa potrebbero morire di fame e verranno posticipati per un tempo indefinito.
- Questo algoritmo di pianificazione può lasciare alcuni processi a bassa priorità in attesa per un tempo indefinito.
- Un processo verrà bloccato quando è pronto per essere eseguito ma deve attendere la CPU perché qualche altro processo è attualmente in esecuzione.
- Se un nuovo processo con priorità più alta continua ad arrivare nella coda dei pronti, allora il processo che è nello stato di attesa potrebbe dover attendere per un lungo periodo di tempo.


















