Тема обробка переривань

Поняття переривання. Послідовність дій при обробці переривань. Класи переривань. Робоча область переривань. Вектор переривання. Стандартні програми обробки переривань. Пріоритети переривань. Вкладені переривання.

Переривання, їх призначення та типи. механізм переривань

Постановка проблемної ситуації (Якщо відключили електрику, то якого виду відбудеться переривання?)

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

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

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

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

Механізм обробки переривань незалежно від архітектури обчислювальної системи включає наступні елементи Механізму обробки переривань:

1. Встановлення факту переривання (прийом сигналу на переривання) і иденти-фикация переривання (в операційних системах іноді здійснюється по-повторних, на кроці 4).

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

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

6. Відновлення інформації, що відноситься до перерваного процесу (етап, зворотний кроку 4).

7. Повернення в перервану програму.

Кроки 1-3 реалізуються апаратно, а кроки 4-7 - програмно.

Отже, головні функції механізму переривань:

розпізнавання або класифікація переривань;

передача управління відповідно оброблювачу переривань;

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

Стек - середовище для розміщення даних для повернення з підпрограм, а так само їх аргументи і автоматичні дані.

Фраза «За принципом стека» означає: останнім прийшов, першим обслужений або першим прийшов, останнім обслужений.

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

Тема обробка переривань

Мал. 3. Обробка переривання

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

Зовнішні переривання викликаються асинхронними подіями, які происхо-дять поза переривається процесу, наприклад:

переривання від таймера;

переривання від зовнішніх пристроїв (переривання по вводу / виводу);

переривання по порушенню харчування;

переривання з пульта оператора обчислювальної системи;

переривання від іншого процесора або іншої обчислювальної системи.

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

при наявності в поле коду операції незадіяною двійковій комбінації;

при розподілі на нуль;

при переповненні або зникненні порядку;

при виявленні помилок парності, помилок у роботі різних пристроїв апаратури засобами контролю.

Супервизор. - це супервизор операційної системи - її центральний керуючий моду-ль

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

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

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

Диспетчеризація і пріоретізаціі переривань в ОС

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

Тема обробка переривань

Мал. 4. Розподіл переривань по рівнях пріоритету

Наявність сигналу переривання не обов'язково повинно викликати переривання що виконується програми.

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

Програмне управління спеціальними регістрами маски (маскування сиг-лів переривання) дозволяє реалізувати різні дисципліни обслужива-ня:

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

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

за принципом стека, або, як іноді кажуть, по дісціплінеLCFS (lastcomeferstserved) - останнім прийшов - першим обслужений.

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

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

Процесор -> Шина -> Зовнішній пристрій.

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

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