Opzioni di contesto

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

  1. Salvare il contesto del thread che ha appena terminato l'esecuzione.
  2. Posizionare il thread che ha appena terminato 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 di thread seguenti non sono pronte.

  • Thread creati con il flag 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.

Finché i thread sospesi o bloccati non 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, abbandona il resto della sezione temporale.