Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ_Арх.doc
Скачиваний:
44
Добавлен:
20.02.2016
Размер:
1.27 Mб
Скачать

Лабораторна робота № 12 Тема: Класи переривань

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

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

    • Переривання таймера. Генеруються таймером, що організаційно входить до складу процесора. Ці переривання використовуються операційною системою для виконання деяких регулярних операцій.

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

    • Аварійні переривання. Генеруються спеціальними засобами контролю працездатності апаратури при виявленні збоїв, зокрема відключення живлення або помилки контролю пам'яті по парності.

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

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

На мал. 7.3,а цей спосіб обміну з низькошвидкістним пристроєм вводу-виводу представлений схематично. Користувальницька програма являє собою послідовність фрагментів обробки даних (на схемі — 1, 2 і 3), що переривається викликами підпрограми WRITE, що виконує пересилання масивів даних на пристрій вводу-виводу. Цю підпрограму можна умовно розділити на три частини.

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

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

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

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

Фаза переривання основного циклу

Якщо в комп'ютері мається механізм роботи з перериваннями, можна так організувати обчислювальний процес, що процесор не буде простоювати під час виконання операцій вводу-виводу. Розглянемо потік керування, представлений на діаграмі мал. 7.3,6. Перший фрагмент програми в цьому випадку виконується точно так само, як і в попередньому. Далі програма знову викликає підпрограму WRITE, але сама ця підпрограма складається тільки з фрагмента підготовки і власне команди запуску сеансу обміну. Підпрограма завершує свою роботу і повертає керування основній програмі, як тільки відправить на зовнішній пристрій команду запуску сеансу. Сам же пристрій, одержавши необхідні дані і команду, приступає до самостійної роботи, зчитуючи дані з пам'яті і виводячи їх на печатку. Таким чином, операції виводу-вводу-виводу й обробки інформації з’єднуються.

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

Що стосується користувальницької програми, сам термін "переривання" відноситься до нормального ходу виконання її команд, що переривається. Коли обробка переривання завершується, природна послідовність виконання команд програми відновлюється (мал. 7.4). Отже, користувальницька програма не має потреби в спеціальному коді, що буде зайнятий роботою з перериваннями — усі турботи по припиненню виконання користувальницької програми і поновленню її після завершення обробки переривання беруть на себе процесор і операційна система.

Контрольні питання:

  1. Класи переривань, їх характеристика.

  2. Реалізація виводу на печать з перериванням.