Из Википедии, свободной энциклопедии
  (Перенаправлен из кооперативной многозадачности )
Перейти к навигации Перейти к поиску

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

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

Использование [ править ]

Хотя он редко используется в современных более крупных системах, он широко используется во встроенных системах с ограничением памяти, а также в определенных приложениях, таких как CICS или подсистема JES2 . Совместная многозадачность была основной схемой планирования для 16-разрядных приложений, используемых Microsoft Windows до Windows 95 и Windows NT (например, Windows 3.1x ), а также классической Mac OS . Windows 9x использовала беспрерывную многозадачность для 16-битных унаследованных приложений, а версии Mac OS X для PowerPC до Leopard использовали ее дляклассические приложения. [1] NetWare , ориентированная на сеть операционная система, использовала кооперативную многозадачность вплоть до NetWare 6.5. Кооперативная многозадачность все еще используется в системах RISC OS . [3]

Кооперативная многозадачность используется с ожиданием в языках с однопоточным циклом обработки событий во время выполнения, таких как JavaScript или Python.

Проблемы [ править ]

Поскольку кооперативная многозадачная система полагается на то, что каждый процесс регулярно уступает время другим процессам в системе, одна плохо спроектированная программа может использовать все время ЦП для себя либо путем выполнения обширных вычислений, либо путем ожидания ; оба приведут к зависанию всей системы . В серверной среде это опасность, которая делает всю среду неприемлемо хрупкой. [1] Однако совместная многозадачность позволяет значительно упростить реализацию приложений, поскольку их выполнение никогда не прерывается планировщиком процессов неожиданно; например, различные функции внутри приложения не нуждаются в повторной входимости . [2]

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

См. Также [ править ]

Ссылки [ править ]

  1. ^ a b c «Определение невытесняющей многозадачности» . pcmag.com . Проверено 15 августа 2015 года .
  2. ^ a b Джо Бартель (5 ноября 2011 г.). «Бесперебойная многозадачность» (PDF) . classiccmp.org . Проверено 15 августа 2015 года .
  3. ^ «Вытесняющая многозадачность» . riscos.info . 2 ноября 2009 . Проверено 15 августа 2015 года .