Cos’è il Context Switching nel sistema operativo?
Il context switching comporta la memorizzazione del contesto o dello stato di un processo in modo che possa essere ricaricato quando necessario e l’esecuzione possa essere ripresa dallo stesso punto di prima. Questa è una caratteristica di un sistema operativo multitasking e permette ad una singola CPU di essere condivisa da più processi.
Un diagramma che dimostra la commutazione di contesto è il seguente –
Nel diagramma sopra, inizialmente il Processo 1 è in esecuzione. Il processo 1 viene spento e il processo 2 viene inserito a causa di un interrupt o di una chiamata di sistema. La commutazione di contesto comporta il salvataggio dello stato del processo 1 in PCB1 e il caricamento dello stato del processo 2 da PCB2. Dopo un po’ di tempo si verifica di nuovo un cambio di contesto e il Processo 2 viene spento e il Processo 1 viene inserito di nuovo. Questo comporta il salvataggio dello stato del processo 2 in PCB2 e il caricamento dello stato del processo 1 da PCB1.
Trigger di commutazione di contesto
Ci sono tre principali trigger per la commutazione di contesto. Questi sono dati come segue –
-
Multitasking: In un ambiente multitasking, un processo viene spostato dalla CPU in modo che un altro processo possa essere eseguito. Lo stato del vecchio processo viene salvato e lo stato del nuovo processo viene caricato. Su un sistema pre-emptive, i processi possono essere scambiati dallo scheduler.
-
Gestione dell’interruzione: L’hardware commuta una parte del contesto quando si verifica un interrupt. Questo avviene automaticamente. Solo una parte del contesto viene cambiata per minimizzare il tempo richiesto per gestire l’interrupt.
-
Commutazione di modalità utente e kernel: Una commutazione di contesto può avvenire quando è richiesta una transizione tra la modalità utente e la modalità kernel nel sistema operativo.
Passi del cambio di contesto
I passi coinvolti nel cambio di contesto sono i seguenti –
- Salva il contesto del processo che è attualmente in esecuzione sulla CPU. Aggiorna il blocco di controllo del processo e altri campi importanti.
- Sposta il blocco di controllo del processo di cui sopra nella coda pertinente come la coda pronta, la coda I/O ecc.
- Seleziona un nuovo processo per l’esecuzione.
- Aggiorna il blocco di controllo del processo selezionato. Questo include l’aggiornamento dello stato del processo in esecuzione.
- Aggiorna le strutture dati della gestione della memoria come richiesto.
- Ripristina il contesto del processo che era precedentemente in esecuzione quando viene caricato nuovamente sul processore. Questo viene fatto caricando i valori precedenti del blocco di controllo del processo e dei registri.
Context Switching Cost
Il context switching porta a un costo overhead a causa dei flush del TLB, della condivisione della cache tra più compiti, dell’esecuzione del task scheduler ecc. La commutazione di contesto tra due thread dello stesso processo è più veloce che tra due processi diversi, poiché i thread hanno le stesse mappe di memoria virtuale. A causa di questo TLB flushing non è richiesto.
Leave a Reply