Loading AI tools
сигнал процесору від апаратного чи програмного забезпечення, який показує подію, що потребує негайної уваги З Вікіпедії, вільної енциклопедії
Переривання (англ. interrupt) — сигнал, що повідомляє процесор або мікроконтролер про настання якої-небудь події, яка потребує невідкладної уваги щодо її обробки. При цьому виконання поточної послідовності команд може призупинитися (у випадку однопроцесорної системи), а керування передається обробнику переривання, який реагує на подію та обслуговує її, після чого повертає керування в перерваний код.[1]
Залежно від джерела виникнення сигналу переривання поділяються на:
Термін «пастка» (англ. trap) іноді використовується як синонім терміну «переривання» чи «внутрішнє переривання». Як правило, термінологія встановлюється в документації виробника конкретної архітектури процесора.
При виникненні переривання процесор зберігає в стеку вмісту лічильника команд і завантажує в нього адресу відповідного вектора переривання, в якому, як правило, міститься команда безумовного переходу до підпрограми обробки переривання. Останньою командою підпрограми-обробника переривань має бути команда повернення з переривання, яка забезпечує повернення в основну програму шляхом відновлення значення заздалегідь збереженого лічильника команд.
Обробка переривань відбувається відповідно до загальних принципів обробки переривань у мікропроцесорній техніці. Модуль переривань приймає запити переривання й організовує перехід до виконання визначеної програми. Запити переривання можуть надходити як від зовнішніх, так і від внутрішніх джерел (наприклад, у мікроконтролерах або системах на чипі). Для приймання запитів від зовнішніх джерел використовуються виводи портів вводу/виводу, для яких ця функція є альтернативною. Джерелами запитів зовнішніх переривань також можуть бути будь-які зміни зовнішніх сигналів на деяких спеціально виділених лініях портів вводу/виводу[2].
Якщо переривання відбувається під час виконання команди, що триває декілька циклів, перед викликом переривання завершується виконання цієї команди. Після виходу з переривання мікропроцесор завжди виконує ще одну команду, перш ніж перейти до якого-небудь іншого відкладеного переривання[3]:239.
Залежно від можливості заборони зовнішні переривання поділяються на:
Обробники переривань зазвичай пишуться таким чином, щоб час їх обробки був якомога меншим, оскільки під час їх роботи можуть не оброблятися інші переривання, а якщо їх буде багато (особливо від одного джерела), то вони можуть губитися.
До закінчення обробки переривання зазвичай встановлюється заборона на обробку цього типу переривання, щоб процесор не входив до циклу обробки одного переривання.
Пріоритезація означає, що всі джерела переривань діляться на класи й кожному класу призначається свій рівень пріоритету запиту на переривання. Пріоритети можуть обслуговуватися як відносні і абсолютні.
Відносне обслуговування переривань означає, що якщо під час обробки переривання надходить пріоритетніше переривання, то це переривання буде оброблено тільки після завершення поточної процедури обробки переривання. Абсолютне обслуговування переривань означає, що коли під час обробки переривання надходить пріоритетніше переривання, то поточна процедура обробки переривання витісняється, і процесор починає виконувати обробку тільки-но отриманого більш пріоритетного переривання. Після завершення цієї процедури процесор повертається до виконання витісненої процедури обробки переривання (якщо не з'явилося нових). Проте, різні операційні системи мають різну філософію обробки переривань і даний процес може значно модифікуватися (для отримання оптимальної продуктивності) у залежності від навантаження на систему, користувацьких звичок, версії компонентів системи, апаратного обладнання тощо.
Перехоплення переривання — заміна обробника переривання на свій власний.
Вектор переривання — закріплений за пристроєм номер, який ідентифікує відповідний обробник переривань. Вектори переривань об'єднуються в таблицю векторів переривань, що містить адреси обробників переривань. Розташування таблиці залежить від типу та режиму роботи процесора чи мікроконтролера.
Вектором переривання є адреса процедури обробки переривання[3]:230.
Вектори переривань від різних джерел об'єднані в структуру, що називається таблицею векторів переривань[3]:231.
Програмне переривання — синхронне переривання, яке може здійснити програма за допомогою спеціальної інструкції.
У процесорах архітектури x86 для явного виклику синхронного переривання є інструкція Int
, аргументом якої є номер переривання (від 0 до 255). В IBM PC-сумісних комп'ютерах до початку завантаження ОС обробку переривань здійснюють підпрограми BIOS. Будь-який вектор переривання може бути перехоплений кодом BIOS карт розширень (наприклад, мережевих або відеокарт), операційною системою, і навіть звичайними (прикладними) програмами, які постійно знаходяться в пам'яті під час роботи інших програм (т. зв. резидентні програми). На відміну від реального режиму, в захищеному режимі x86-процесорів звичайні програми не можуть обслуговувати переривання: ця функція доступна тільки системному коду (операційній системі).
MS-DOS використовує для взаємодії зі своїми модулями і прикладними програмами переривання з номерами від 20h до 3Fh (числа дані в шістнадцятковій системі числення, як це прийнято при програмуванні мовою асемблера x86). Наприклад, доступ до основної множини функцій MS-DOS здійснюється виконанням інструкції Int 21h
(при цьому номер функції та її аргументи передаються в регістрах). Цей розподіл номерів переривань не закріплений апаратно та інші програми можуть встановлювати свої обробники переривань замість або поверх вже наявних обробників, встановлених MS-DOS або іншими програмами, що, як правило, використовується для зміни функціоналу або розширення списку системних функцій. Також, цією можливістю користуються віруси.
У процесорах інших архітектур термін «програмне переривання» може бути синонімом поняттю системний виклик. Наприклад, інструкція SVC
(англ. Supervisor Call) у архітектурі IBM System/360 викликає зазначену функцію у супервізорі операційної системи. Аналогічну за мнемонікою і призначенням команду SVC
мають також процесори архітектури ARM.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.