Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПОС_Конспект.doc
Скачиваний:
39
Добавлен:
02.05.2019
Размер:
1.13 Mб
Скачать

4. 3 Стратегії планування. Витісняльна і невитісняльна багатозадачність

Перед тим, як розглянути основні стратегії планування, перелічимо варіанти передачі керування від одного потоку до іншого:

  • після того, як потік перейшов у стан очікування (напрклад, під час введення-виведення або приєднання);

  • після закінчення виконання потоку;

  • явно (потік сам віддає процесор іншим потокам на час, поки він не зайнятий корисною роботою);

  • за перериванням (наприклад, переривання від таймера дає змогоу перервати потік, що виконується довше, ніж йому дозволено).

Останній варіант відрізняється від інших тим, що потік не може контролювати, коли настане час передачі керування, за це відповідає планувальник операційної системи. Залежно від такого варіанта передачі керування розрізняють дві основні стратегії планування потоків – витісняльну і невитісняльну багатозадачність.

При витісняльній багатозадачності (preemptive multitasking) потоки, що що логічно мають виконуватись, можуть бути тимчасово перервані планувальникомОС без їхньої участі для передачі керування іншим потокам. Переривання виконання потоку і передача керування іншому потокові найчастіше здійснюється в обробнику переривання від системного таймера. Така стратегія реалізована в усіх сучасних ОС.

При невитісняльній багатозадачності (non=preemptive multitasking) потоки можуть виконуватися упродовж необмеженого часу й не можуть бути перервані ОС. Для невитісняльної багатозадачності передача керування за останнім варіантом не реалізована, і потоки самі повинні віддавати керування ОС для передачі іншим потокам або, принаймні, переходити у стан очікування. Якщо якийсь поток забуде або не зможе це зробити, наприклад, займе процесор нескінченим циклом, інші потоки не зможуть продовжквати свою роботу. Таку стратегію було реалізовано у ОС Nowell Net Ware.

Природно, що реалізація невитісняльної багатозадачності в загальному випадку робить систему досить нестабільною (будь-яке некоректно написане застосування користувача може спричинити “завісання” всієї системи). Практика показує, що невитісняльна багатозадачність у системах із застосуваннями користувача не може бути реалізована. Таку стратегію, проте, можна використати в системах, де всі застосування виконуються в режимі ядра і фактично єсистемними драйверами. Для розробки таких застосувань необхідна висока кваліфікація програмістів, вимоги до надійності застосувань можна порівняти з вимогами до самої ОС. При цьоиу простота реалізації та відсутність зовнішніх переривань потоків від планувальника ОС може підвищити продуктивність системи для обмеженого кола задач (наприклад, у випадку ОС Net Ware це було використання системи як файлового серверу).

4. 4 Алгоритми планування

Алгоритм планування дає змогу короткотерміновому планувальникові вибирати з готових до виконання потоків той, котрий потрібно виконувати наступним. Можна сказати, що алгоритми планування реалізують політику планування.

Залежно від стратегії планування, яку реалізують алгоритми, їх поділяють на витісняльні і невитісняльні. Витісняльні алгоритми переривають потоки під час їхнього виконання, невитісняльні – не переривають. Деякі алгоритми відповідають лише одній із цих стратегій, інші можуть мати як витісняльний, так і невитісняльний варіанти реалізації.