In questo tutorial impareremo un concetto importante sugli algoritmi di pianificazione dei processi della CPU. Il nome del concetto importante è First Come First Serve. Questo è l'algoritmo di base che ogni studente deve imparare per comprendere tutte le basi degli algoritmi di pianificazione dei processi della CPU.
First Come First Serve apre la strada alla comprensione di altri algoritmi. Questo algoritmo può presentare molti svantaggi. Ma questi svantaggi hanno creato algoritmi molto nuovi ed efficienti. Pertanto, è nostra responsabilità conoscere gli algoritmi di pianificazione dei processi della CPU First Come First Serve.
Abbreviazioni importanti
- CPU - - - > Unità di elaborazione centrale
- FCFS - - - > Primo arrivato, primo servito
- AT - - - > Orario di arrivo
- BT - - - > Tempo di burst
- WT - - - > Tempo di attesa
- TAT - - - > Tempo di svolta
- CT - - - > Tempo di completamento
- FIFO - - - > Primo entrato, primo uscito
Primo arrivato primo servito
L'algoritmo di pianificazione della CPU First Come First Serve, brevemente noto come FCFS, è il primo algoritmo dell'algoritmo di pianificazione del processo della CPU. Nell'algoritmo First Come First Serve ciò che facciamo è consentire l'esecuzione del processo in modo lineare.
Ciò significa che qualunque processo entri per primo nella coda pronta viene eseguito per primo. Ciò dimostra che l’algoritmo First Come First Serve segue il principio FIFO (First In First Out).
angoli adiacenti
L'algoritmo First Come First Serve può essere eseguito in modalità Pre Emptive e Non Pre Emptive. Prima di entrare negli esempi, capiamo cos'è l'approccio preventivo e non preventivo nella pianificazione dei processi della CPU.
Approccio preventivo
In questo caso di pianificazione preventiva del processo, il sistema operativo assegna le risorse a un processo per un periodo di tempo predeterminato. Il processo passa dallo stato di esecuzione allo stato di pronto o dallo stato di attesa allo stato di pronto durante l'allocazione delle risorse. Questo passaggio avviene perché la CPU può assegnare la precedenza ad altri processi e sostituire il processo attualmente attivo con il processo con priorità più alta.
Approccio non preventivo
In questo caso di pianificazione del processo non preventiva, la risorsa non può essere ritirata da un processo prima che il processo abbia terminato l'esecuzione. Quando un processo in esecuzione termina e passa allo stato di attesa, le risorse vengono scambiate.
Effetto convoglio nel primo arrivato, primo servito (FCFS)
L'effetto convoglio è un fenomeno che si verifica nell'algoritmo di pianificazione denominato First Come First Serve (FCFS). L'algoritmo di pianificazione First Come First Serve avviene in modo non preventivo.
La modalità Non preventiva significa che se viene avviata l'esecuzione di un processo o di un lavoro, il sistema operativo deve completare il processo o il lavoro. Fino a quando il processo o il lavoro non è pari a zero, il processo o il lavoro nuovo o successivo non inizia la sua esecuzione. La definizione di pianificazione non preventiva in termini di sistema operativo significa che l'unità di elaborazione centrale (CPU) sarà completamente dedicata fino alla fine del processo o del lavoro avviato per primo e il nuovo processo o lavoro verrà eseguito solo dopo il completamento del processo o del lavoro precedente. lavoro.
Potrebbero verificarsi alcuni casi in cui l'unità di elaborazione centrale (CPU) potrebbe dedicare troppo tempo. Questo perché nell'approccio non preventivo dell'algoritmo di pianificazione first come first serve, i processi o i lavori vengono scelti in ordine seriale. A causa di ciò, i lavori o i processi più brevi dietro i processi o i lavori più grandi richiedono troppo tempo per completarne l'esecuzione. Per questo motivo il tempo di attesa, il tempo di consegna e il tempo di completamento sono molto elevati.
Pertanto, in questo caso, poiché il primo processo è ampio o il tempo di completamento è troppo elevato, si verifica questo effetto Convoglio nell'algoritmo First Come First Serve.
Supponiamo che Longer Job richieda un tempo infinito per essere completato. Quindi, i restanti processi devono attendere lo stesso tempo infinito. A causa di questo effetto convoglio creato dal lavoro più lungo, la fame dei processi di attesa aumenta molto rapidamente. Questo è il più grande svantaggio della pianificazione dei processi della CPU FCFS.
Caratteristiche della pianificazione dei processi della CPU FCFS
Le caratteristiche di FCFS CPU Process Scheduling sono:
- L'implementazione è semplice.
- Non provoca alcuna causalità durante l'utilizzo
- Adotta una strategia non preventiva e preventiva.
- Esegue ciascuna procedura nell'ordine in cui viene ricevuta.
- L'orario di arrivo viene utilizzato come criterio di selezione per le procedure.
Vantaggi della pianificazione dei processi CPU FCFS
I vantaggi della pianificazione dei processi CPU FCFS sono:
- Per allocare i processi, utilizza la coda First In First Out.
- Il processo di pianificazione della CPU FCFS è semplice e facile da implementare.
- Nella situazione FCFS di pianificazione preventiva, non vi è alcuna possibilità che il processo muoia di fame.
- Poiché non viene presa in considerazione la priorità del processo, si tratta di un algoritmo equo.
Svantaggi della pianificazione del processo CPU FCFS
Gli svantaggi della pianificazione del processo della CPU FCFS sono:
- L'algoritmo di pianificazione della CPU FCFS ha tempi di attesa lunghi
- La pianificazione della CPU FCFS favorisce le operazioni della CPU rispetto alle operazioni di input o output
- In FCFS esiste la possibilità che si verifichi l'effetto convoglio
- Poiché FCFS è così semplice, spesso non è molto efficace. A ciò vanno di pari passo periodi di attesa prolungati. Tutti gli altri ordini vengono lasciati inattivi se la CPU è impegnata nell'elaborazione di un ordine che richiede molto tempo.
Problemi nell'algoritmo di pianificazione della CPU First Come First Serve
Esempio
S. No Process ID Process Name Arrival Time Burst Time _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 1 P 1 A 0 9 2 P 2 B 1 3 3 P 3 C 1 2 4 P 4 D 1 4 5 P 5 E 2 3 6 P 6 F 3 2
Approccio non preventivo
Ora, risolviamo questo problema con l'aiuto dell'algoritmo di pianificazione denominato First Come First Serve in a Non Preemptive Approach.
Il diagramma di Gantt per l'esempio 1 sopra è:
Tempo di svolta = Tempo di completamento - Orario di arrivo
Tempo di attesa = Tempo di svolta - Tempo di burst
java come eseguire l'override
Soluzione alla domanda precedente Esempio 1
Si No | ID processo | Orario di arrivo | Tempo di scoppio | Tempo di completamento | Tempo di consegna | Tempo di attesa | |
---|---|---|---|---|---|---|---|
1 | P1 | UN | 0 | 9 | 9 | 9 | 0 |
2 | P2 | B | 1 | 3 | 12 | undici | 8 |
3 | P3 | C | 1 | 2 | 14 | 13 | undici |
4 | P4 | D | 1 | 4 | 18 | 17 | 13 |
5 | P5 | E | 2 | 3 | ventuno | 19 | 16 |
6 | P 6 | F | 3 | 2 | 23 | venti | 18 |
Il tempo medio di completamento è:
CT medio = ( 9 + 12 + 14 + 18 + 21 + 23 ) / 6
CT medio = 97/6
CT medio = 16,16667
Il tempo medio di attesa è:
Peso medio = ( 0 + 8 + 11 + 13 + 16 + 18 ) /6
Peso medio = 66/6
Peso medio = 11
Il tempo medio di risposta è:
TAT medio = ( 9 + 11 + 13 + 17 + 19 +20 ) / 6
TAT medio = 89/6
TAT medio = 14,83334
Ecco come viene risolto il FCFS nell'approccio non preventivo.
Ora, cerchiamo di capire come possono essere risolti con l'approccio preventivo
Approccio preventivo
Ora, risolviamo questo problema con l'aiuto dell'algoritmo di pianificazione denominato First Come First Serve in a Pre Emptive Approach.
Nell'approccio preventivo cerchiamo il miglior processo disponibile
disattivando la modalità sviluppatore
Il diagramma di Gantt per l'esempio 1 sopra è:
Si No | ID processo | Orario di arrivo | Tempo di scoppio | Tempo di completamento | Tempo di consegna | Tempo di attesa | |
---|---|---|---|---|---|---|---|
1 | P1 | UN | 0 | 9 | 23 | 23 | 14 |
2 | P2 | B | 1 | 3 | 8 | 7 | 4 |
3 | P3 | C | 1 | 2 | 3 | 2 | 0 |
4 | P4 | D | 1 | 4 | quindici | 14 | 10 |
5 | P5 | E | 2 | 3 | undici | 9 | 7 |
6 | P 6 | F | 3 | 2 | 5 | 2 | 0 |
successivo → ← prec Per eliminare il problema dello spreco dei segnali di sveglia, Dijkstra ha proposto un approccio che prevede la memorizzazione di tutte le chiamate di sveglia. Dijkstra afferma che, invece di dare il campanello d'allarme direttamente al consumatore, il produttore può memorizzare il campanello d'allarme in una variabile. Qualsiasi consumatore può leggerlo ogni volta che ne ha bisogno. Il semaforo sono le variabili che memorizzano tutti i segnali di sveglia che vengono trasferiti dal produttore al consumatore. È una variabile su cui la lettura, la modifica e l'aggiornamento avviene automaticamente in modalità kernel. Il semaforo non può essere implementato in modalità utente poiché potrebbero sempre verificarsi condizioni di competizione quando due o più processi tentano di accedere simultaneamente alla variabile. Ha sempre bisogno del supporto del sistema operativo per essere implementato. A seconda della situazione, Semaphore può essere diviso in due categorie.
Discuteremo ciascuno in dettaglio. |