Кооперативна багатозадачність — Вікіпедія

Кооперативна багатозадачність, також знана як багатозадачність без витіснення, це стиль комп'ютерної багатозадачності, в якому операційна система ніколи не ініціює перемикання контексту від запущеного процесу до іншого процесу. Замість того, процеси періодично добровільно поступаються контролем, або перебувають в режимі очікування, для того, щоб кілька додатків мали можливість працювати одночасно. Цей тип багатозадачності називається «кооперативним», тому що всі програми повинні співпрацювати для роботи всієї схеми планування. У цій схемі процес планувальника операційної системи відомий як кооперативний планувальник, його роль зводиться до запуску процесів і дозволу їм повернути управління назад добровільно.[1][2]

Хоча вона рідко використовується в сучасних великих системах, окрім певних додатків, таких як CICS або підсистема JES2, кооперативна багатозадачність була основною схемою планування для 16-розрядних програм, які використовував Microsoft Windows до версій Windows 95 і Windows NT, а також Mac OS до версії OS X. Windows 9x використовував багатозадачність без витіснення для 16-розрядних застарілих додатків, PowerPC з операційною системою Mac OS X до версії Leopard використовував його для класичних додатків. NetWare, яка являє собою мережево-орієнтовану операційну систему, використовувала кооперативну багатозадачність до версії NetWare 6.5. Кооперативна багатозадачність досі використовується в RISC OS системах.[1] NetWare, which is a network-oriented operating system, used cooperative multitasking up to NetWare 6.5. Cooperative multitasking is still used on RISC OS systems.[3]

Через те, що кооперативно багатозадачна система потребує того, щоб кожен процес регулярно віддавав час іншим процесам в системі, одна погано розроблена програма може використовувати весь процесорний час для себе, або шляхом проведення великих розрахунків або через стан активного очікування; обидва фактори можуть привести до того, що система зависне. У серверному середовищі, це загроза, робить все середовище неприпустимо тендітним. Проте, кооперативна багатозадачність дозволяє набагато простішу реалізацію додатків, оскільки їх виконання ніколи не може бути несподівано перерваним процесорним планувальником. Наприклад, різні функції всередині програми не повинні бути повторно використовними.[1][2]

На відміну від цього, витискальна багатозадачність перериває додатки та передає управління іншим процесам поза контролем додатка.

Див. також[ред. | ред. код]

Примітки[ред. | ред. код]

  1. а б в Definition of non-preemptive multitasking. pcmag.com. Архів оригіналу за 25 травня 2016. Процитовано 2015-08-15.mdy.2024.
  2. а б Joe Bartel (2011-11-05.mdy.2024). Non-Preemptive Multitasking (PDF). classiccmp.org. Архів оригіналу (PDF) за 19 серпня 2019. Процитовано 2015-08-15.mdy.2024.
  3. Preemptive multitasking. riscos.info. 2009-11-02.mdy.2024. Архів оригіналу за 2 червня 2016. Процитовано 2015-08-15.mdy.2024.