Як апаратне переривання працює в порівнянні з програмними перериваннями?


4

Щоб дати вам уявлення про рівень деталізації, я зацікавлений, один приклад. Я знаю, що системний виклик в кінцевому підсумку призводить до пастки, яка дозволяє зберігати регістри процесорів, перемикатися в режим супервізора і виконувати непрямий стрибок. Але це лише окремий випадок (чи це так?).

Так що ж відбувається на апаратному рівні, коли відбуваються апаратні або програмні переривання?

Які відмінності і спільності? Як саме апаратні та операційні системи співпрацюють для того, щоб переривати роботу так, як це роблять?

Відповіді:


2

Апаратне переривання відбувається на апаратному рівні. Це можуть бути такі речі, як пастки і зупинки, де сам процесор зберігає свій стан і чекає на введення або виконує щось інше, що не обов'язково є частиною початкової програми (тобто, якщо ви ділите на нуль, ваш процесор повинен зробити щось, що було не має наміру робити під час нормального виконання програми).

Можливо, більш важливо, апаратне переривання дозволяє процесору не витрачати час на так звані петлі опитування. Уявіть, якщо вам доведеться побачити, чи натиснув користувач клавішу. Є два способи зробити це. Перший - це дуже часто перевірка і перевірка натискання клавіші. Хоча це буде працювати, це марнотратно, оскільки переважна більшість часу перевірка повертається негативно. Переривання дозволяє натискати клавішу на себе, щоб змінити стан програми, так що вона отримує "сповіщення" про натискання клавіші. Другий спосіб є значно ефективнішим у багатьох випадках.

Програмне переривання зазвичай означає перемикання контексту, і це здійснюється операційною системою. У деяких випадках це означає не що інше, як перестановка ОС, яка програма виконується на даний момент (якщо на комп'ютері запущено 50 процесів, якщо у вас є 50 ядер / теми, що програма одночасного виконання програми є ілюзією), то щось подібне до наведений вище приклад з клавіатурою, де він чекає на подію (див. докладніше про програмування на основі подій тут (з Вікіпедії))

Важливо відзначити, що, хоча у багатьох випадках програмування на основі переривань є гарною ідеєю, у застосуванні, де існує багато програм на основі переривань, це гарна ідея, якщо це відбувається занадто часто, це може бути менш ефективним, і, можливо, навіть аварійною системою. .


Тому пастки виникають в апаратних засобах і операційних системах викликають перемикання контексту, спасибі! ;-)
artistoex

Не проблема. У деяких випадках ситуація може бути дещо складною, як, наприклад, коли переривання маскуються, і все, але для іншого питання, я думаю, моя відповідь вже давно.
soandos
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.