Page 32 - 6111
P. 32

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