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

4. 4. 3 Планування із приоритетами

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

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

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

Рішення про вибір потоку для виконання приймають таким чином:

  • якщо в черзі потоків із найвищим пріоритетом є потоки, для них слід використати простіший алгоритм планування (наприклад, кругового планування), не звертаючи уваги на потоки в інших чергах;

  • якщо в черзі немає жодного потоку, переходять до черги потоків з нижчим пріоритетом іт. д.

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

Розподіл пріоритетів є складним завданням, невдале його розв’язання може призвести до того, що потоки процесів із низьким пріоритетом чекатимуть дуже довго. Наприклад, у 1973 році в Масачусетському технологічному інституті була зупинена машина, на якій знайшли процес із низьким пріоритетом – він був поставлений у чергу на виконання в 1967 році і з того часу так і не зміг запуститися. Таку ситуацію називають голодуванням (starvation).

Є різні способи розв’язання проблеми голодування. Наприклад, планувальник може поступово зменшувати пріоритет потоку, який виконують (такий процес називають старінням), і коли він стане нижче, ніж у наступного за пріоритетом потоку, перемкнути контекст на цей потік. Можна, навпаки, поступово підвищувати пріоритети потоків, які очікують.

4. 4. 4 Планування на підставі характеристик подальшого виконання

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

Насамперед слід відзначити алгоритм “перший – із найкоротшим часом виконання” (Shortest Time to Completition First, STCF), коли з кожним потоком пов’язують тривалість наступного інтервалу використання ним процесора і для виконання щоразу вибирають той потік, у якого цей інтервал найкоротший. У результаті потоки, що захоплюють процесор на коротший час, отримують під час планування перевагу і швидше виходять із системи.

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

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

tn+1=aTn+(1-a)tn, 0<a<1, t0=T0,

где tn+1 – оцінка довжини інтервалу;

tn – оцінка довжини попереднього інтервалу;

Tn – справжня довжина попереднього інтервалу.

Найчастіше використовують значення a=0,5, у цьому разі перерахування оцінки достатньо обчислити середнє між попередньою оцінкою і реальним значенням інтервалу.

Витісняльним аналогом STCF є алгоритм “перший – із найкоротшим часом виконання, що залишився” (Shortest Remainig time to completition first, SRTCF). Його відмінність від STCF полягає в тому, що, коли в чергу готових потоків додають новий , у якого наступний інтервал використання процесор коротший, ніж час, що залишився до завершення виконання поточного потоку, поточний потік переривається, і на його місце стає новий потік.