маскування переривань

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

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

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

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

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

§ за принципом стека (з дисципліни LCFS - last come first served) - запити з більш низьким пріоритетом можуть переривати обробку переривання з більш високим пріоритетом. Для реалізації такої дисципліни необхідно не накладати маски ні на один сигнал переривання і не вимикати систему переривань.

Відзначимо, що для правильної реалізації останніх двох дисциплін потрібно забезпечити повне маскування системи переривань при виконанні кроків 1-4 і 6-7, щоб не втратити запит і правильно його обслужити. При цьому багаторівневе переривання повинно відбуватися на етапі власне обробки переривання, а не на етапі переходу з одного процесу на інший.

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

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

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

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

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

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

1. Що таке переривання? Коли воно було введено в дію і з якою метою?

2. З яких етапів складається механізм обробки переривання?

3. Чи можна заборонити всі переривання на час роботи обробника переривань? Чому?

4. До якого типу переривань відносяться переривання клавіатури? Переривання таймера? Виникнення ділення на нуль в ході виконання програми? Звернення до забороненої сторінці пам'яті, зайнятої кодом ОС?

5. Наведіть приклади апаратних переривань.

6. Чи можуть в ході нормальної роботи програми виникати виняткові ситуації? Чому?

7. Які існують способи реалізації механізму апаратних переривань? У чому їх відмінність?

8. Що таке маскування переривань і для чого воно може застосовуватися?

9. Яким чином можна реалізовувати різні дисципліни обслуговування переривань за допомогою маскування?

10. У чому відмінності між дисципліною обслуговування переривань з відносними пріоритетами і з абсолютними?

11. Де міститься інформація про рівень пріоритету поточного обробника переривань?

12. Які функції супервізора переривань?

13. Чим відрізняється реалізація механізму переривання в мультипрограммной системі від однопрограмні системи?

14. Коли відбувається повернення до виконувалася до надходження сигналу переривання програми в мультипрограммной системі?


Генерація сторінки за: 0.014 сек.

Схожі статті