Raccomandato, 2022

Scelta Del Redattore

Differenza tra pianificazione preventiva e non preventiva nel sistema operativo

È responsabilità dello scheduler della CPU assegnare un processo alla CPU ogni volta che la CPU è in stato di inattività. Lo scheduler della CPU seleziona un processo dalla coda pronta e assegna il processo alla CPU. La pianificazione che si verifica quando un processo passa dallo stato di esecuzione allo stato di pronto o dallo stato di attesa allo stato di pronto è denominata Pianificazione preventiva . Sulle mani, la pianificazione che si verifica quando un processo termina o passa dall'esecuzione allo stato in attesa di questo tipo di pianificazione della CPU viene chiamata Pianificazione non preventiva . La differenza fondamentale tra la pianificazione preventiva e quella non preventiva sta nel loro stesso nome. Questa è una pianificazione preventiva che può essere anticipata; i processi possono essere programmati. Nella pianificazione non preventiva, i processi non possono essere pianificati.

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 confrontoPianificazione preventivaPianificazione non preventiva
Di baseLe 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.
InterrompereIl processo può essere interrotto in mezzo.Il processo non può essere interrotto finché non termina o passa allo stato di attesa.
FameSe 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 altoLa 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.
CostoLa 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.

Nel frattempo, P3 era in esecuzione, il processo P1 arriva al momento 2. Ora il tempo residuo per P3 (3 millisecondi) è inferiore al tempo richiesto dai processi P1 (4 millisecondi) e P2 (5 millisecondi). Quindi P3 può continuare. Mentre P3 sta continuando il processo P0 arriva al tempo 3, ora il tempo residuo per P3 (2 millisecondi) è uguale al tempo richiesto da P0 (2 millisecondi). Quindi P3 continua e dopo che P3 termina la CPU viene allocata a P0 in quanto ha meno tempo di burst rispetto ad altri. Dopo che P0 termina, la CPU viene assegnata a P1 e quindi a P2.

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.

Cerchiamo di risolvere l'esempio di programmazione di cui sopra in modo non preventivo. Come inizialmente il processo P2 arriva al tempo 0, quindi la CPU è allocata al processo P2 ci vogliono 6 millisecondi per l'esecuzione. Tra tutti i processi, cioè P0, P1, P3 arriva in coda pronta. Ma tutti aspettano che il processo P2 completi il ​​tempo di burst della CPU. Quindi il processo arriva dopo P2, vale a dire che P3 viene quindi allocato alla CPU fino a quando non termina il suo tempo di burst. Allo stesso modo, viene eseguita P1 e successivamente la CPU elaborerà P0.

Differenze chiave tra pianificazione preventiva e non preventiva

  1. 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 .
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.

Top