Sobes.tech
Junior

Cos'è il cambio di contesto?

sobes.tech AI

Risposta dell'AI

Il cambio di contesto (Context Switching) è il processo di salvataggio dello stato di un processo (o thread) e di ripristino dello stato di un altro processo (o thread) dal sistema operativo. Questo permette a più processi di condividere un singolo processore.

L'algoritmo include i seguenti passaggi:

  1. Salvataggio del contesto attuale: I registri del processore, il contatore delle istruzioni (PC), lo stato dello stack e altre informazioni sul processo corrente vengono salvati nel suo descrittore (PCB - Process Control Block).
  2. Selezione del processo successivo: Il pianificatore del sistema operativo sceglie il prossimo processo da eseguire.
  3. Ripristino del contesto: Lo stato salvato del processo selezionato viene caricato dal suo PCB nei registri del processore.

I costi (overhead) del cambio di contesto includono:

  • Tempo dedicato a salvare e ripristinare lo stato.
  • Perdita di efficienza a causa di cache misses, poiché la cache riempita con i dati di un processo diventa irrilevante per un altro.
  • Costi di esecuzione delle istruzioni del pianificatore.

Esempio:

Supponiamo di avere due processi, A e B, in esecuzione su un singolo core di CPU.

// Inizialmente, viene eseguito il Processo A
// Il Processo A utilizza le risorse della CPU

// Si verifica un evento che richiede un cambio, ad esempio, l'expiry del quantum di tempo del Processo A
// Lo stato del Processo A (registri, PC) viene salvato
// Il sistema operativo seleziona il Processo B per l'esecuzione
// Lo stato del Processo B viene caricato
// Il Processo B inizia l'esecuzione

Il cambio di contesto è un meccanismo fondamentale del multitasking nei sistemi operativi, che permette di creare l'illusione di esecuzione parallela di più processi su un singolo processore fisico.