Автор: Пользователь скрыл имя, 09 Марта 2013 в 12:40, контрольная работа
Переривання (англ. interrupt) — сигнал, що повідомляє процесору про выдбування якої-небудь події. При цьому виконання поточної послідовності команд припиняється й керування передається оброблюючому перериванню, що реагує на подію й обслуговує його, після чого повертає керування в перерваний код.
Термін «пастка» (англ. trap) іноді використовується як синонім терміна «переривання» або «внутрішнє переривання». Як правило, слововживання встановлюється в документації виробника конкретної архітектури процесора.
Переривання (англ. interrupt) — сигнал, що повідомляє процесору про выдбування якої-небудь події. При цьому виконання поточної послідовності команд припиняється й керування передається оброблюючому перериванню, що реагує на подію й обслуговує його, після чого повертає керування в перерваний код.
Залежно від джерела виникнення сигналу переривання діляться на:
Термін «пастка» (англ. trap) іноді використовується як синонім терміна «переривання» або «внутрішнє переривання». Як правило, слововживання встановлюється в документації виробника конкретної архітектури процесора.
Переривання являють собою механізм, що дозволяє координувати паралельне функціонування окремих пристроїв обчислювальної системи й реагувати на особливі стани, що виникають при роботі процесора. Таким чином, переривання — це примусова передача керування від виконуваної програми до системи (а через неї — до відповідної програми обробки переривання), що відбуває при виникненні певної події.
Ідея переривань була запропонована в середині 50-х років і можна без перебільшення сказати, що вона внесла найбільш вагомий внесок у розвиток обчислювальної техніки. Основна мета введення переривань — реалізація асинхронного режиму роботи окремих пристроїв обчислювального комплексу.
Механізм переривань реалізується апаратно-програмними засобами. Структури систем переривання (залежно від апаратної архітектури) можуть бути самими різними, але всі вони мають одну загальну особливість - переривання неодмінно спричиняє зміну порядку виконання команд процесором.
Механізм обробки переривань незалежно від архітектури обчислювальної системи включає наступні елементи:
1. Встановлення факту переривання (прийом сигналу на переривання) і ідентифікація переривання (в операційних системах іноді здійснюється повторно, на кроці 4).
2. Запам'ятовування стану
3. Керування апаратно
4. Збереження інформації про
перервану програму, що не вдалося
врятувати на кроці 2 за допомогою
дій апаратури. У деяких
5. Обробка переривання. Ця
6. Відновлення інформації, що ставиться до перерваного процесу (етап, зворотний кроку 4).
7. Повернення в перервану
Кроки 1-3 реалізуються апаратно, а кроки 4-7 — програмно.
На мал. 1.4 показано, що при виникненні запиту на переривання природний хід обчислень порушується й керування передається програмі обробки виниклого переривання. При цьому засобами апаратури зберігається (як правило, за допомогою механізмів стекової пам'яті) адреса тої команди, з якої варто продовжити виконання перерваної програми. Після виконання програми обробки переривання керування вертається перерваній раніше програмі за допомогою занесення в покажчик команд збереженої адреси команди. Однак така схема використовується тільки в найпростіших програмних середовищах.
Перехід від перервної програми до оброблювача й назад повинен виконуватися як можна швидше. Одним зі швидких методів є використання таблиці, що містить перелік всіх припустимих для комп'ютера переривань і адреси відповідних оброблювачів. Для коректного повернення до перерваної програми перед передачею керування оброблювачеві переривань уміст регістрів процесора запам'ятовується або в пам'яті із прямим доступом, або в системному стеці — system stack.
Переривання, що виникають при роботі обчислювальної системи, можна розділити на два основних класи: зовнішні (їх іноді називають асинхронними) і внутрішні (синхронні).
Зовнішні переривання викликаються асинхронними подіями, які відбуваються поза процесом, що переривається, наприклад:
Внутрішні переривання викликаються подіями, які пов'язані з роботою процесора і є синхронними з його операціями. Прикладами є наступні запити на переривання:
Можуть ще існувати переривання при звертанні до супервізора ОС — у деяких комп'ютерах частина команд може використовувати тільки ОС, а не користувачі. Відповідно в апаратурі передбачені різні режими роботи, і користувальницькі програми виконуються в режимі, у якому ці привілейовані команди не виконуються. При спробі використовувати команду, заборонену в даному режимі, відбувається внутрішнє переривання й керування передається супервізору ОС. До привілейованих команд ставляться й команди перемикання режиму робота центрального процесора.
Нарешті, існують властиво програмні переривання. Ці переривання відбуваються по відповідній команді переривання, тобто по цій команді процесор здійснює практично ті ж дії, що й при звичайних внутрішніх перериваннях. Даний механізм був спеціально уведений для того, щоб перемикання на системні програмні модулі відбувався не просто як перехід у підпрограму, а точно в такий же спосіб, як і звичайне переривання. Цим забезпечується автоматичне перемикання процесора в привілейований режим з можливістю виконання будь-яких команд.
Сигнали, що викликають переривання, формуються поза процесором або в самому процесорі; вони можуть виникати одночасно. Вибір одного з них для обробки здійснюється на основі пріоритетів, приписаних кожному типу переривання. Очевидно, що переривання від схем контролю процесора повинні мати найвищий пріоритет (якщо апаратура працює неправильно, те не має змісту продовжувати обробку інформації). На мал. 1.5 зображений звичайний порядок (пріоритети) обробки переривань залежно від типу переривань. Облік пріоритету може бути убудований у технічні засоби, а також визначатися операційною системою, тобто крім апаратно реалізованих пріоритетів переривання більшість обчислювальних машин і комплексів допускають програмно-апаратне керування порядком обробки сигналів переривання. Другий спосіб, доповнюючи перший, дозволяє застосовувати різні дисципліни обслуговування переривань.
Наявність сигналу переривання не обов'язково повинне викликати переривання програми, що виконується. Процесор може мати засоби захисту від переривань: відключення системи переривань, маскування (заборона) окремих сигналів переривання.
Програмне керування цими засобами
(існують спеціальні команда для
керування роботою системи
Програмне керування спеціальними регістрами маски (маскування сигналів переривання) дозволяє реалізувати різні дисципліни обслуговування:
Слід особливо зазначити, що для правильної реалізації останніх двох дисциплін потрібно забезпечити повне маскування системи переривань при виконанні кроків 1-4 і 6-7. Це необхідно для того, щоб не втратити запит і правильно його обслужити. Багаторівневе переривання повинне відбуватися на етапі властиво обробки переривання, а не на етапі переходу з одного процесу на іншій.
Керування ходом виконання завдань із боку ОС полягає в організації реакцій на переривання, в організації обміну інформацією (даними й програмами), наданні необхідних ресурсів, у динаміку виконання завдання й в організації сервісу. Причини переривань визначає ОС (модуль, що називають супервізором переривань), вона ж і виконує дії, необхідні при даному перериванні й у даній ситуації. Тому до складу будь-який ОС реального часу насамперед входять програми керування системою переривань, контролю станів завдань і подій, синхронізації завдань, засобу розподілу пам'яті й керування нею, а вже потім засобу організації даних (за допомогою файлових систем і т.д.). Треба, однак, помітити, що сучасна ОС реального часу повинна вносити в апаратно-програмний комплекс щось більше, ніж просте забезпечення швидкої реакції на переривання.
Як ми вже знаємо, з появою запиту на переривання система переривань ідентифікує сигнал і, якщо переривання дозволені, керування передається на відповідну підпрограму обробки. З мал. 1.4 видно, що в підпрограмі обробки переривання є дві службові секції. Це — перша секція, у якій здійснюється збереження контексту перерваного завдання, що не зміг бути збережений на 2-м кроці, і остання, заключна секція, у якій, навпаки, здійснюється відновлення контексту. Для того щоб система переривань не зреагувала повторно на сигнал запиту на переривання, вона звичайно автоматично «закриває» (відключає) переривання, тому необхідно потім у підпрограмі обробки переривань знову включати систему переривань. Установка розглянутих режимів обробки переривань (з відносними й абсолютними пріоритетами, і за правилом LCFS) здійснюється наприкінці першої секції підпрограми обробки. Таким чином, на час виконання центральної секції (у випадку роботи в режимах з абсолютними пріоритетами й по дисципліні LCFS) переривання дозволені. На час роботи заключної секції підпрограми обробки система переривань повинна бути відключена й після відновлення контексту знову включена. Оскільки ці дії необхідно виконувати практично в кожній підпрограмі обробки переривань, у багатьох операційних системах перші секції підпрограм обробки переривань виділяються в спеціальний системний програмний модуль, називаний супервізором переривань.
Супервізор переривань насамперед зберігає в дескрипторі поточного завдання робочі регістри процесора, що визначають контекст обчислювального процесу, що переривається. Далі він визначає ту підпрограму, що повинна виконати дії, пов'язані з обслуговуванням сьогодення (поточного) запиту на переривання. Нарешті, перед тим як передати керування цій підпрограмі, супервізор переривань установлює необхідний режим обробки переривання. Після виконання підпрограми обробки переривання керування знову передається супервізору, цього разу вже на той модуль, що займається диспетчеризацією завдань. І вже диспетчер завдань, у свою чергу, відповідно до прийнятого режиму розподілу процесорного часу (між процесами, що виконуються) відновить контекст того завдання, який буде вирішено виділити процесор. Розглянута нами схема проілюстрована на мал. 1.6.