Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Самостійні архітектура.doc
Скачиваний:
12
Добавлен:
10.11.2019
Размер:
4.33 Mб
Скачать

20.Організація переходу до перериваючої програми та пріоритетне обслуговування запитів переривання

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

Головне місце в процедурі переходу до перериваючої програми займає передача з відповідного регістра (регіс­трів) процесора в пам'ять (зокрема, в стек) на збереження поточного вектора стану програми, що переривається (щоб можна було повернутись до її виконання), та завантаження в регістр (регістри) процесора вектора переривання пере­риваючої програми, до якої при цьому переходить керування процесором. Процедура організації переходу до перериваючої програми включає в себе виділення із виставлених запитів такого, який має найбільший пріоритет. Розрізняють абсолютний та відносний пріоритети. Запит, що має абсолютний пріоритет, перериває виконувану програму та ініціює виконання відповідної перериваючої програми. Запит з відносним пріоритетом є першим кандидатом на обслуго­вування після завершення виконання поточної програми. Якщо найбільш пріоритетний з виставлених запитів пере­ривання не перевищує за рівнем пріоритету виконувану процесором програму, то запит переривання ігнорується або його обслуговування відкладається до завершення виконання поточної програми.

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

Програмно-керований пріоритет перериваючих програм

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

В ЕОМ широко застосовуються два способи реалізації програмно керованого пріоритету перериваючих програм, в яких використовуються відповідно поріг переривання (в малих та мікро-ЕОМ) та маски переривання (в ЕОМ загального призначення).

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

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

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