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

1.3.4. Організація повернення до перерваної програми

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

В основну інформацію можна включити:

  • уміст лічильника адреси команд, тобто адреса першої невиконаної команди перерваної програми;

  • тригер стану системи: "робоче" чи стан "чекання";

  • маска переривання, установлювана кожною новою програмою;

  • код переривання – двоичное число, окреме для кожного рівня, що поєднує переривання від декількох джерел, по якому програма, що перериває, пізнає конкретне джерело переривання.

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

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

Зауваження. У період збереження і відновлення ССП переривання будь-якого рівня заборонені.

До додаткової інформації відносять уміст:

  • арифметичних регістрів;

  • індексних регістрів;

  • інших програмно-доступних регістрів, загальних для всіх програм, і т.п..

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

1.3.5. Особливості системи переривання в сучасних еом

Найбільше поширення в комп'ютерах одержали шість рівнів переривання:

  • уведення-висновок;

  • звертання до супервізора;

  • програмний збій;

  • зовнішні переривання;

  • переривання повторного пуску;

  • переривання від схем контролю.

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

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

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

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

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

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

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

Кожному рівню переривань відповідають два ССП: нове і старе, котрі зберігаються в спеціальних полях реальної пам'яті. Загальне призначення ССП – керування послідовністю вибірки команд, запам'ятовування й ідентифікація поточного стану апаратних засобів щодо програми, виконуваної у фіксований момент часу, і деякі інші функції. Якщо ми бажаємо частково змінити стан процесора, то необхідно завантажувати тільки необхідну частину нового ССП. Однак при перериваннях будь-якого рівня відбувається повна зміна вмісту старого ССП на нове, котре стає поточним. Якщо наприкінці програми, який було передане керування по перериванню, коштує команда ВОССТАНОВИТЬ СТАРЕ ССП, то процесор відновлює стан, що передує перериванню, і перервана програма продовжує своє виконання.

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

Загальна схема обробки переривань дана на рис. 6.5.

Порядок пріоритету може бути змінений програмним шляхом через зміну маски переривання. Найчастіше стан "1" розряду маски дозволяє переривання даного рівня, а в стані "0" забороняє переривання.

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