запам'ятовування великого обсягу інформації про стан перерваного процесу.
5. Обробка переривання. Ця робота може бути виконана тією же підпрограмою, які було передане керування на кроці 3, але в ОС найчастіше вона реалізується шляхом наступного виклику відповідної підпрограми.
6. Відновлення інформації, що відноситься до перерваного процесу (етап, зворотний кроку 4).
7. Повернення в перервану програму.
Кроки 1-3 реалізуються апаратно, а кроки 4-7 - програмно.
На мал. 12 показано, що при виникненні запиту на переривання природний хід обчислень порушується і керування передається програмі обробки виниклого переривання. При цьому засобами апаратури зберігається (як правило, за допомогою механізмів стекової пам'яті) адреса тієї команди, з якою варто продовжити виконання перерваної програми. Після виконання програми обробки переривання керування повертається перерваній раніше програмі за допомогою занесення в покажчик команд збереженої адреси команди. Однак така схема використовується тільки в найпростіших програмних середовищах. У мультипрограмних ОС обробка переривань відбувається по більш складних схемах, про що буде більш докладно написано нижче.
Переривання
Програма обробки переривання
Рис.12 Обробка переривання
Отже, головні функції механізму переривань:
- розпізнавання класифікація переривань;
- передача керування відповідно оброблювачу переривань;
- коректне повернення до перерваної програми.
Перехід від програми, що переривається, до оброблювача і назад повинний виконуватися як можна швидше. Одним зі швидких методів є використання таблиці, що містить перелік усіх припустимих для комп'ютера переривань і адреси відповідних оброблювачів. Для коректного повернення до перерваної програми перед передачею керування оброблювачу переривань вміст регістрів процесора запам'ятовується або в пам'яті з прямим доступом, або в системному стеці - system stack.
5.1. Зовнішні та внутрішні переривання
Переривання, що виникають при роботі обчислювальної системи, можна розділити на два основні класи: зовнішні (їх іноді називають асинхронними) і внутрішні (синхронні).
Зовнішні переривання викликаються асинхронними подіями, що відбуваються поза процесом, що переривається, наприклад:
- переривання від таймера;
- переривання від зовнішніх пристроїв (переривання в/в);
- переривання від живленння;
- переривання з пульта оператора обчислювальної системи;
- переривання від іншого процесора або іншої обчислювальної системи.
Внутрішні переривання викликаються подіями, що зв'язані з роботою процесора і є синхронними з його операціями. Прикладами є наступні запити на переривання:
- при порушенні адресації (в адресній частині виконуваної команди заборона доступу до неіснуючої адреси, звертання до відсутнього сегмента на сторінці при організації механізмів ВП);
- при наявності в поле коду операції незадіяної двійкової комбінації;
- при діленні на нуль;
- при переповненні або зникненні порядку;
- при виявленні помилок парності, помилок у роботі різних пристроїв апаратури засобами контролю.
5.2. Переривання за допомогою супервізора.
Можуть ще існувати переривання при звертанні до супервізора ОС - у деяких комп'ютерах частина команд може використовувати тільки ОС, а не користувачі. Відповідно в апаратурі передбачені різні режими роботи, і програми користувачів виконуються в режимі, у якому ці привілейовані команди не виконуються. При спробі використовувати команду, заборонену в даному режимі, відбувається внутрішнє переривання і керування передається супервізору ОС. До привілейованих команд відносяться і команди переключення режиму робота ЦП. Нарешті, існують власне програмні переривання. Ці переривання відбуваються по відповідній команді переривання, тобто по цій команді процесор здійснює практично ті ж дії, що і при звичайних внутрішніх перериваннях. Даний механізм, був спеціально введений для того, щоб переключення на системні програмні модулі відбувався не просто як перехід у підпрограму, а точно в такий же спосіб, як і звичайне переривання. Цим забезпечується автоматичне, переключення процесора в привілейований режим з можливістю виконання будь-яких команд.
Сигнали, що викликають переривання, формуються поза процесором або у самому процесорі; вони можуть виникати одночасно. Вибір одного з них для обробки здійснюється на основі пріоритетів, приписаних кожному типу переривання. Очевидно, що переривання від схем контролю процесора повинні мати найвищий пріоритет (якщо апаратура працює неправильно, те не має змісту продовжувати обробку інформації). На мал. 14 зображений звичайний порядок (пріоритети) обробки переривань у залежності від типу переривань. Облік пріоритету може бути вбудований у технічні засоби, а також визначатися ОС, тобто крім апаратно реалізованих пріоритетів переривання більшість обчислювальних машин і комплексів допускають програмно-апаратне керування порядком обробки сигналів переривання. Другий спосіб, доповнюючи перший, дозволяє застосовувати різні види обслуговування переривань.
Зовнішні пристрої
Рис. 14. Розподіл переривань по рівнях приорітетів.
Наявність сигналу переривання обов'язково повинно викликати переривання програми, що виконується. Процесор може мати засоби захисту від переривань: відключення системи переривань, маскування (заборона) окремих сигналів переривання. Програмне керування цими засобами (існують спеціальні команди для керування роботою системи переривань) дозволяє ОС регулювати обробку сигналів переривання, змушуючи процесор, обробляти їх відразу по приходу, відкладати їхню обробку на якийсь час чи цілком ігнорувати. Звичайно операція переривання виконується тільки після завершення виконання поточної команди. Оскільки сигнали переривання виникають у довільні моменти часу, то на момент переривання може існувати кілька сигналів переривання, що можуть бути оброблені тільки послідовно. Щоб обробити, сигнали переривання в розумному порядку їм (як уже відзначалося) привласнюються пріоритети. Сигнал з більш високим пріоритетом обробляється і першу чергу, обробка інших сигналів переривання відкладається.
5.3. Маскування сигналів переривання
Програмне керування спеціальними регістрами маски (маскування сигналів переривання) дозволяє реалізувати різні дисципліни обслуговування:
- відносними пріоритетами, тобто обслуговування не, переривається навіть при наявності запитів з більш високими пріоритетами. Після закінчення обслуговування даного запиту обслуговується запит з найвищим пріоритетом. Для організації такої дисципліни необхідно в програмі обслуговування даного запиту накласти маски на всі інші сигнали або переривання просто відключити систему переривань;
- з абсолютними пріоритетами, тобто завжди обслуговується переривання з найвищим пріоритетом. Для реалізації цього режиму