Разница между кооперативной и вытесняющей многозадачностью заключается в способе передачи управления между задачами. 5
Кооперативная многозадачность предполагает, что операционная система не инициирует передачу управления между задачами. 5 Задачи самостоятельно отдают управление планировщику, а он решает, какая задача будет выполняться следующей. 5 При таком подходе приложение может захватить столько процессорного времени, сколько оно считает нужным. 12
Вытесняющая многозадачность характеризуется тем, что планировщик задач принудительно приостанавливает выполнение текущей задачи и отдаёт управление другой задаче, готовой для исполнения. 5 Приостановка текущей задачи называется вытеснением. 5 Существуют разные механизмы вытеснения: таймер, приоритет, прерывания. 5
Некоторые преимущества кооперативной многозадачности: полный контроль за выполнением программы, программа получает в своё распоряжение все системные ресурсы, реализация операционной системы с кооперативной многозадачностью проще, чем с вытесняющей. 4
Некоторые преимущества вытесняющей многозадачности: программа, написанная с ошибками, не заберёт себе все ресурсы сервера, система не «зависает», пока одна из программ выполняет свою задачу, программирование на системах с вытесняющей многозадачностью проще, так как программисту не нужно думать о том, как и когда отдавать управление операционной системе. 4
Вытесняющая многозадачность используется во многих операционных системах, в том числе Linux, MacOS, Windows. 5 Кооперативная многозадачность, в свою очередь, применяется в системах с жёстким временем выполнения (медицинское, автомобильное, аэрокосмическое оборудование). 4