Переривання та обробка переривань

правління апаратними пристроями, які підключені до обчислювальної машини, – це одна з найбільш відповідальних функцій ядра Частиною цієї роботи є необхідність взаємодії з окремими пристроями машини Оскільки процесори зазвичай працюють у багато разів швидше, ніж апаратура, з якою вони повинні взаємодіяти, то для ядра виходить неефективним відправляти запити і витрачати час, чекаючи відповіді від потенційно більш повільного обладнання Враховуючи невелику швидкість відгуку обладнання, ядро ​​повинно мати можливість залишати на час роботу з обладнанням та виконувати інші дії, поки апаратний пристрій закінчить обробку запиту Одне з можливих рішень цієї проблеми – періодичний опитування обладнання (polling)  Ядро періодично може перевіряти стан апаратного пристрою системи і відповідним чином реагувати Однак такий підхід вносить додаткові накладні витрати, тому що, незалежно від того, готова відповідь від апаратного пристрою або воно ще виконує запит, все одно здійснюється постійний систематичний опитування стану пристрою через постійні інтервали часу Кращим рішенням є забезпечення механізму, який дозволяє подавати ядру сигнал про необхідність приділити увагу обладнанню Такий

механізм називається перериванням (interrupt)

Переривання

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

Фізично переривання виробляються електричними сигналами, які створюються пристроями і спрямовуються на вхідні контакти мікросхеми контролера переривань Контролер переривань в свою чергу відправляє сигнал процесору Процесор виконує детектування сигналу і перериває виконання роботи для того, щоб обробити переривання Після цього процесор сповіщає операційну систему про те, що відбулося переривання і операційна система може відповідним чином це переривання обробити

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

Ідентифікатори, відповідні перериванням, часто називаються лініями запитів на переривання (interrupt request lines, IRQ lines) Зазвичай це деякі числа Наприклад, для платформи PC значення IRQ, рівне 0, – це переривання таймера, a IRQ, рівне 1, – переривання клавіатури Однак не всі номери переривань жорстко визначені Переривання, повязані з пристроями шини PCI, наприклад, призначаються динамічно Інші платформи, які не підтримують стандарт PCI, мають аналогічні функції динамічного призначення номерів переривань Основна ідея полягає в тому, що певні переривання повязані з певними пристроями, і у ядра є вся ця інформація Апаратне забезпечення, щоб привернути увагу ядра, генерує переривання начебто Гей Було нове натискання клавіші Його необхідно обробити.

Виняткові ситуації

Виняткові ситуації (exceptions) часто розглядаються разом з перериваннями На відміну від переривань, вони виникають синхронно з тактовим генератором процесора І действительно,ихчастоназываютсинхроннымипрерываниямиИсключительныеситуациигенерируются процесором при виконанні машинних інструкцій як реакція на помилку програми (наприклад, розподіл на нуль) або як реакція на аварійну ситуацію, яка може бути оброблена ядром (наприклад, переривання через відсутність сторінки, page fault) Так як більшість апаратних платформ обробляють виняткові ситуації аналогічно обробці переривань, то інфраструктури ядра, для обох видів обробки, також аналогічні Велика частьматериала,посвященнаяобработкепрерываний(асинхронных,которыегенерируютсяаппаратными пристроями), також відноситься і до виключних ситуацій (синхронним, які генеруються самим процесором)

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

Джерело: Лав, Роберт Розробка ядра Linux, 2-е видання : Пер з англ – М: ТОВ «ІД Вільямс »2006 – 448 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*