Маскування сигналів переривання - студопедія

Залежно від джерела, переривання діляться на наступні типи:

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

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

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

3. Винятки - є реакцією мікропроцесора на нестандартну ситуацію, що виникла всередині мікропроцесора під час виконання деякої команди програми.

Внутрішні переривання збуджуються ланцюгами самого процесора при виникненні однієї із спеціально обумовлених ситуацій, наприклад, при виконанні операції ділення на нуль або при спробі виконати неіснуючу команду. За кожним з таких переривань закріплений певний вектор, номер якого відомий процесору. Наприклад, в IBM PC за розподілом на 0 закріплений вектор 0, а через неправильну командою - вектор 6. Якщо процесор стикається з однією з таких ситуацій, він виконує описану вище процедуру переривання, використовуючи закріплений за цією ситуацією вектор переривання.

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

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

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

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

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

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

3. За принципом стека, або, як іноді кажуть, з дисципліни LCFS (Last Come First Served - останнім прийшов, першим обслужений), тобто запити з більш низьким пріоритетом можуть переривати обробку переривання з більш високим пріоритетом. Дли цього необхідно не накладати маску ні на один із сигналів переривання і не вимикати систему переривань.

Схожі статті