Почему вытесняющая многозадачность требует больше системных ресурсов?

«Почему вытесняющая многозадачность требует больше системных ресурсов?» — вопрос из категории Операционные системы, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Вытесняющая многозадачность требует больше системных ресурсов из-за накладных расходов на переключение контекста (context switching). Операционная система (ОС) принудительно прерывает выполнение одного процесса или потока и передает управление другому, основываясь на алгоритмах планирования и квантах времени.

Причины повышенного потребления ресурсов:

  • Сохранение и восстановление состояния: ОС должна сохранить полное состояние текущего процесса/потока (регистры CPU, счетчик команд, состояние стека, память, открытые файлы и т.д.) в памяти, а затем загрузить состояние следующего. Эти операции требуют процессорного времени и использования памяти.
  • Планирование (Scheduling): Сам механизм планирования, который определяет, какой процесс или поток будет выполняться следующим, также потребляет CPU-время.
  • Кэш-промахи: Переключение между процессами может приводить к инвалидации кэшей CPU (инструкций и данных), что замедляет выполнение, так как данные приходится загружать из более медленной памяти.

Чем чаще происходят переключения контекста, тем выше эти накладные расходы, что снижает долю процессорного времени, выделяемого на полезную работу. В отличие от кооперативной многозадачности, где процессы добровольно отдают управление, вытесняющая многозадачность обеспечивает лучшую отзывчивость и справедливость, но ценой этих накладных расходов.