Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Структура обчислювальної системи.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
2.6 Mб
Скачать

Гарантоване планування

При інтерактивній роботі N користувачів в обчислювальній системі можна застосувати алгоритм планування, який гарантує, що кожен з користувачів матиме в своєму розпорядженні ~1/N частина процесорного часу. Пронумеруємо всіх користувачів від 1 до N. Для кожного користувача з номером i введемо дві величини: Ti – час знаходження користувача в системі або, іншими словами, тривалість сеансу його спілкування з машиною і (i – сумарний процесорний час вже виділений всім його процесам протягом сеансу. Справедливим для користувача було б отримання Ti/N процесорного часу. Якщо

i<<Ti/N

то i-й користувач несправедливо обділений процесорним часом. Якщо ж

i>>Ti/N

то система явно благоволить до користувача з номером i. Обчислимо для процесів кожного користувача значення коефіцієнта справедливості

iN/Ti

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

Пріоритетне планування

Алгоритмами SJF і гарантованого планування є окремі випадки пріоритетного планування. При пріоритетному плануванні кожному процесу привласнюється певне числове значення – пріоритет, відповідно до якого йому виділяється процесор. Процеси з однаковими пріоритетами плануються в порядку FCFS. Для алгоритму SJF як такий пріоритет виступає оцінка тривалості наступного CPU burst. Чим менше значення цієї оцінки, тим більше високий пріоритет має процес. Для алгоритму гарантованого планування пріоритетом служить обчислений коефіцієнт справедливості. Чим він менший, тим більше у процесу пріоритет.

Алгоритми призначення пріоритетів процесів можуть спиратися як на внутрішні параметри, пов'язані з тим, що відбувається усередині обчислювальної системи, так і на зовнішніх по відношенню до неї. До внутрішніх параметрів відносяться різні кількісні і якісні характеристики процесу такі як: обмеження за часом використання процесора, вимоги до розміру пам'яті, число відкритих файлів і використовуваних пристроїв введення-виводу, відношення середньої тривалості I/O burst до CPU burst і так далі Алгорітми SJF і гарантованого планування використовують внутрішні параметри. Як зовнішні параметри можуть виступати важливість процесу для досягнення яких-небудь цілей, вартість сплаченого процесорного часу, і інші політичні чинники. Високий зовнішній пріоритет може бути привласнений завданню лектора або того, хто заплатив $100 за роботу протягом однієї години.

Планування з використанням пріоритетів може бути таким, що як витісняє, так і не витісняє. При витісняючому плануванні процес з вищим пріоритетом, що з'явився в черзі готових процесів, витісняє процес, що виконується, з нижчим пріоритетом. У разі невитісняючого планування він просто стає в початок черги готових процесів. Давайте розглянемо приклади використання різних режимів пріоритетного планування.

Хай в чергу процесів, що знаходяться в змозі готовність, поступають ті ж процеси, що і в прикладі для витісняючого алгоритму SJF, тільки їм додатково ще привласнені пріоритети (див. таблиця 3.8). У обчислювальних системах не існує певної угоди, яке значення пріоритету – 1 або 4 вважати за пріоритетніший. Щоб уникнути плутанини, у всіх наших прикладах ми припускатимемо, що більше значення відповідає меншому пріоритету, тобто найбільш пріоритетним в нашому прикладі є процес p3, а найменш пріоритетним – процес p0.

Таблиця 3.8.

Процес

Час появи в черзі

Тривалість чергового CPU burst

Пріоритет

p0

0

6

4

p1

2

2

3

p2

6

7

2

p3

0

5

1

Як поводитимуться процеси при використанні невитісняючого пріоритетного планування? Першим для виконання у момент часу t = 0 вибирається процес p3, як що володіє найвищим пріоритетом. Після його завершення у момент часу t = 5 в черзі процесів, готових до виконання, опиняться два процеси p0 і p1. Більший пріоритет з них у процесу p1, він і почне виконуватися (див. таблиця 3.9). Потім у момент часу t = 8 для виконання буде вибраний процес p2, і лише потім – процес p0.

Таблиця 3.9.

Час

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

p0

Г

Г

Г

Г

Г

Г

Г

Г

Г

Г

Г

Г

Г

Г

І

І

І

І

І

І

p1

Г

Г

Г

І

І

p2

Г

І

І

І

І

І

І

І

p3

І

І

І

І

І

Іншим буде надання процесора процесам у разі витісняючого пріоритетного планування (див. таблиця 3.10). Першим, як і у попередньому випадку, почне виконуватися процес p3, а після його закінчення – процес p1. Проте у момент часу t = 6 він буде витиснений процесом p2 і продовжить своє виконання тільки у момент часу t = 13. Останнім, як і раніше, виконуватиметься процес p0.

Таблиця 3.10.

Час

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

p0

Г

Г

Г

Г

Г

Г

Г

Г

Г

Г

Г

Г

Г

Г

І

І

І

І

І

І

p1

Г

Г

Г

І

Г

Г

Г

Г

Г

Г

Г

І

p2

І

І

І

І

І

І

І

p3

І

І

І

І

І

У розглянутому вище прикладі пріоритети процесів з часом не змінювалися. Такі пріоритети прийнято називати статичними. Механізми статичної пріоритетності легко реалізувати, і вони зв'язані з відносно невеликими витратами на вибір найбільш пріоритетного процесу. Проте статичні пріоритети не реагують на зміни ситуації в обчислювальній системі, які можуть зробити бажаною коректування порядку виконання процесів. Гнучкішими є динамічні пріоритети процесів, що змінюють свої значення по ходу виконання процесів. Початкове значення динамічного пріоритету, привласнене процесу, діє протягом лише короткого періоду часу, після чого йому призначається нове, більш відповідне значення. Зміна динамічного пріоритету процесу є єдиною операцією над процесами, яку ми до цих пір не розглянули. Як правило, зміна пріоритету процесів проводиться погоджено із здійсненням яких-небудь інших операцій: при народженні нового процесу, при розблокуванні або блокуванні процесу, після закінчення певного кванта часу або після закінчення процесу. Прикладами алгоритмів з динамічними пріоритетами є алгоритм SJF і алгоритм гарантованого планування. Схеми з динамічною пріоритетністю набагато складніше в реалізації і пов'язані з великими витратами в порівнянні із статичними схемами. Проте їх використання припускає, що ці витрати виправдовуються поліпшенням роботи системи.

Головна проблема пріоритетного планування полягає в тому, що при неналежному виборі механізму призначення і зміни пріоритетів низькопріоритетні процеси можуть не запускатися невизначено довгий час. Зазвичай трапляється одне з двох. Або вони все ж таки чекають своєї черги на виконання (у дев'ять годинників ранку в неділю, коли всі пристойні проГісти лягають спати). Або обчислювальну систему доводиться вимикати, і вони втрачаються (при зупинці IBM 7094 в Массачусетському технологічному інституті в 1973 році були знайдені процеси, що запущені в 1967 році і жодного разу з тих пір не виконувалися). Вирішення цієї проблеми може бути досягнуте за допомогою збільшення з часом значення пріоритету процесу, що знаходиться в змозі готовність. Хай спочатку процесам привласнюються пріоритети від 128 до 255. Кожного разу після закінчення певного проміжку часу значення пріоритетів готових процесів зменшуються на 1. Процесу, що побував в змозі виконання, привласнюється первинне значення пріоритету. Навіть така груба схема гарантує, що будь-якому процесу в розумні терміни буде надано право на виконання.