Condividi tramite


Commutatori di contesto

L'utilità di pianificazione gestisce una coda di thread eseguibili per ogni livello di priorità. Questi thread sono noti come thread pronti. Quando un processore diventa disponibile, il sistema esegue un commutatore di contesto . I passaggi in un commutatore di contesto sono:

  1. Salvare il contesto del thread appena completato l'esecuzione.
  2. Posizionare il thread appena completato l'esecuzione alla fine della coda per la priorità.
  3. Trovare la coda con priorità più alta che contiene thread pronti.
  4. Rimuovere il thread all'inizio della coda, caricarne il contesto ed eseguirlo.

Le classi seguenti di thread non sono pronte.

  • Thread creati con il flag di CREATE_SUSPENDED
  • Thread interrotti durante l'esecuzione con la funzione SuspendThread o SwitchToThread
  • Thread in attesa di un oggetto di sincronizzazione o di un input.

Fino a quando i thread sospesi o bloccati diventano pronti per l'esecuzione, l'utilità di pianificazione non alloca alcun tempo del processore, indipendentemente dalla priorità.

I motivi più comuni per un cambio di contesto sono:

  • Intervallo di tempo trascorso.
  • Un thread con priorità più alta è pronto per l'esecuzione.
  • Un thread in esecuzione deve attendere.

Quando un thread in esecuzione deve attendere, rinuncerà al resto della sezione temporale.