logo

Cambio di contesto nel sistema operativo (sistema operativo)

Il cambio di contesto è una tecnica o metodo utilizzato dal sistema operativo per cambiare un processo da uno stato all'altro per eseguire la sua funzione utilizzando le CPU nel sistema. Quando si cambia esecuzione nel sistema, memorizza lo stato del vecchio processo in esecuzione sotto forma di registri e assegna la CPU a un nuovo processo per eseguire i suoi compiti. Mentre un nuovo processo è in esecuzione nel sistema, il processo precedente deve attendere in una coda pronta. L'esecuzione del vecchio processo inizia nel punto in cui un altro processo lo ha interrotto. Definisce le caratteristiche di un sistema operativo multitasking in cui più processi condividono la stessa CPU per eseguire più attività senza la necessità di processori aggiuntivi nel sistema.

La necessità di cambiare contesto

Il cambio di contesto aiuta a condividere una singola CPU tra tutti i processi per completarne l'esecuzione e memorizzare lo stato delle attività del sistema. Quando il processo si ricarica nel sistema, l'esecuzione del processo inizia nello stesso punto in cui si è verificato il conflitto.

Di seguito sono riportati i motivi che descrivono la necessità di cambiare contesto nel sistema operativo.

come centrare un'immagine su css
  1. Il passaggio da un processo a un altro processo non avviene direttamente nel sistema. Un cambio di contesto aiuta il sistema operativo che passa tra più processi a utilizzare le risorse della CPU per svolgere i propri compiti e memorizzare il proprio contesto. Possiamo riprendere il servizio del processo allo stesso punto in seguito. Se non memorizziamo i dati o il contesto del processo attualmente in esecuzione, i dati memorizzati potrebbero andare persi durante il passaggio da un processo all'altro.
  2. Se un processo ad alta priorità rientra nella coda pronta, il processo attualmente in esecuzione verrà arrestato o interrotto da un processo ad alta priorità per completare le sue attività nel sistema.
  3. Se un processo in esecuzione richiede risorse I/O nel sistema, il processo corrente verrà commutato da un altro processo per utilizzare le CPU. E quando i requisiti di I/O vengono soddisfatti, il vecchio processo entra nello stato pronto in attesa della sua esecuzione nella CPU. Il cambio di contesto memorizza lo stato del processo per riprendere le sue attività in un sistema operativo. Altrimenti, il processo deve riavviare la sua esecuzione dal livello iniziale.
  4. Se si verificano interruzioni durante l'esecuzione di un processo nel sistema operativo, lo stato del processo viene salvato come registri utilizzando il cambio di contesto. Dopo aver risolto le interruzioni, il processo passa da uno stato di attesa a uno stato di pronto per riprendere la sua esecuzione successivamente nello stesso punto in cui si verifica l'interruzione del sistema operativo.
  5. Il cambio di contesto consente a una singola CPU di gestire più richieste di processo contemporaneamente senza la necessità di processori aggiuntivi.

Esempio di cambio di contesto

Supponiamo che più processi siano archiviati in un Process Control Block (PCB). Un processo sta eseguendo lo stato per eseguire la sua attività con l'uso delle CPU. Mentre il processo è in esecuzione, un altro processo arriva nella coda pronta, che ha un'alta priorità nel completare la sua attività utilizzando la CPU. Qui abbiamo utilizzato il cambio di contesto che scambia il processo corrente con il nuovo processo che richiede alla CPU di completare i suoi compiti. Durante il cambio di processo, un cambio di contesto salva lo stato del vecchio processo nei registri. Quando il processo si ricarica nella CPU, inizia l'esecuzione del processo quando il nuovo processo interrompe il vecchio processo. Se non salviamo lo stato del processo, dovremo avviarne l'esecuzione al livello iniziale. In questo modo, il cambio di contesto aiuta il sistema operativo a passare da un processo all'altro, a memorizzare o ricaricare il processo quando richiede l'esecuzione delle sue attività.

Trigger di cambio contesto

Di seguito sono riportati i tre tipi di trigger di cambio di contesto.

string.valuedi Java
  1. Interrompe
  2. Multitasking
  3. Interruttore kernel/utente

Interrompe : Una CPU richiede la lettura dei dati da un disco e, in caso di interruzioni, il cambio di contesto commuta automaticamente una parte dell'hardware che richiede meno tempo per gestire le interruzioni.

Multitasking : Il cambio di contesto è la caratteristica del multitasking che consente di cambiare processo dalla CPU in modo che possa essere eseguito un altro processo. Quando si cambia processo, il vecchio stato viene salvato per riprendere l'esecuzione del processo nello stesso punto del sistema.

Cambio kernel/utente : Viene utilizzato nei sistemi operativi quando si passa dalla modalità utente alla modalità kernel/utente.

Cos'è il PCB?

Un PCB (Process Control Block) è una struttura dati utilizzata nel sistema operativo per memorizzare tutte le informazioni relative ai dati del processo. Ad esempio, quando viene creato un processo nel sistema operativo, informazioni aggiornate sul processo, informazioni di commutazione del processo, processo terminato nel PCB.

Passaggi per il cambio di contesto

Esistono diversi passaggi che implicano il cambio di contesto dei processi. Il diagramma seguente rappresenta il cambio di contesto di due processi, da P1 a P2, quando si verifica un'interruzione, esigenze di I/O o un processo basato sulla priorità nella coda pronta del PCB.

Qual è il cambio di contesto nel sistema operativo

Come possiamo vedere nel diagramma, inizialmente il processo P1 è in esecuzione sulla CPU per eseguire il suo compito e, allo stesso tempo, un altro processo, P2, è nello stato pronto. Se si è verificato un errore o un'interruzione o il processo richiede input/output, il processo P1 cambia il suo stato da in esecuzione allo stato di attesa. Prima di modificare lo stato del processo P1, il cambio di contesto salva il contesto del processo P1 sotto forma di registri e contatore di programma nel PCB1 . Successivamente, carica lo stato del processo P2 dallo stato pronto del file PCB2 allo stato di marcia.

Java è uguale a

Quando si passa dal Processo P1 al Processo 2 vengono eseguiti i seguenti passaggi:

  1. Innanzitutto, questo cambio di contesto deve salvare lo stato del processo P1 sotto forma di contatore di programma e registri sul PCB (blocco contatore di programma), che è nello stato di esecuzione.
  2. Ora aggiorna PCB1 al processo P1 e sposta il processo nella coda appropriata, come la coda pronta, la coda I/O e la coda di attesa.
  3. Successivamente, un altro processo entra nello stato di esecuzione, oppure possiamo selezionare un nuovo processo dallo stato pronto, che deve essere eseguito, oppure il processo ha un'alta priorità per eseguire il suo compito.
  4. Ora dobbiamo aggiornare il PCB (Process Control Block) per il processo P2 selezionato. Include il passaggio dello stato del processo dallo stato pronto allo stato in esecuzione o da un altro stato come bloccato, esci o sospeso.
  5. Se la CPU esegue già il processo P2, dobbiamo ottenere lo stato del processo P2 per riprendere la sua esecuzione nello stesso momento in cui si verifica l'interruzione del sistema.

Allo stesso modo, il processo P2 viene spento dalla CPU in modo che il processo P1 possa riprendere l'esecuzione. Il processo P1 viene ricaricato da PCB1 allo stato di esecuzione per riprendere la sua attività nello stesso punto. In caso contrario, le informazioni andranno perse e, quando il processo verrà eseguito nuovamente, inizierà l'esecuzione al livello iniziale.