Cerchiamo di discutere le differenze tra la pianificazione preventiva e non preventiva in breve con l'aiuto del grafico di confronto mostrato di seguito.
Grafico comparativo
Base per il confronto | Pianificazione preventiva | Pianificazione non preventiva |
---|---|---|
Di base | Le risorse sono assegnate a un processo per un tempo limitato. | Una volta che le risorse sono assegnate a un processo, il processo lo mantiene fino a quando non completa il suo tempo di burst o passa allo stato di attesa. |
Interrompere | Il processo può essere interrotto in mezzo. | Il processo non può essere interrotto finché non termina o passa allo stato di attesa. |
Fame | Se un processo ad alta priorità arriva spesso nella coda di pronto, il processo a bassa priorità può morire di fame. | Se un processo con tempo di burst lungo è in esecuzione CPU, un altro processo con meno tempo di burst della CPU può morire di fame. |
in alto | La pianificazione preventiva ha i costi generali di pianificazione dei processi. | La pianificazione non preventiva non ha costi generali. |
Flessibilità | La pianificazione preventiva è flessibile. | La pianificazione non preventiva è rigida. |
Costo | La pianificazione preventiva è associata ai costi. | La pianificazione non preventiva non è associata ai costi. |
Definizione di pianificazione preventiva
La pianificazione preventiva è quella che può essere eseguita nelle circostanze in cui un processo passa dallo stato di esecuzione allo stato pronto o dallo stato di attesa allo stato pronto . Qui, le risorse (cicli della CPU) vengono allocate al processo per il tempo limitato e quindi vengono rimosse e il processo viene nuovamente posto nella coda di pronto se rimane ancora tempo di burst della CPU. Il processo rimane in coda pronta fino a quando non ha più possibilità di esecuzione.
Se un processo con priorità alta arriva nella coda pronta, non deve attendere che il processo corrente completi il suo tempo di raffica. Invece, il processo corrente viene interrotto nel mezzo dell'esecuzione e viene inserito nella coda pronta finché il processo con priorità alta utilizza i cicli della CPU. In questo modo, ogni processo nella coda pronta ottiene un po 'di tempo per eseguire la CPU. Rende flessibile la pianificazione preventiva, ma aumenta il sovraccarico di passaggio del processo dallo stato di esecuzione allo stato di pronto e viceversa.
Algoritmi che funzionano sulla pianificazione preventiva sono Round Robin. Short Job First (SJF) e Priority Scheduling possono essere o meno soggetti a una pianificazione preventiva.
Prendiamo un esempio di pianificazione preventiva, guarda nella foto qui sotto. Abbiamo quattro processi P0, P1, P2, P3. A questo punto, P2 arriva al momento 0. Quindi la CPU viene allocata al processo P2 in quanto non vi sono altri processi nella coda. Nel frattempo, P2 era in esecuzione, P3 arriva al tempo 1, ora il tempo rimanente per il processo P2 (5 millisecondi) che è maggiore del tempo richiesto da P3 (4 milli-sec). Quindi la CPU è allocata al processore P3.
Definizione di pianificazione non preventiva
La pianificazione non preventiva è quella che può essere applicata nelle circostanze in cui un processo termina o un processo passa dallo stato di esecuzione allo stato di attesa . Nella pianificazione non preventiva, una volta assegnate le risorse (CPU) a un processo, il processo mantiene la CPU fino a quando non viene terminata o raggiunge uno stato di attesa.
A differenza della pianificazione preventiva, la pianificazione non preventiva non interrompe un processo che esegue la CPU nel mezzo dell'esecuzione. Invece, attende che il processo completi il tempo di burst della CPU e quindi può allocare la CPU a un altro processo.
In Pianificazione non preventiva, se un processo con tempo di burst della CPU lungo è in esecuzione, l'altro processo dovrà attendere per un lungo periodo che aumenta il tempo medio di attesa dei processi nella coda pronta. Tuttavia, la pianificazione non preventiva non ha alcun sovraccarico nel passare i processi dalla coda pronta alla CPU, ma rende la schedulazione rigida poiché il processo in esecuzione non è nemmeno preempito per un processo con priorità più alta.
Differenze chiave tra pianificazione preventiva e non preventiva
- La differenza fondamentale tra la pianificazione preventiva e quella non preventiva è che nella pianificazione preventiva la CPU viene allocata ai processi per il tempo limitato . Durante la pianificazione non preventiva, la CPU viene allocata al processo finché non termina o passa allo stato di attesa .
- Il processo di esecuzione nella pianificazione preventiva viene interrotto nel mezzo dell'esecuzione mentre, il processo di esecuzione nella pianificazione non preventiva non viene interrotto nel mezzo dell'esecuzione.
- La pianificazione preventiva ha il sovraccarico di passare il processo dallo stato pronto allo stato di esecuzione, vice versa e mantenendo la coda pronta. D'altro canto, la pianificazione non preventiva non ha spese generali per far passare il processo dallo stato di esecuzione allo stato di pronto.
- Nella pianificazione preventiva, se un processo con priorità alta arriva spesso nella coda pronta, il processo con priorità bassa deve attendere molto e potrebbe essere necessario morire di fame. D'altra parte, nella pianificazione non preventiva, se la CPU viene allocata al processo con un tempo di burst maggiore, i processi con tempi di burst ridotti potrebbero dover morire di fame.
- La pianificazione preventiva è abbastanza flessibile perché ai processi critici è consentito accedere alla CPU non appena viene eseguita la coda di pronto, indipendentemente dal processo attualmente in esecuzione. La pianificazione non preventiva è rigida, anche se un processo critico entra nella coda pronta il processo che esegue la CPU non è disturbato.
- La pianificazione preventiva è un costo associativo in quanto deve mantenere l'integrità dei dati condivisi che non è il caso della pianificazione non preventiva.
Conclusione:
Non è che la pianificazione preventiva sia migliore della programmazione non preventiva o del contrario. Tutto dipende da come una pianificazione minimizza il tempo medio di attesa dei processi e massimizza l'utilizzo della CPU.