Page 32 - 6111
P. 32
Поняття divemptive і non-divemptive іноді ототожнюються з
поняттями пріоритетних і непріорітетних дисциплін, що зовсім
невірно, а також з поняттями абсолютних і відносних пріоритетів,
що невірно частково. Витісняюча і невитісняюча багатозадачність -
це більш широкі поняття, ніж типи пріоритетності. Пріоритети
задач можуть як використовуватися, так і не використовуватися і
при витісняючому, і при невитісняючому способах планування. Так
у випадку використання пріоритетів дисципліна відносних
пріоритетів може бути віднесена до класу систем з невитісняючою
багатозадачністю, а дисципліна абсолютних пріоритетів - до класу
систем з витісняючою багатозадачністю. А непріорітетна
дисципліна планування, заснована на виділенні рівних квантів часу
для всіх задач, відноситься до витісняючих алгоритмів.
Основною відмінністю між divemptive і non-divemptive
варіантами багатозадачності є ступінь централізації механізму
планування задач. При витісняючій багатозадачності механізм
планування задач цілком зосереджений в операційній системі, і
програміст пише свій додаток, не піклуючись про те, що він буде
виконуватися паралельно з іншими завданнями. При цьому
операційна система виконує такі функції: визначає момент зняття з
виконання активної задачі, запам’ятовує її контекст, вибирає з
черги готових задач наступну і запускає її на виконання,
завантажуючи її контекст.
При невитісняючій багатозадачності механізм планування
розподілений між системою і прикладними програмами. Прикладна
програма, отримавши управління від операційної системи, сама
визначає момент завершення своєї чергової ітерації і передає
керування ОС за допомогою якого-небудь системного виклику, а
ОС формує черги задач і вибирає відповідно до деякого алгоритму
(наприклад, з урахуванням пріоритетів) наступну задачу на
виконання. Такий механізм створює проблеми як для користувачів,
так і для розробників. Для користувачів це означає, що управління
системою губиться на довільний період часу, який визначається
додатком (а не користувачем). Якщо програма витрачає занадто
багато часу на виконання якої-небудь роботи, наприклад, на
форматування диска, користувач не може переключитися з цього
завдання на інше завдання, наприклад, на текстовий редактор, в той
час як форматування тривало б у фоновому режимі. Ця ситуація
небажана, оскільки користувачі зазвичай не хочуть довго чекати,
коли машина завершить своє завдання. Тому розробники додатків
для non-divemptive операційного середовища, покладаючи на себе
функції планувальника, повинні створювати додатки так, щоб вони
виконували свої завдання невеликими частинами. Наприклад,
31