Обробка переривань, вектори переривань, програмні переривання, irq
IRQ0 - IRQ15 - це апаратні переривання.
Механізм обробки переривань
При обробці кожного переривання повинна виконуватися наступна послідовність дій:
Головні функції механізму переривання:
- розпізнавання або класифікація переривань.
- передача управління відповідно оброблювачу переривань.
- коректне повернення до перерваної програми (перед передачею управління обробникові переривань вміст регістрів процесора запам'ятовується або в пам'яті з прямим доступом або в системному стеці).
типи переривань
Переривання, що виникають при роботі обчислювальної системи, можна розділити на 4 групи:

Апаратні переривання викликаються фізичними пристроями і виникають по відношенню до програми асинхронно, тобто в загальному випадку неможливо передбачити, коли і з якої причини програма буде перервана.
Апаратні переривання НЕ координуються c роботою програмного забезпечення. Коли викликається переривання, то процесор залишає свою роботу, виконує переривання, a потім повертається на колишнє місце.
Зовнішні переривання виникають за сигналом будь-якого зовнішнього пристрою наприклад:
Переривання по таймеру викликається інтервальним таймером. Цей таймер містить регістр, якому може бути присвоєно певну початкове значення за допомогою спеціальної привілейованої команди. Значення цього регістру автоматично зменшується на 1 після закінчення кожної мілісекунди часу. Коли це значення стають рівним нулю, відбувається переривання по таймеру. Подібний інтервальний таймер використовується операційною системою для визначення часу, протягом якого програма користувача може залишатися під керуванням машини.
Масковані і немасковані зовнішні переривання
Існують два спеціальних зовнішніх сигналу серед вхідних сигналів процесора, за допомогою яких можна перервати виконання поточної програми і тим самим переключити роботу центрального процесора. Це сигнали NMI (Non Mascable Interrupt, немаскируемое переривання) INTR (interrupt request, запит на переривання).
Відповідно зовнішні переривання поділяються на два види: немасковані і маскуються.
Часто при виконанні критичних ділянок програм, для того щоб гарантувати виконання певної послідовності команд цілком, доводиться забороняти переривання (тобто зробити систему нечутливою до всіх або окремих переривань). Це можна зробити командою CLI. Її потрібно помістити в початок критичної послідовності команд, а в кінці розташувати команду STI, роздільну процесору сприймати переривання. Команда CLI забороняє тільки маскуються переривання, немасковані завжди обробляються процесором.
Таким чином, наявність сигналу переривання не обов'язково повинно викликати переривання що виконується програми. Процесор може володіти засобами захисту від переривань: відключення системи переривань, маскування (заборона) окремих сигналів переривань. Переривання, які замаскувати не можна - це немасковані переривання.
Внутрішні переривання викликаються подіями, які пов'язані з роботою процесора і є синхронними з його операціями, а саме переривання відбувається, коли:
програмні переривання
Програми можуть самі викликати переривання з заданим номером. Для цього вони використовують команду INT. За цією командою процесор здійснює практично ті ж дії, що і при звичайних переривання, але тільки це відбувається в передбачуваною точці програми - там, де програміст помістив цю команду. Тому програмні переривання не є асинхронними (програма «знає», коли вона викликає переривання).
Механізм програмних переривань був спеціально введений для того, щоб:
- перемикання на системні програмні модулі відбувалося не просто як перехід в підпрограму, а точно таким же чином, як і звичайні переривання. Цим забезпечується автоматичне перемикання процесора в привілейований режим з можливістю виконання будь-яких команд.
- використання програмних переривань призводить до більш компактному коду програм в порівнянні з використанням стандартних команд виконання процедур.
Приклад (програмні переривання):
У спрощеному вигляді схему обробки різних видів переривань можна представити таким чином:

