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.

raja

Pubblicato il 28-Sep-2018 15:31:15

Pubblicità

Leave a Reply