Вытесняющая многозадачность
Вытесняющая многозадачность (приоритетная многозадачность, англ. preemptive multitasking, дословно упреждающая многозадачность) — это вид многозадачности, при которой операционная система принимает решение о переключении между задачами по истечении некоего кванта времени[1].
Особенности
Решение принимается в соответствии с приоритетами задач. В отличие от кооперативной многозадачности, управление операционной системе передаётся вне зависимости от состояния работающих приложений, благодаря чему, в частности, зависшие (к примеру — зациклившиеся) приложения, как правило, не «подвешивают» операционную систему. За счёт регулярного переключения задач также улучшается отзывчивость системы, оперативность освобождения ресурсов системы, которые больше не используются задачей[1][2].
В реализации вытесняющая многозадачность отличается от кооперативной, в частности, тем, что требует обработки системного прерывания от аппаратного таймера[3]. По истечении кванта времени, отведённого процессу, происходит прерывание и вызывается планировщик процессов. Частота вызова планировщика критична: слишком частый его вызов будет расходовать процессорное время впустую.
Поддержка в операционных системах
Вытесняющая многозадачность используется в большинстве современных операционных систем общего назначения[4], к примеру: Windows 9x и NT[5], Linux (и другие UNIX)[6] и OS/2[7],[8] Mac OS[9][10] и BeOS[11], MenuetOS и KolibriOS[12]. Примером системы с вытесняющей многозадачностью более ранней, чем UNIX, может служить VMS[13]. Она также используется во многих встраиваемых операционных системах реального времени, таких как FreeRTOS[14].
Примечания
Литература
- Реймонд, Эрик Стивен. Искусство программирования для Unix. — Издательский дом Вильямс, 2005. — 544 с. — ISBN 978-5-8459-0791-2.
- Max Hailperin. 2.5. Preemptive multitasking // Operating Systems and Middleware: Supporting Controlled Interaction. — Max Hailperin, 2007. — С. 33-34. — 496 с. — ISBN 978-0-534-42369-8. Архивная копия от 15 сентября 2016 на Wayback Machine
- Christopher Kormanyos. 11.7 Preemptive Multitasking // Real-Time C++: Efficient Object-Oriented and Template Microcontroller Programming. — Springer, 2015. — 389 с. — ISBN 978-3-662-47810-3.