Sobes.tech
Back to questions
Senior
4

В чём разница между кооперативной и вытесняющей многозадачностью?

Companies where asked
AvitoAvito

Answer from AI

sobes.tech AI

Кооперативная многозадачность — это модель, при которой задачи (процессы или потоки) сами добровольно уступают управление, позволяя другим задачам выполняться. Планировщик не прерывает задачу принудительно, а задача должна явно вызвать переключение.

Вытесняющая многозадачность — модель, при которой планировщик операционной системы принудительно прерывает выполнение задачи через определённые интервалы времени (тайм-кванты) и переключает управление на другую задачу.

Разница:

  • В кооперативной многозадачности задачи должны быть «дружелюбными» и регулярно уступать управление, иначе одна задача может заблокировать систему.
  • В вытесняющей — планировщик контролирует переключение, что обеспечивает более равномерное распределение ресурсов и предотвращает зависание.

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