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