Jump to content

Кооперативная многозадачность

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

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

Это связано с подходом асинхронного программирования .

Использование

[ редактировать ]

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

Кооперативная многозадачность аналогична async/await в таких языках, как JavaScript или Python , которые имеют однопоточный цикл событий во время выполнения. Это контрастирует с кооперативной многозадачностью, поскольку await нельзя вызвать из неасинхронной функции, а только из асинхронной функции, которая является своего рода сопрограммой . [4] [5]

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

Проблемы

[ редактировать ]

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

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

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

  1. ^ Jump up to: а б с «Определение невытесняющей многозадачности» . pcmag.com . Проверено 15 августа 2015 г.
  2. ^ Jump up to: а б Джо Бартель (5 ноября 2011 г.). «Невытесняющая многозадачность» (PDF) . classiccmp.org . Архивировано из оригинала (PDF) 19 августа 2019 года . Проверено 15 августа 2015 г.
  3. ^ «Вытесняющая многозадачность» . riscos.info . 2 ноября 2009 года . Проверено 15 августа 2015 г.
  4. ^ Керкур, Сильвен (25 января 2022 г.). «Асинхронная ржавчина: кооперативное или упреждающее планирование» . Проверено 30 января 2023 г.
  5. ^ Скворцов, Виктор. «За кулисами Python № 12: Как работает async/await в Python» . Проверено 30 января 2023 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: ad52099b396512fc8c0b54d4e60f3ccb__1706706900
URL1:https://arc.ask3.ru/arc/aa/ad/cb/ad52099b396512fc8c0b54d4e60f3ccb.html
Заголовок, (Title) документа по адресу, URL1:
Cooperative multitasking - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)