типи переривань

3. Рестарт команди

4. Обробка переривань в персональній ЕОМ

5. Механізми передачі управління обробникам

6. Захист в процедурах переривань.

Альтернатива опитуванням, застосовувана практично у всіх сучасних процесорах, називається перериваннями (interrupt). і полягає в значному ускладненні логіки обробки команд процесором.


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

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

Механізм переривання забезпечується відповідними апаратно-програмними засобами комп'ютера.

Будь-яка особлива ситуація, що викликає переривання. супроводжується сигналом, званим запитом переривання (ЗП). ^ Запити переривань від зовнішніх пристроїв надходять в процесор по спеціальних лініях, а запити. що виникають в процесі виконання програми, надходять безпосередньо зсередини мікропроцесора. Механізми обробки переривань обох типів однакові. Розглянемо функціонування комп'ютера при появі сигналу запиту переривання. спираючись в основному на обробку апаратних переривань (рис. 1.1).

типи переривань


Мал. 1.1. Виконання переривання в комп'ютері: tр - час реакції процесора на запит переривання; tс - час збереження стану переривається програми і виклику обробника переривання; tв - час відновлення перерваної програми

Після появи сигналу запиту переривання ЕОМ переходить до виконання програми - обробника переривання. Оброблювач виконує ті дії, які необхідні в зв'язку з виниклою особливої ​​ситуацією. Наприклад, такою ситуацією може бути натискання клавіші на клавіатурі комп'ютера. Тоді обробник повинен передати код натиснутоюклавіші з контролера клавіатури в процесор і, можливо, проаналізувати цей код. Після закінчення роботи обробника управління передається перерваної програми.

Час реакції - це час між появою сигналу запиту переривання і початком виконання перериває програми (обробника переривання) в тому випадку, якщо дане переривання дозволено до обслуговування.

^ Час реакції залежить від моменту, коли процесор визначає факт наявності запиту переривання. Опитування запитів переривань може проводитися або по закінченні виконання чергового етапу команди (наприклад, зчитування команди, зчитування першого операнда і т.д.), або після завершення кожної команди програми.

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

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

^ Час реакції визначається для запиту з найвищим пріоритетом.

Глибина переривання - максимальне число програм, які можуть переривати один одного. Глибина переривання зазвичай збігається з числом рівнів пріоритетів. розпізнаються системою переривань. Робота системи переривань при різній глибині переривань (n) представлена ​​на рис. 1.2. Тут передбачається, що зі збільшенням номера запиту переривання збільшується його пріоритет.

типи переривань


Мал. 1.2. Робота системи переривань при різній глибині переривань

Без урахування часу реакції. а також часу запам'ятовування і часу відновлення:

пріоритезація


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

Перехоплення переривання - зміна обробника переривання на свій власний.

Переривання діляться на апаратні і програмні.

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

  1. маскіруемие;

  2. немасковані; .

Маскіруемие- переривання, які можна забороняти установкою відповідних бітів у відповідному регістрі маски переривань; можуть бути замасковані програмними засобами комп'ютера;

Масковані переривання викликаються переходом в високий рівень сиг-налу на вході INTR (Interrupt Request) при встановленому прапорі дозволу (IF = 1). У цьому випадку процесор зберігає в стеку регістр прапорів, сбраси-кість прапор IF і виробляє два наступних один за одним (back to back) циклу підтвердження переривання, в яких генеруються керуючі сиг-нали INTA # (Interrupt Acknowledge). Високий рівень сигналу INTR повинен зберігатися принаймні до підтвердження переривання. Перший цикл підтвердження холостий, по другому імпульсу зовнішній контролер прерива-ний передає по шині номер вектора, який обслуговує даний тип апарат-ного переривання. Переривання з отриманим номером вектора виконується процесором так само, як і програмне. Обробка поточного переривання може бути в свою чергу перервана немаскіруемое перериванням, а якщо обробник встановить прапор IF, то і іншим маскируемое апаратним перериванням.

Немасковані обробляються завжди, незалежно від значення прапора IF (в процесорах Intel), так як призначені для реакції на надважливі для обчислювальної системи події.

Немасковані переривання виконуються незалежно від стану прапора IF за сигналом NMI (Non Mascable Interrupt). Високий рівень на цьому вході ви-кличе переривання з типом (вектором) 2, яке виконується так само, як і маскируемое. Його обробка не може перериватися під дією сигналу на вході NMI до виконання команди IRET.

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

