Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Поняття про переривання процесора та їх обробка. Використання таблиці векторів переривань.




При виникненні переривань виконання поточної програми припиняється і керування передається спеціальній програмі. Основне призначення таких процедур виконувати допоміжні технологічні і сервісні функції. Їх можна розглядати як спеціальні процедури з викликом через фіксовану область пам'яті де зберігається їхня адреса (таблиця векторів переривань) і з обов'язковим поверненням в перервану програму, у такий спосіб ці процедури можуть бути викликані з будь-якої програми. Переривання широко використовуються для ефективної організації обчислювального процесу і взаємодії з зовнішнім середовищем. Розрізняють програмні та апаратні переривання іноді виділяють так звані “отладочные” переривання. Апаратні переривання можуть бути зовнішніми і внутрішніми. Зовнішні переривання можуть визиватися сигналами таймера або інших пристроїв(натискання клавіш на клавіатурі). Внутрішні переривання можуть бути ініціалізоваці самим процессором при спробі виконати ділення на нуль. “Отладочные” переривання – якщо встановлено прапорець TF покрокової роботи, процессор автоматично генерує переривання після виконання кожной команди. В ассемблері є спеціальні команди програмного виклику переривання, так якщо б в даний момент виникло апаратне переривання- це програмні переривання.

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

Формат команди переривання.

INT <номер переривання>

INTO <переривання по переповненню>

Для повернення з процедури обробки переривання в перервану програму існує спеціальна команда повернення IRET. Цією командою процедура обробки переривання закінчує свою роботу.

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

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

1) В стек перерваної програми зберігається вектор перерваного процесса(стан регістрів прапірців та повна адреса повернення в перервану програму)

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

Таблиця векторів переривань розміщується в початковій області оперативної пам’яті і має об’єм 1кб. Таблиця містить адреси процедур обробки переривань, які називаються векторами переривань. Адреса в таблиці переривань обчислюється як 4*n, де n

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

3) З таблиці отримується шукана адреса переривання і завантажується в регістри IP i CS, таким чином здійснюється передача управління на процедуру обробки переривань.

Повернення в перервану програму виконується по команді IRET.

По цій команді із стеку виймається вектор перерваного процесу і завантажується відповідно в регістри IP, CS, FLAG. Так управління передається в ту точку програми де вона була перервана.

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

Масковані та не масковані переривання.

Програми можуть заборонити переривання ці переривання називаються маскованими бо їх можно заборонити та дозволити. Процессор реагує на переривання якщо IF=1, якщо IF=0, то переривання заборонені. Заборонити або дозволити всі масковані переривання можна змінюючи стан прапорця IF. Для цього існують команди: STI - установка IF = 1, CLI - установка IF = 0. Крім того допускається селективне маскування апаратних переривань.

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

Процедура обробки переривань.

1) Зберігається стан регістрів на початку процедури, після чого, командою STI дозволяється переривання, тобто встановлюється IF=1. При виклику переривання автоматично завершується апаратне переривання, а при поверненні з переривання автоматично дозволяються. Потрібно уникати відключення переривань на довгий час.

2) Тіло процедури (команди, які реалізують дії повязані з даним запросом на переривання)

3) Забороняються переривання до виходу з процедури (Командою CLI встановлюємо IF=0)

4) Відновлюємо стан всіх регістрів

5) Вихід з процедури по команді IRET

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

Структура процедури обробки переривань і її звязок з іншими програмами визначається рядом факторів:

1) типом переривання

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

3) Вектор переривання вільний чи використовується системою

4) У випадку зчеплення з системним оброблювачем переривань, які узгодження про звязки з ним., чи здійснюється виклик прикладного обробника до або після системного

5) Алгоритм функціонування визначається призначенням процедури обробки переривань

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

Якщо процедура обробки переривань – самостійна програма, то вона повинна бути резидентною.

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

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...