Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мороз-відповіді.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
694.33 Кб
Скачать

44. Планування завантаження процесорів за принципом „найкоротше завдання-перший”.

Планування за принципом SIF (“найкоротше завдання - перший”)

Планування без переключень застосовується перш за все для планування пакетних завдань. Воно забезпечує мінімальний середній час очікування для завдань, але для тривалих завдань час очікування може виявитись великим.

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

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

Можна “консервувати” процеси. Не застосовується в системах розподілу часу, де необхідно гарантувати можливий час відповіді.

45. Планування завантаження процесорів за „найменшим часом, що залишився”.

Принцип SRT (“за найменшим часом, що залишається”)

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

46. Планування процесорів із використанням багаторівневих черг зі зворотними зв’язками.

Алгоритм багаторівневих черг зі зворотним зв'язком (multilevelfeedbackqueues) є найуніверсальнішим алгоритмом планування (за допомогою налаштування параметрів його можна звести майже до будь-якого іншого алгоритму), але при цьому одним із найскладніших у реалізації.

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

Відмінності між двома алгоритмами полягають у тому, що:

• потокам дозволено переходити з рівня на рівень (із черги в чергу);

• потоки в одній черзі об'єднуються не за пріоритетом, а за довжиною інтервалу використання процесора, потоки із коротшим інтервалом перебувають у черзі з більшим пріоритетом.

Усередині всіх черг, крім найнижчої, використовують кругове планування (у найнижчій

працює FIFO-алгоритм). Різні черги відповідають різній довжині кванта часу — що вищий пріоритет, то коротший квант (звичайно довжина кванта для сусідніх черг зменшується удвічі). Якщо потік вичерпав свій квант часу, він переміщається у хвіст черги із нижчим пріоритетом (і з довшим квантом). У результаті потоки з коротшими інтервалами (наприклад, обмежені введенням-виведенням) залишаються з високим пріоритетом, а потоки з довшими інтервалами подовжують свій квант часу (рис. 4.4). Можна також автоматично переміщати потоки, які давно не отримували керування, із черги нижнього рівня на рівень вище.

Рис. 4.4. Багаторівневі черги зі зворотним зв'язком

47. Витісняючі та невитісняючі алгоритми планування процесів.

Існує два основні типи процедур планування процесів — витісняючі (preemptive) та невитісняючі (non-preemptive — cooperative).

Non-preemptivemultitasking — невитісняюча багатозадачність — це спосіб планування

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

Preemptivemultitasking — витісняючи багатозадачність — це такий спосіб, при якому рішення про переключання процесора з виконання одного процесу на виконання іншого процесу приймається планувальником ОС, а не самою активною задачею.

Типи багатозадачності — це більш широкі поняття ніж типи пріоритетності. Пріоритети задач можуть використовуватись або не використовуватись, як при витісняючих так і невитісняючих способах планування.

Основна відмінність між preemptive та non-preemptive — це ступінь централізації механізму планування задач.

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

1. Визначає час, коли знімається з виконання активна задача.

2. Запам’ятовує її контекст.

3. Вибирає з черги готових задач наступну.

4. Запускає вибрану задачу на виконання, завантажуючи її контекст.

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

Програміст повинен забезпечити „дружнє” відношення своєї програми до інших, що виконуються одночасно. Тобто досить часто віддаючи їм керування.

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

Файл-сервер NetWare — висока швидкість виконання файлових операцій. Менш ефективно в ОС Windows 3.ХХ

Але зараз практично в усіх ОС-preemptive — (UNIXWindowsNT/95/98, OS/2). Можливо, саме тому витісняючу багатозадачність часто називають істинною, справжньою багатозадачністю.