Деякими типами переривань керують прапорці IF і TF з регістра прапорів процесора, які для сприйняття умови переривання процесором повинні бути встановлені. Якщо умова для переривання задовольняється і необхідні прапорці встановлені, процесор по завершенні поточної ис-виконуваної команди реалізує послідовність переривання:

1) поточне значення регістрів FL (прапори), CS і IP включається в стек;

2) в регістри IP і CS поміщається новий вміст (ад-рес процедури переривання), яке визначається типом переривання і витягується із зумовлених осередків пам'яті, оп-чати типом переривання;

Для заборони виконання послідовності прерива-ня використовується прапорець IF, який управляється командами STI і CLI. Нульове стан прапора забороняє (маскує) переривання. Дія прапора IF поширюється на всі типи переривань, крім немаскируемого переривання (тип 2), кото-рої ініціюється сигналом, що подається на вхід процесора NMI.

Виконання послідовності переривання процесором може бути викликано двома причинами: виконанням команди програмного переривання INT або подачею сигналу переривання на вхід процесора INTR з подальшим виконанням процесором спеціального циклу шини для читання типу переривання, переданого пристроєм, що встановив сигнал INTR по лініях DO-D7 . До командам програмного переривання відносяться наступні команди: INT3, INTO і INT п, де n - тип переривання. Формати перерахованих команд приведе-ни в додатку. Кожна процедура переривання повинна за-канчівалісь командою повернення з переривання IRET, яка відновлює вміст регістрів IP, CS і FL з стека.

Мал. 4.1 Формат регістра IDTR
Таблиця переривань може містити до 256 дескрипторів. При спробі обслуговування переривання з номером, що виходять за розмір таблиці, генерітся-ється виняток #DF. Під виключення віддані перші 32 номери (0 ¸31).
Не всі з цих векторів використовуються процесором в даний час; непризначення вектори з цього діапазону резервуються для можливого використання в майбутньому. Використовувати не призначені вектори не слід.

Вектори маскуються переривань визначаються апаратно. Контролери зовнішніх переривань (наприклад, Intel 8259, програмований контролер переривань) передають вектор на шину процесора під час циклу квітірованія переривання. Використовуватися можуть будь-які вектори в діапазоні значень від 32 до 255. У реальному режимі діапазон номерів для обробки апаратних переривань перебував: IRQ0¸IRQ7 номера переривань 08h¸0Fh і IRQ8¸IRQ15 - 70h¸77h. У зв'язку з тим, що, як зазначалося вище, перші 32 номери зайняті під виключення, виникає необхідність перепрограмувати контролер переривань на інші номери. Початковим програмування контролера для реального режиму займається BIOS. Разом в захищеному режимі залишається 208 номерів під програмні переривання.
^

Обробка переривань в персональній ЕОМ


Мікропроцесори типу х86 мають два входи запитів зовнішніх апаратних переривань:

  • NMI - немаскируемое переривання. використовується зазвичай для запитів переривань по порушенню харчування;

  • INT - маскируемое переривання. запит від якого можна програмним чином замаскувати шляхом скидання прапора IF в регістрі прапорів.

типи переривань


Мал. 1.4. Структура контролера пріоритетних переривань

типи переривань


Мал. 1.5. Структура таблиці векторів переривань

Звернення до елементів таблиці здійснюється по 8-розрядному коду - типу переривання (табл. 1.1).


Різні джерела задають тип переривання по-різному:

  • програмні переривання вводять його зсередини процесора або містять його в номері команди INT n;

  • апаратні маскіруемие переривання вводять його від контролера пріоритетних переривань по шині даних;

  • немаскіруемое апаратного переривання призначений тип 2.

Механізми передачі управління обробникам переривань.
Дескрипторній таблиці переривань (IDT) містить шлюзи (рис 4.2).

Мал. 4.2 Формат шлюзу IDT
Поле «TYPE» в байті доступу визначає тип шлюзу:


  • 4 - шлюз виклику 80286 (Call Gate);

  • 5 - шлюз завдання 80286 (Task Gate);

  • 6 - шлюз переривання 80286 (Interrupt Gate);

  • 7 - шлюз пастки 80286 (Trap Gate);

  • C - шлюз виклику 386 (Call Gate);

  • D - шлюз завдання 386 (Task Gate);

  • Е - шлюз переривання 386 (Interrupt Gate);

  • F - шлюз пастки 386 (Trap Gate).

Схожі статті