КП - контролер переривань, має кілька рівнів (ліній) для підключення контролерів пристроїв (на схемі позначені КУ). Можливо каскадне підключення контролерів, коли на один з його входів підключається ще одні контролер переривань. ЦП - центральний процесор.
Апаратні переривання виробляються пристроями комп'ютера, коли виникає необхідність їх обслуговування. На відміну від програмних переривань, що викликаються заплановано самої прикладної програмою, апаратні переривання завжди відбуваються асинхронно по відношенню до що виконується програмами. Крім того, може виникнути одночасно кілька переривань. Вибір одного з них для обробки здійснюється на основі пріоритетів, приписаних кожному типу переривання.
Кожному переривання призначається свій унікальний пріоритет. Якщо відбувається одночасно кілька переривань, то система віддає перевагу самому високопріоритетних, відкладаючи на час обробку інших переривань.
У разі про переривання самої програми обробки переривання говорять про вкладеному перериванні. Рівні пріоритетів позначаються скорочено IRQ0 - IRQ15 або IRQ0 - IRQ23 (в залежності від мікросхемою реалізації).
Пpepивaнію вpeмeни cутoк дан мaкcімaльний пpіopітeт, пocкoльку ecли oнo буде пocтoяннo тepятьcя, то будуть нeвepнимі пoкaзaнія cіcтeмниx чacoв. Пpepивaніe від клaвіaтуpи визивaeтcя при нaжaтіі або oтпуcкaніі клавіші; oнo визивaeт ланцюг coбитій, кoтopaя зазвичай зaкaнчівaeтcя тим, що код клавіші пoмeщaeтcя в буфep клaвіaтуpи (oткудa він зaтeм мoжeт бути пoлучeн пpoгpaммнимі пpepивaніямі).
Ну і нарешті реалізація механізму обробки переривань
У машині для кожного класу переривань є відповідна йому робоча область переривань. Наприклад, є область, відповідна переривання по таймеру. Коли відбувається переривання по таймеру, вміст всіх регістрів зберігається в цій області (наприклад, пропустивши перші кілька слів). Потім з цих пропущених слів витягуються заздалегідь занесені туди значення, які перезаписувати в лічильник (покажчик) команд машини і в слово стану (або під флагової регістр). Завантаження і збереження регістрів здійснюється апаратними засобами машини автоматично.
Збереження і відновлення стану процесора і вмісту регістрів називають операцією контекстного перемикання.
У більшості машин є так зване слово стану, яке містить частину інформації, використовуваної при обробці переривань. Одним з елементів цього слова (наприклад, перший) є ознака, що визначає, в якому режимі знаходиться процесор: в призначеному для користувача або супервізора.
Звичайні програми знаходяться в призначеному для користувача режимі (ознака дорівнює нулю). Коли відбувається переривання, нове завантажувати вміст слово стану має ознака, що дорівнює 1, що автоматично переводить процесор в режим супервізора. В цьому режимі стає можливим використання привілейованих команд. Перед тим, як значення слова стану буде збережено, в іншому його елементі (наприклад, другому) буде встановлено значення, яке вказує на причину переривання:
- при програмному перериванні відбивається тип викликав його умови, наприклад розподіл на нуль.
при перериванні по введенню-висновку заноситься номер каналу, який викликав переривання.
У третьому елементі вказується, чи виконує процесор команди або простоює. У четвертому елементі міститься покажчик, що ідентифікує поточну виконувану програму. У п'ятому елементі міститься маска переривань, яка використовується для контролю за дозволом переривань (поле MASK).
Це поле використовується, щоб не допустити настання переривань певного типу, поки перше з них не буде оброблено. У MASK кожен біт відповідає деякому класу переривань. Якщо якийсь біт встановлений в 1, то переривання відповідного класу дозволені, якщо в 0, то заборонені. В останньому випадку говорять, що вони маскували (їх також називають забороненими або закритими). Однак замасковані переривання не втрачаються, тому що сигнал, що викликав переривання, зберігається апаратурою. Тимчасово затримане таким способом переривання називається відкладеним. Коли (внаслідок того, що значення MASK скинуто) переривання відповідного класу знову вирішуються, сигнал розпізнається і відбувається переривання.
Маскування переривань знаходиться під контролем операційної системи і залежить від значення MASK в слові стану, яке заздалегідь зберігається в робочій області кожного переривання. Можна заборонити всі переривання, встановивши всі біти MASK в нуль. Насправді діяти таким чином немає необхідності.
Поділися інформацією з друзями в:
Можливо вам буде цікаво:
У цій статті ми поговоримо на такі теми, як процеси і потоки, дискриптори процесу, поговоримо про сінзронізаціі потоків і торкнемося всіма улюблений диспетчер задач windows.
У даній статті, ми поговоримо на такі теми, як віртуальна пам'ять, і розглянемо основні методи розподілу віртуальної пам'яті в операційних системах.
У цій статті ми поговоримо на такі теми, як системні процеси, а саме: планування процесів операційною системою, виділення ресурсів процесу, стану процесу в ОС.
сьогодні Новомосковскют
Отримай 1500 Gold безкоштовно в World of tanks при покупці антивіруса
Wargaming - і "Лабораторія Касперського" оголосили про початок спільної акції. Тепер при покупці ліцензійного програмного забезпечення Kaspersky Internet Security, Kaspersky CRYSTAL, а також Kaspersky ONE.
Безкоштовна trial версія Diablo III - вже доступна для скачування
Вже як три місяці ми насолоджуємося довгоочікуваним релізом Diablo III. Щасливі володарі ліцензії, так само отримали в комплекті ваучер, який дає можливість грати в Starter Edition версію.
GTA San Andreas - модифікована движком GTA 4 (скачати мод)
Шанувальники - легендарної серії ігор Grand Theft Auto вирішили розробити глобальний мод, GTA San Andreas буде поставлена на движок від GTA 4. Посилання для скачування мода ви знайдете в кінці цієї статті.
Як скачати музику з контакту на комп'ютер - програма VKSaver 3.1
У цій статті ми відповімо на питання: як скачати музику з контакту на комп'ютер абсолютно безкоштовно, а використовувати для цього ми будемо безкоштовну програму - VKSaver 3.1