Pianificazione preventiva e non preventiva
Differenze chiave tra pianificazione preventiva e non preventiva
- Nella pianificazione preventiva, la CPU viene allocata ai processi per un periodo di tempo specifico e la CPU con pianificazione non preventiva viene allocata al processo fino al suo termine.
- Nella pianificazione preventiva, le attivitร vengono scambiate in base alla prioritร , mentre nella pianificazione non preventiva non avviene alcun cambio.
- L'algoritmo preventivo ha il sovraccarico di commutare il processo dallo stato pronto allo stato in esecuzione, mentre la pianificazione non preventiva non ha tale sovraccarico di commutazione.
- La pianificazione preventiva รจ flessibile, mentre la pianificazione non preventiva รจ rigida.

Cos'รจ la programmazione preventiva?
La pianificazione preventiva รจ un metodo di pianificazione in cui 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.
In quel momento, l'attivitร con prioritร piรน bassa viene mantenuta per un po' di tempo e riprende quando l'attivitร con prioritร piรน alta termina la sua esecuzione.
Cos'รจ la programmazione non preventiva?
In questo tipo di metodo di pianificazione, la CPU รจ stata allocata a un processo specifico. Il processo che mantiene occupata la CPU rilascerร la CPU cambiando contesto o terminando.
ร l'unico metodo che puรฒ essere utilizzato per varie piattaforme hardware. Questo perchรฉ non necessita di hardware specializzato (ad esempio un timer) come la pianificazione preventiva.
La pianificazione non preventiva si verifica quando un processo entra volontariamente nello stato di attesa o termina.
Pianificazione preventiva e non preventiva: tabella comparativa
Ecco un confronto testa a testa tra pianificazione preventiva e non preventiva. Le principali differenze tra la pianificazione preventiva e non preventiva nel sistema operativo sono le seguenti:
| Programmazione preventiva | Programmazione non preventiva |
|---|---|
| Un processore puรฒ essere autorizzato a eseguire i diversi processi nel mezzo dell'esecuzione di un processo corrente. | Una volta che il processore inizia la sua esecuzione, deve terminarla prima di eseguire l'altra. Non puรฒ essere messo in pausa a metร . |
| L'utilizzo della CPU รจ piรน efficiente rispetto alla pianificazione non preventiva. | L'utilizzo della CPU รจ meno efficiente rispetto alla pianificazione preventiva. |
| I tempi di attesa e di risposta della pianificazione preventiva sono inferiori. | Il tempo di attesa e di risposta del metodo di pianificazione senza prelazione รจ piรน elevato. |
| La pianificazione preventiva ha la prioritร . Il processo con la prioritร piรน alta รจ un processo attualmente utilizzato. | Quando un processo entra nello stato di esecuzione, lo stato di quel processo non viene mai eliminato dallo scheduler finchรฉ non termina il suo lavoro. |
| La pianificazione preventiva รจ flessibile. | La pianificazione non preventiva รจ rigida. |
| Esempi: โ Primo tempo rimanente, Round Robin, ecc. | Esempi: Primo arrivato primo servito, Prima il lavoro piรน breve, Pianificazione prioritaria, ecc. |
| L'algoritmo di pianificazione preventiva puรฒ essere anticipato, ovvero il processo puรฒ essere pianificato | Nel processo di pianificazione non preventiva non รจ possibile programmare |
| In questo processo la CPU viene assegnata ai processi per un determinato periodo di tempo. | In questo processo, la CPU viene allocata al processo finchรฉ non termina o passa allo stato di attesa. |
| L'algoritmo preventivo ha l'overhead di commutare il processo dallo stato pronto allo stato in esecuzione e viceversa. | La pianificazione non preventiva non ha tale sovraccarico nel passaggio del processo dall'esecuzione allo stato pronto. |
Vantaggi della pianificazione preventiva
Ecco i vantaggi/vantaggi del metodo di pianificazione preventiva:
- Il metodo di pianificazione preventiva รจ piรน robusto, approccio in modo che un processo non possa monopolizzare la CPU
- Scelta dell'attivitร in esecuzione riconsiderata dopo ogni interruzione.
- Ogni evento causa l'interruzione delle attivitร in esecuzione
- Il sistema operativo garantisce che l'utilizzo della CPU sia lo stesso per tutti i processi in esecuzione.
- In questo caso, l'utilizzo della CPU รจ lo stesso, ovvero tutti i processi in esecuzione utilizzeranno la CPU allo stesso modo.
- Questo metodo di pianificazione improvvisa anche il tempo medio di risposta.
- La pianificazione preventiva รจ vantaggiosa quando la utilizziamo per l'ambiente multi-programmazione.
Vantaggi della pianificazione non preventiva
Ecco i vantaggi/vantaggi del metodo di pianificazione non preventiva:
- Offre un basso sovraccarico di pianificazione
- Tende ad offrire un throughput elevato
- ร un metodo concettualmente molto semplice
- Less risorse computazionali necessarie per la pianificazione
Svantaggi della pianificazione preventiva
Di seguito sono riportati gli svantaggi della pianificazione preventiva:
- Necessitano di risorse computazionali limitate per la pianificazione
- Lo scheduler impiega piรน tempo per sospendere l'attivitร in esecuzione, cambiare contesto e inviare la nuova attivitร in arrivo.
- Il processo con prioritร bassa deve attendere piรน a lungo se alcuni processi ad alta prioritร arrivano continuamente.
Svantaggi della pianificazione non preventiva
Ecco i contro/svantaggi del metodo di pianificazione non preventiva:
- Puรฒ portare alla fame soprattutto per quelle attivitร in tempo reale
- I bug possono causare il blocco di una macchina
- Puรฒ fare in tempo reale e Pianificazione prioritaria difficile
- Scarso tempo di risposta per i processi
Esempio di pianificazione non preventiva
Nella pianificazione SJF non preventiva, una volta assegnato il ciclo della CPU al processo, il processo lo mantiene finchรฉ non raggiunge uno stato di attesa o termina.
Si considerino i seguenti cinque processi, ciascuno dotato di un proprio tempo di burst e di un proprio tempo di arrivo.
| Coda di elaborazione | Tempo di scoppio | Orario di arrivo |
|---|---|---|
| P1 | 6 | 2 |
| P2 | 2 | 5 |
| P3 | 8 | 1 |
| P4 | 3 | 0 |
| P5 | 4 | 4 |
Passo 0) Al tempo=0, P4 arriva e inizia l'esecuzione.
Passo 1) Al tempo = 1, arriva il processo P3. Ma P4 necessita ancora di 2 unitร di esecuzione per essere completata. Continuerร l'esecuzione.
Passo 2) Al tempo =2, il processo P1 arriva e viene aggiunto alla coda di attesa. P4 continuerร l'esecuzione.
Passo 3) Al tempo = 3, il processo P4 terminerร la sua esecuzione. Viene confrontato il tempo di burst di P3 e P1. Il processo P1 viene eseguito perchรฉ il suo tempo di burst รจ inferiore rispetto a P3.
Passo 4) Al tempo = 4, il processo P5 arriva e viene aggiunto alla coda di attesa. P1 continuerร l'esecuzione.
Passo 5) Al tempo = 5, il processo P2 arriva e viene aggiunto alla coda di attesa. P1 continuerร l'esecuzione.
Passo 6) Al tempo = 9, il processo P1 terminerร la sua esecuzione. Viene confrontato il tempo di burst di P3, P5 e P2. Il processo P2 viene eseguito perchรฉ il suo tempo di burst รจ il piรน basso.
Passo 7) All'istante=10, P2 รจ in esecuzione e P3 e P5 sono in coda di attesa.
Passo 8) Al tempo = 11, il processo P2 terminerร la sua esecuzione. Viene confrontato il tempo di burst di P3 e P5. Il processo P5 viene eseguito perchรฉ il suo tempo di burst รจ inferiore.
Passo 9) Al tempo = 15, il processo P5 terminerร la sua esecuzione.
Passo 10) Al tempo = 23, il processo P3 terminerร la sua esecuzione.
Passo 11) Calcoliamo il tempo medio di attesa per l'esempio sopra.
Wait time P4= 0-0=0 P1= 3-2=1 P2= 9-5=4 P5= 11-4=7 P3= 15-1=14 Average Waiting Time= 0+1+4+7+14/5 = 26/5 = 5.2
Esempio di pianificazione preventiva
Considera i seguenti tre processi in Girone all'italiana
| Coda di elaborazione | Tempo di scoppio |
|---|---|
| P1 | 4 |
| P2 | 3 |
| P3 | 5 |
Passo 1) L'esecuzione inizia con il processo P1, che ha un tempo di burst 4. Qui ogni processo viene eseguito per 2 secondi. P2 e P3 sono ancora in coda d'attesa.
Fase 2) Al tempo =2, P1 viene aggiunto alla fine della coda e P2 inizia l'esecuzione
Passo 3) Al momento=4 , P2 viene anticipato e aggiunto alla fine della coda. P3 inizia l'esecuzione.
Passo 4) Al momento=6 , P3 viene anticipato e aggiunto alla fine della coda. P1 inizia l'esecuzione.
Passo 5) Al tempo=8, P1 ha un tempo di burst pari a 4. Ha completato l'esecuzione. P2 inizia l'esecuzione
Passo 6) P2 ha un tempo di burst pari a 3. ร giร stato eseguito per 2 intervalli. Al tempo=9, P2 completa l'esecuzione. Quindi, P3 inizia l'esecuzione fino al completamento.
Passo 7) Calcoliamo il tempo medio di attesa per l'esempio sopra.
Wait time P1= 0+ 4= 4 P2= 2+4= 6 P3= 4+3= 7


















