Sobes.tech
Junior

Czym jest przełączanie kontekstu?

sobes.tech AI

Odpowiedź od AI

Przełączanie kontekstu (Context Switching) to proces zapisywania stanu jednego procesu (lub wątku) i przywracania stanu innego procesu (lub wątku) przez system operacyjny. Pozwala to wielu procesom dzielić ten sam procesor.

Algorytm obejmuje następujące kroki:

  1. Zapisanie bieżącego kontekstu: Rejestry procesora, licznik instrukcji (PC), stan stosu i inne informacje o bieżącym procesie są zapisywane w jego opisie (PCB - Blok Kontroli Procesu).
  2. Wybór następnego procesu: Planista systemu operacyjnego wybiera kolejny proces do wykonania.
  3. Przywrócenie kontekstu: Zapisany stan wybranego procesu jest ładowany z jego PCB do rejestrów procesora.

Koszty (nakład) przełączania kontekstu obejmują:

  • Czas poświęcony na zapisanie i przywrócenie stanu.
  • Straty efektywności z powodu cache misses, ponieważ cache wypełniony danymi jednego procesu staje się nieaktualny dla innego.
  • Koszty wykonania instrukcji planisty.

Przykład:

Załóżmy, że mamy dwa procesy, A i B, wykonujące się na jednym rdzeniu procesora.

// Na początku wykonywany jest Proces A
// Proces A korzysta z zasobów CPU

// Występuje zdarzenie wymagające przełączenia, np. upływ kwantu czasu Procesu A
// Stan Procesu A (rejestry, PC) jest zapisywany
// System operacyjny wybiera Proces B do wykonania
// Stan Procesu B jest ładowany
// Proces B zaczyna wykonywać się

Przełączanie kontekstu jest podstawowym mechanizmem wielozadaniowości w systemach operacyjnych, umożliwiającym tworzenie iluzji równoległego wykonywania wielu procesów na jednym fizycznym procesorze.