Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція № 5_МЗКІТ (10 ТП).docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
4 Мб
Скачать
☆

4.6.2. Програмний інтерфейс планування

Розглянемо функції Win32 АРІ, за допомогою яких можна працювати із класами пріоритетів процесів і відносних пріоритетів потоків.

Для зміни класу пріоритету процесу використовують функцію SetPriority- Class(), для визначення поточного класу пріоритету — функцію GetPriorityClass( ):

BOOL SetPriorityClass(HANDLE ph. DWORD pclass);

DWORD GetPriorityClass(HANDLE ph);

Параметр ph визначає дескриптор процесу, для якого задають клас пріоритету, а параметр pclass — клас пріоритету. Можливі такі значення pclass:

♦ REALTIME_PRIORITY_CLASS (реального часу);

♦ HIGH_PRIORITY_CLASS (високий);

♦ N0RMAL_PRIORITY CLASS (нормальний);

♦ IDLE_PRIORITY_CLASS (невикористовуваний).

Розглянемо приклад використання цих функцій:

Щоб задати відносний пріоритет потоку, використовують функцію SetTnread- Priority( ), а щоб задати його значення — GetThreadPriorlty( ).

Параметр th є дескриптором потоку, параметр priority (і повернуте GetThread- Priority( )) може набувати одного з таких значень:

♦ THREAD_PRIORITY_TIME_CRIТICAL (критичний за часом);

♦ THREAD_PRIORITY HIGHEST (найвищий);

♦ THREAD_PRIORITY_ABOVE_NORMAL (вищий за нормальний);

♦ THREAD_PRIORITY_NORMAL (нормальний);

♦ THREAD__PRI0RITY_BE10W_N0RMAL (нижчий за нормальний);

♦ THREAD_PRIORITY_LOWEST (найнижчий);

♦ THREAD_PRIORITY_IDLE (невикористовуваний).

Розглянемо приклад використання цих функцій.

У даному прикладі ми створюємо потік у призупиненому стані, задаємо його пріоритет, а потім поновлюємо його виконання. Для цього використана функція ResumeThread( ), що параметром приймає дескриптор потоку.

Висновки

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

♦ Розрізняють довготермінове, середньотермінове й короткотермінове планування. Найважливіший тут короткотерміновий планувальник, котрий використовують для прийняття рішення про те, який потік запустити на виконання в певний момент. До основних алгоритмів короткотермінового планування належать планування кругове і з пріоритетами.

Контрольні запитання та завдання

1. Процес виконується в нескінченному циклі. За допомогою якого апаратного пристрою операційна система може перехопити керування в цього процесу? Опишіть особливості використання такого пристрою.

2. Наведіть приклади програм, під час виконання яких не буде жодних проблем в ОС із витісняльною багатозадачністю, але виникнуть блокування системи в ОС із невитісняльною багатозадачністю.

3. Задано послідовність потоків (табл. 4.1):

В комірках табл. 4.2 відобразіть, який із потоків буде займати процесор у фіксований момент часу в разі використання алгоритмів планування FIFO, RR (кругового), STCF, SRTCF і PS (з пріоритетами).

Пріоритет 4 є найвищим.

4. Для даних попередньої задачі обчисліть час відгуку і час до завершення кожного потоку в разі використання всіх алгоритмів планування. Обчисліть також середній час відгуку і поясніть одержані результати.

5. Як зміниться завантаження пристроїв введення-виведення із зменшенням довжини кванта у разі кругового планування? Чи збільшиться в цьому випадку час виконання окремих задач?

6. Порівняйте продуктивності алгоритмів багаторівневих черг зі зворотним зв’язком і SRTCF для потоків, обмежених введенням-виведенням.

7. Опишіть, яким чином багаторівневі черги зі зворотним зв’язком відокремлюють потоки, обмежені процесором, від потоків, обмежених введенням-виведенням.

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

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

б) скільки квитків треба надати потоку при його створенні?

9. Деякі алгоритми планування при певних значеннях параметрів можуть емулювати один одного. Оцініть можливість прямої і зворотної емуляції таких пар алгоритмів:

а) STCF і планування з пріоритетами;

б) FIFO і планування з пріоритетами;

в) FIFO і багаторівневих черг зі зворотним зв’язком;

г) STCF і кругового планування.

10. Проаналізуйте, як будуть поводитися застосування, розроблені для розв’язання завдання 10 з лекції №4, якщо в їхньому коді змінювати пріоритети потоків T i t.

ЧАСТИНА 2

Взаємодія потоків

♦ Принципи та проблеми взаємодії потоків

♦ Задачі синхронізації

♦ Механізми синхронізації: семафори, м’ютекси та умовні змінні

♦ Взаємодія потоків у Linux

♦ Взаємодія потоків у Windows ХР

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