Che cos'è la pianificazione preventiva?
La pianificazione preventiva è un metodo di pianificazione in cui le attività sono per lo più assegnate con le loro priorità. A volte è importante eseguire un'attività con una priorità più alta prima di un'altra attività con priorità più bassa, anche se l'attività con priorità più bassa è ancora in esecuzione.
A quel punto, l'attività con priorità più bassa dura per qualche tempo e riprende quando l'attività con priorità più alta termina la sua esecuzione.
In questo tutorial sul sistema operativo imparerai:
- Che cos'è la pianificazione preventiva?
- Che cos'è la pianificazione non preventiva?
- Differenza tra pianificazione preventiva e non preventiva nel sistema operativo
- Vantaggi della pianificazione preventiva
- Vantaggi della pianificazione non preventiva
- Svantaggi della pianificazione preventiva
- Svantaggi della pianificazione non preventiva
- Esempio di pianificazione non preventiva
- Esempio di pianificazione preventiva
Che cos'è la pianificazione non preventiva?
In questo tipo di metodo di pianificazione, la CPU è stata assegnata a un processo specifico. Il processo che mantiene la CPU occupata 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.
Differenza tra pianificazione preventiva e non preventiva nel sistema operativo
Qui ci sono la pianificazione preventiva e non preventiva nel sistema operativo
Pianificazione preventiva | Pianificazione non preventiva |
È possibile impedire a un processore di eseguire i diversi processi durante l'esecuzione di un processo corrente. | Una volta che il processore inizia la sua esecuzione, deve terminarla prima di eseguire l'altro. 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. |
Il tempo di attesa e di risposta della pianificazione preventiva è inferiore. | Il tempo di attesa e di risposta del metodo di pianificazione non preventiva è maggiore. |
La pianificazione preventiva ha la priorità. Il processo con la massima priorità è un processo attualmente utilizzato. | Quando un processo entra nello stato di esecuzione, lo stato di quel processo non viene mai cancellato dallo scheduler finché non termina il suo lavoro. |
La pianificazione preventiva è flessibile. | La pianificazione non preventiva è rigida. |
Esempi: - Primo tempo rimanente più breve, Round Robin, ecc. | Esempi: primo arrivato, primo servito, lavoro più breve prima, pianificazione prioritaria, ecc. |
L'algoritmo di pianificazione preventiva può essere anticipato, ovvero il processo può essere pianificato | In caso di pianificazione non preventiva, il processo non può essere pianificato |
In questo processo, la CPU viene assegnata ai processi per un periodo di tempo specifico. | In questo processo, la CPU viene assegnata al processo finché non termina o passa allo stato di attesa. |
L'algoritmo preventivo ha il sovraccarico di passare il processo dallo stato pronto allo stato in esecuzione e viceversa. | La pianificazione non preventiva non ha tale sovraccarico di passare il processo dallo stato di pronto. |
Vantaggi della pianificazione preventiva
Ecco i vantaggi / vantaggi del metodo di pianificazione preventiva:
- Il metodo di pianificazione preventiva è più robusto, quindi un processo non può monopolizzare la CPU
- Scelta dell'attività in esecuzione riconsiderata dopo ogni interruzione.
- Ogni evento causa l'interruzione delle attività in esecuzione
- Il sistema operativo si assicura che l'utilizzo della CPU sia lo stesso per tutti i processi in esecuzione.
- In questo, l'utilizzo della CPU è lo stesso, cioè 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 è utile 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 overhead di pianificazione
- Tende a offrire un rendimento elevato
- È un metodo concettualmente molto semplice
- Meno risorse di calcolo necessarie per la pianificazione
Svantaggi della pianificazione preventiva
Ecco i contro / svantaggi del metodo di pianificazione preventiva:
- Hai bisogno di risorse di calcolo limitate per la pianificazione
- Impiega più tempo allo scheduler per sospendere l'attività in esecuzione, cambiare il 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ò rendere difficile la pianificazione in tempo reale e prioritaria
- Scarso tempo di risposta per i processi
Esempio di pianificazione non preventiva
Nella pianificazione SJF non preventiva, una volta che il ciclo della CPU viene allocato al processo, il processo lo trattiene fino a quando non raggiunge uno stato di attesa o viene terminato.
Considera i seguenti cinque processi, ciascuno con il proprio tempo di burst e orario di arrivo univoci.
Coda di elaborazione | Tempo di scoppio | Orario di arrivo |
P1 | 6 | 2 |
P2 | 2 | 5 |
P3 | 8 | 1 |
P4 | 3 | 0 |
P5 | 4 | 4 |
Step 0) All'istante = 0, P4 arriva e inizia l'esecuzione.
Passaggio 1) All'ora = 1, arriva il processo P3. Tuttavia, P4 necessita ancora di 2 unità di esecuzione per essere completato. Continuerà l'esecuzione.
Passaggio 2) All'ora = 2, il processo P1 arriva e viene aggiunto alla coda di attesa. P4 continuerà l'esecuzione.
Passaggio 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.
Passaggio 4) All'ora = 4, il processo P5 arriva e viene aggiunto alla coda di attesa. P1 continuerà l'esecuzione.
Passaggio 5) All'ora = 5, il processo P2 arriva e viene aggiunto alla coda di attesa. P1 continuerà l'esecuzione.
Passaggio 6) All'ora = 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.
Passaggio 7) All'ora = 10, P2 è in esecuzione e P3 e P5 sono in coda di attesa.
Passaggio 8) All'ora = 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.
Passaggio 9) All'ora = 15, il processo P5 terminerà la sua esecuzione.
Passaggio 10) All'ora = 23, il processo P3 terminerà la sua esecuzione.
Passaggio 11) Calcoliamo il tempo di attesa medio per l'esempio sopra.
Wait timeP4= 0-0=0P1= 3-2=1P2= 9-5=4P5= 11-4=7P3= 15-1=14Average Waiting Time= 0+1+4+7+14/5 = 26/5 = 5.2
Esempio di pianificazione preventiva
Considera ciò che segue tre processi in Round-robin
Coda di elaborazione | Tempo di scoppio |
P1 | 4 |
P2 | 3 |
P3 | 5 |
Passaggio 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 di attesa.
Passaggio 2 ) All'ora = 2, P1 viene aggiunto alla fine della coda e P2 inizia l'esecuzione
Passaggio 3) All'ora = 4, P2 viene preceduto e aggiunto alla fine della coda. P3 inizia l'esecuzione.
Passaggio 4) All'ora = 6, P3 viene preceduto e aggiunto alla fine della coda. P1 inizia l'esecuzione.
Passaggio 5) Al tempo = 8, P1 ha un tempo di burst di 4. Ha completato l'esecuzione. P2 avvia l'esecuzione
Passaggio 6) P2 ha un tempo di burst di 3. È già stato eseguito per 2 intervalli. All'ora = 9, P2 completa l'esecuzione. Quindi, P3 inizia l'esecuzione fino al completamento.
Passaggio 7) Calcoliamo il tempo di attesa medio per l'esempio sopra.
Wait timeP1= 0+ 4= 4P2= 2+4= 6P3= 4+3= 7
PRINCIPALI DIFFERENZE
- Nella pianificazione preventiva, la CPU viene allocata ai processi per un periodo di tempo specifico e la CPU con pianificazione non preventiva viene assegnata al processo fino al suo termine.
- Nella pianificazione preventiva, le attività vengono commutate in base alla priorità mentre la pianificazione non preventiva non avviene alcuna commutazione.
- L'algoritmo preventivo ha il sovraccarico di passare 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.