Різниця між перервою та винятком

Переривання проти виключення

На будь-якому комп’ютері під час звичайного виконання програми можуть траплятися події, які можуть призвести до тимчасового припинення роботи процесора. Такі події називаються перериваннями. Перебої можуть бути викликані помилками програмного забезпечення або обладнання. Апаратні переривання називаються (просто) Перериваннями, тоді як програмні переривання називаються Винятками. Після підняття переривання (програмного чи апаратного забезпечення) контроль передається спеціальній підпрограмі під назвою ISR (Interrupt Service Routine), яка може обробляти умови, які викликані перериванням.

Що таке Переривання?

Термін «Переривання» зазвичай зарезервований для апаратних перерв. Вони є перервами управління програмою, викликаними зовнішніми апаратними подіями. Тут зовнішні засоби, зовнішні для процесора. Апаратні переривання зазвичай надходять із багатьох різних джерел, таких як чіп таймера, периферійні пристрої (клавіатури, миша тощо), порти введення / виводу (послідовний, паралельний тощо), дисководи, диски диска, годинник CMOS, карти розширення (звукова карта, відео картка тощо). Це означає, що апаратні переривання майже ніколи не трапляються через якусь подію, пов’язану з виконуваною програмою. Наприклад, така подія, як натискання клавіші на клавіатурі користувачем або внутрішній апаратний таймер вичерпання, може призвести до такого переривання і може повідомити ЦП, що певний пристрій потребує певної уваги. У такій ситуації, що процесор зупинить все, що він робив (тобто призупиняє поточну програму), надає необхідну послугу пристрою та повернеться до звичайної програми. Коли трапляються апаратні переривання і ЦП запускає ISR, інші апаратні переривання вимикаються (наприклад, на машинах 80 × 86). Якщо вам потрібні інші апаратні переривання під час запуску ISR, вам потрібно зробити це явно, очистивши прапор переривання (з інструкцією sti). На 80 × 86 машинах очищення прапора перерви вплине лише на апаратні переривання.

Що таке винятки?

Виняток - це переривання програмного забезпечення, яке можна ідентифікувати як спеціальний режим обробки. Виняток може бути ідентифікований як пастка, що автоматично виникає (Пастка може бути ідентифікована як передача управління, яка ініціюється програмістом). Як правило, не існує конкретних інструкцій, пов’язаних із винятками (пастки створюються за допомогою певної інструкції). Отже, виняток виникає через "виняткову" умову, яка виникає під час виконання програми. Наприклад, поділ на нуль, виконання нелегального коду або помилки, пов'язаної з пам'яттю, можуть спричинити винятки. Щоразу, коли виняток виноситься, ЦП тимчасово призупиняє програму, яку він виконував, і запускає ISR. ISR міститиме, що робити з винятком. Це може усунути проблему або, якщо це неможливо, може граціозно перервати програму, надрукувавши відповідне повідомлення про помилку. Хоча конкретна інструкція не викликає винятку, виняток завжди буде викликано інструкцією. Наприклад, помилка поділу за нульовою помилкою може відбуватися лише під час виконання інструкції поділу.

Яка різниця між Перерваним та Винятковим?

Перерви - це апаратні переривання, тоді як винятки - програмні переривання. Виникнення апаратних переривань зазвичай відключає інші апаратні переривання, але це не стосується винятків. Якщо вам потрібно заборонити апаратні переривання, поки не буде подано виняток, вам потрібно чітко очистити прапор переривання. І зазвичай прапор переривання на комп'ютері впливає на (апаратні) переривання на відміну від винятків. Це означає, що очищення цього прапора не завадить виняткам.