Назад к вопросам
Junior
93
questionbank

Что такое переключение контекста?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Переключение контекста (Context Switching) — это процесс сохранения состояния одного процесса (или потока) и восстановления состояния другого процесса (или потока) операционной системой. Это позволяет нескольким процессам разделять один и тот же процессор.

Алгоритм включает следующие шаги:

  1. Сохранение текущего контекста: Регистры процессора, счетчик команд (PC), состояние стека и другая информация о текущем процессе сохраняются в его дескрипторе (PCB - Process Control Block).
  2. Выбор следующего процесса: Планировщик операционной системы выбирает следующий процесс для выполнения.
  3. Восстановление контекста: Сохраненное состояние выбранного процесса загружается из его PCB в регистры процессора.

Накладные расходы (overhead) на переключение контекста включают:

  • Время, затрачиваемое на сохранение и восстановление состояния.
  • Потеря эффективности из-за промахов кэша (cache misses), так как кэш, заполненный данными одного процесса, становится неактуальным для другого.
  • Затраты на выполнение инструкций планировщика.

Пример:

Предположим, у нас есть два процесса, A и B, выполняющиеся на одном ядре процессора.

// Изначально выполняется Процесс A
// Процесс A использует ресурсы ЦПУ

// Происходит событие, требующее переключения, например, квант времени Процесса A истек
// Состояние Процесса A (регистры, PC) сохраняется
// ОС выбирает Процесс B для выполнения
// Состояние Процесса B загружается
// Процесс B начинает выполнение

Переключение контекста является фундаментальным механизмом многозадачности в операционных системах, позволяющим создавать иллюзию параллельного выполнения множества процессов на одном физическом процессоре.