При многозадачности, что не выжимает, механизм планирования распределен между системой и прикладными программами. Прикладная программа, получивши управление от операционной системы, самая определяет момент завершения своей очередной итерации и передает управление ОС с помощью некоторого системного вызова, а ОС формирует очереди задач и выбирает согласно некоторому алгоритму (например, с учетом приоритетов) такую задачу на выполнение. Такой механизм создает проблемы как для пользователей, так и для разработчиков.

Для пользователей это означает, что управление системой теряется на произвольный период времени, которое определяется приложением (а не пользователем). Если приложение тратит слишком много времени на выполнение какой-либо работы, например, на форматирование диска, пользователь не может переключиться из этой задачи на другую задачу, например, на текстовый редактора, в то время как форматирование длился бы в фоновом режиме. Эта ситуация нежелательная, потому что пользователи обычно не хотят долго ждать, когда машина завершит свою задачу.

Поэтому разработчики приложений для non-preemptive операционного среды, возлагая на себя функции планировщика, должны создавать приложения так, чтобы они выполняли свои задачи небольшими частями. Например, программа форматирования может отформатировать одну дорожку дискеты и возвратить управление системе. После выполнения других задач система возвратит управление программе форматирования, чтобы и отформатировала такую дорожку. Подобный метод деления времени между задачами работает, но он существенным образом утрудняет разработку программ и предъявляет повышенные требования к квалификации программиста. Программист должен обеспечить "дружеское" отношение своей программы к другим выполняемым одновременно с ней программам, достаточно часто отдавая им управление. Крайним проявлением "недружественности" приложения есть его зависания, которые приводит к общему краху системы. В системах из многозадачностьюъъ, что выжимает, такие ситуации, как правило, исключенные, потому что центральный планировочный механизм снимет зависшую задачу по выполнению.

Однако распределение функций планировщика между системой и приложениями не всегда является недостатком, а при определенных условиях может быть и преимуществом, потому что дает возможность разработчику приложений самому проецировать алгоритм планирования, более всего подходящий для данного фиксированного набора задач. Потому что разработчик самый определяет в программе момент времени отдачи управления, то при этом исключаются нерациональные прерывания программ в "неудобные" для них моменты времени. Кроме того, легко решаются проблемы общего использования данных: задача во время каждой итерации использует их монопольно и уверенная, что на протяжении этого периода никто другой не изменит эти данные. Существенным преимуществом non-preemptive систем есть более высокая скорость переключения из задачи на задачу.

Примером эффективного использования многозадачностиъъ, что не выжимает, есть сервер Netware, в котором, в значительной степени благодаря этому, достигнутая высокая скорость выполнения файловых операций. Меньше удачным оказалось использование многозадачностиъъ, что не выжимает, в операционной среде Windows 3.х.

Однако почти во всех современных операционных системах, ориентированных на высокопроизводительное выполнение приложений (UNIX, Windows NT, OS/2, VAX/VMS), реализованная многозадачность, что выжимает. В последнее время  дошла очередь и к ОС класса настольных систем, например, OS/2 Warp и Windows 95. Возможно в связи с этим  многозадачностьъъ , что выжимает , часто называют искренней многозадачностью.

 

Возможно стоит прочитать: