Переривання і виключення можна розділити на декілька груп:
1. збій;
2. пастка;
3. аварійне завершення.
Це ділення проводиться відповідно до наступних ознак:
· яка інформація зберігається про місце виникнення переривання (виключення)?
· чи можливе відновлення перерваної програми?
Виходячи з цих ознак, можна дати наступні характеристики вищепереліченим
групам:
Збій (помилка) — переривання або виключення, при виникненні якого в стек
записуються значення регістрів cs: ip, вказуючі на команду, що викликала дане
переривання. Це дозволяє, діставши доступ до сегменту коди, виправити помилкову
команду в обробнику переривання і, повернувши управління програмі, фактично
здійснити її рестарт (пригадаєте, що в реальному режимі при виникненні
переривання в стеку завжди запам'ятовується адреса команди, наступної за тією, яка
викликала це переривання).
Пастка — переривання або виключення, при виникненні якого в стек
записуються значення регістрів cs: ip, вказуючі на команду, наступну за
командою, що викликала дане переривання.
Так само, як і у разі помилок можливий рестарт програми. Для цього необхідно лише виправити в обробнику переривання відповідні код або дані помилки, що послужили джерелом. Після цього перед поверненням управління потрібно скоректувати значення ip в стеку на довжину команди, що викликала дане переривання.
Механізм пасток схожий на механізм переривань в реальному режимі, хоча не у всьому.
Тут є один тонкий момент. Якщо переривання типу пастки виникло в команді
передачі управління jmp, той вміст пари cs: ip в стеку відображатиме
результат цього переходу, тобто відповідати команді призначення.
Аварійне завершення — переривання, при якому інформація про місце його
виникнення недоступна або неповна і тому рестарт практично неможливий
якщо тільки дана ситуація не була запланована заздалегідь.
? відповідні програми-обробники помилок, пасток і аварій будуть
відрізнятися алгоритмами роботи.
Мікропроцесор жорстко визначає, які переривання є помилками, пастками
і аваріями.
Зауваження.
Для деяких номерів переривань в реальному режимі можливі 2 джерела
переривання (розвиток мікропроцесорів).
Деякі переривання при своєму виникненні додатково генерують і
записують в стек так званий код помилки. Цей код може згодом
використовуватися для встановлення джерела переривання. Код помилки записується в
стік услід за вмістом регістрів eflags, cs і eip.
можна розпізнати дійсне джерело переривання (якщо є неоднозначність).
Таблиця дескрипторів переривань IDT
Замість таблиці векторів переривань система переривань має справу з таблицею