Архітектура системи переривань

Автор: Пользователь скрыл имя, 09 Марта 2013 в 12:40, контрольная работа

Краткое описание

Переривання (англ. interrupt) — сигнал, що повідомляє процесору про выдбування якої-небудь події. При цьому виконання поточної послідовності команд припиняється й керування передається оброблюючому перериванню, що реагує на подію й обслуговує його, після чого повертає керування в перерваний код.
Термін «пастка» (англ. trap) іноді використовується як синонім терміна «переривання» або «внутрішнє переривання». Як правило, слововживання встановлюється в документації виробника конкретної архітектури процесора.

Файлы: 1 файл

Архітектура системи переривань.doc

— 278.50 Кб (Скачать)

Вступ

 

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

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

  • асинхронны або зовнішні (апаратні) — події, які виходять від зовнішніх джерел (наприклад, периферійних пристроїв) і можуть відбутися в будь-який довільний момент: сигнал від таймера, мережної карти або дискового накопичувача, натискання клавіш клавіатури, рух миші. Факт виникнення в системі такого переривання трактується як запит на переривання
  • синхронныабо внутрішні — події в самому процесорі як результат порушення якихось умов при виконанні машинного коду: розподіл на нуль або переповнення, звертання до неприпустимих адрес або неприпустимий код операції;
  • програмні (окремий випадок внутрішнього переривання) — ініціюються виконанням спеціальної інструкції в коді програми. Програмні переривання як правило використовуються для звертання до функцій убудованого програмного забезпечення (firmware), драйверів і операційної системи.

Термін «пастка» (англ. trap) іноді використовується як синонім терміна «переривання» або «внутрішнє переривання». Як правило, слововживання встановлюється в документації виробника конкретної архітектури процесора.

 

 

 

1.Загальна частина

1.1. Поняття переривання в архітектурі  комп’ютера

 

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

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

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

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

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

2. Запам'ятовування стану перерваного  процесу. Стан процесу визначається  насамперед значенням лічильника команд (адресою наступної команди, що, наприклад, в i80x86 визначається регістрами CS і IP — покажчиком команди), вмістом регістрів процесора й може включати також специфікацію режиму (наприклад, режим користувальницьку або привілейований) і іншу інформацію.

3. Керування апаратно передається  підпрограмі обробки переривання.  У найпростішому випадку в  лічильник команд заноситься  початкова адреса підпрограми  обробки переривань, а у відповідні  регістри — інформація зі слова  стану. У більш розвинених процесорах, наприклад у тім же i80286 і наступних 32-бітових мікропроцесорах, починаючи з i80386, здійснюється досить складна процедура визначення початкової адреси відповідної підпрограми обробки переривання й не менш складна процедура ініціалізації робочих регістрів процесора.

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

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

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

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

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

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

 
 

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

  • розпізнавання або класифікація переривань;
  • передача керування відповідно оброблювачеві переривань;
  • коректне повернення до перерваної програми

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

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

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

  • переривання від таймера;
  • переривання від зовнішніх пристроїв (переривання по введенню/виводу);
  • переривання по порушенню живлення;
  • переривання з пульта оператора обчислювальної системи;
  • переривання від іншого процесора або іншої обчислювальної системи.

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

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

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

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

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

 
 

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

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

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

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

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

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

Як ми вже знаємо, з появою запиту на переривання система переривань ідентифікує сигнал і, якщо переривання дозволені, керування передається на відповідну підпрограму обробки. З мал. 1.4 видно, що в підпрограмі обробки переривання є дві службові секції. Це — перша секція, у якій здійснюється збереження контексту перерваного завдання, що не зміг бути збережений на 2-м кроці, і остання, заключна секція, у якій, навпаки, здійснюється відновлення контексту. Для того щоб система переривань не зреагувала повторно на сигнал запиту на переривання, вона звичайно автоматично «закриває» (відключає) переривання, тому необхідно потім у підпрограмі обробки переривань знову включати систему переривань. Установка розглянутих режимів обробки переривань (з відносними й абсолютними пріоритетами, і за правилом LCFS) здійснюється наприкінці першої секції підпрограми обробки. Таким чином, на час виконання центральної секції (у випадку роботи в режимах з абсолютними пріоритетами й по дисципліні LCFS) переривання дозволені. На час роботи заключної секції підпрограми обробки система переривань повинна бути відключена й після відновлення контексту знову включена. Оскільки ці дії необхідно виконувати практично в кожній підпрограмі обробки переривань, у багатьох операційних системах перші секції підпрограм обробки переривань виділяються в спеціальний системний програмний модуль, називаний супервізором переривань.

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

Информация о работе Архітектура системи переривань