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

1.3.3. Пріоритетне обслуговування переривань

Апарат пріоритетів призначений для підвищення ефективності використання всіх ресурсів ВР. Так, неефективно одночасне виконання двох завдань, кожне з який вимагає великого завантаження пристроїв введення-висновку і незначно використовує центральний процесор. Пріоритет завдання може призначатися виходячи з: часу його виконання ("короткі" завдання мають більш високий пріоритет у порівнянні з "довгими" завданнями); обсягу використовуваної оперативної пам'яті (завдання, що вимагають великого обсягу пам'яті, не повинні мати однаковий пріоритет); інтенсивності й обсягу використання інших ресурсів ВР; терміновості виконання і т.д..

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

Поняття пріоритету в перериванні програм має два змісти. Припустимо, що ніяких обмежень на час надходження запитів переривання не накладається. При одночасному надходженні декількох запитів для негайного задоволення може бути прийнятий тільки один. Цей тип пріоритету, що визначає черговість розгляду запитів переривання, називають пріоритетом між запитами переривань. Програми, що переривають, однак, можуть мати щодо поточної програми різний ступінь важливості, і не будь-яким запитом може бути перервана програма, що виконується. Щоб мати можливість перервати поточну програму, прийнятий СПП запит повинний відповідати програмі більш важливої, ніж виконувана в даний момент. Цей тип пріоритету визначає старшинство програм і його звичайно називають пріоритетом між програмами, що переривають.

У випадку найпростішої апаратної реалізації пріоритету між запитами переривання може бути використаний метод "послідовного пошуку" (рис. 6.4).

Суть методу складається в послідовній зміні вмісту лічильника від 0 до 2n – 1 і перегляді всіх 2n рівнів переривання до збігу вмісту лічильника з номером рівня.

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

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

Приклад. Нехай одночасно виникли три запити, що відповідають трьом рівням переривання – № 1, № 2, № 3. Нехай по пріоритеті перевага віддається запиту з меншим номером. Припустимо, що пріоритет між програмами, що переривають, відповідним зазначеним рівням, встановлений у зворотному порядку. Тоді відповідно до пріоритетів між запитами спочатку процесор приступає до виконання програми № 1, але, як тільки пошук запитів переривання відновиться, запит № 2 перерве виконання програми № 1 і запустить програму № 2. Аналогічно остання перерветься програмою № 3, що і виконується першої.

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

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

Маска переривання. Маска - шаблонова послідовність знаків, що керує чи збереженням виключенням окремих частин іншої послідовності знаків. У найпростішому виді маска – це двоичное число, кожен розряд якого відповідає одному з рівнів переривання і дозволяє (наприклад, стан "1") чи забороняє (стан "0") переривання від запитів, що відносяться до даного рівня. Керування пріоритетом знаходиться цілком у розпорядженні програми. Для кожної програми, що перериває, може бути установлена своя маска, що вказує, які програми здатні її переривати. Кожен розряд маски відповідає окремій програмі. Маски всіх програм зберігаються в пам'яті. Якщо яка-небудь програма викликається для виконання, то її маска засилається в регістр маски. Фізично маска реалізується звичайно у виді триггерного регістра, стан якого можна змінити програмним шляхом. При формуванні маски стан "1" одержують лише ті тригери, що відповідають програмам з більш високим, чим у даної програми, пріоритетом.

У принципі нулі й одиниці в масці можуть чергуватися в довільному порядку, однак відсутність упорядкованості спричиняє додаткові труднощі:

  • визначення пріоритету відповідної програми;

  • обхід ситуації "зациклення пріоритетів".

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

Іноді створюються "групові" маски, при яких кожен розряд впливає на кілька рівнів одночасно. Рівні переривань, що керуються одним розрядом маски переривання, утворять "клас переривання". Вищим ступенем цієї ієрархії є головний тригер переривання, що виключає (чи включає) усю СПП цілком.

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