Що означає переривання в контексті операційних систем?


9

Протягом літа я вирішив прочитати Концепції операційних систем від Silberschatz, Galvin Gagne (8-е видання). Я потрапив на тему, яка мене бентежить - переривання та їх роль, що стосується операційних систем.

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

Я просто шукаю розуміння великої картини.

Відповіді:


8

Коли операційна система запускає такий процес, як "init", вона надсилала б сигнали іншим підсистемам / менеджерам пристроїв тощо, таким як пам'ять, пристрої вводу / виводу тощо. Переривання - це лише спосіб повідомляти процесору чи ОС, що вона готова, або має новий вхід і т. Д. Тоді, колись під час init, ОС очікує готовності підсистеми, і перерва з цих підсистем вказуватиме саме на це. Отже, до цього стосується "подія".

Що стосується апаратних або програмних перерв, апаратні переривання - це ті, що походять від обладнання. Напр. Пристрої вводу / виводу, такі як клавіатура і т. Д. Перерва в апараті змушує процесор зберегти свій стан і почати виконання обробника переривання. З іншого боку, переривання програмного забезпечення - це інструкції в наборі інструкцій, що призводить до того, що процесор змінює свій рівень привілеїв від користувача-супервізора, також відомий як контекстний перемикач. Ці деталі будуть висвітлені пізніше у текстовій книзі.


4

Перерви дозволяють операційній системі помічати зовнішню подію, наприклад, клацання миші. Програмні переривання, більш відомі як винятки, дозволяють ОС обробляти незвичайні події, такі як помилки поділу на нуль, що виникають від виконання коду.

Послідовність подій зазвичай така:

  1. Обладнання сигналізує про переривання процесору
  2. Процесор помічає перерву та призупиняє діюче в даний час програмне забезпечення
  3. Процесор переходить до відповідної функції обробника переривань в ОС
  4. Обробник переривання виконує свій хід і повертається з переривання
  5. Процесор поновлюється там, де він припинився в раніше запущеному програмному забезпеченні

Найголовніше переривання для операційної системи - це переривання галочки таймера. Переривання таймера дозволяє операційній системі періодично відновлювати контроль від поточного користувальницького процесу. Потім ОС може вирішити запланувати інший процес, повернутися до того самого процесу, вести господарство тощо. Переривання галочки таймера забезпечує основу для концепції попереджувальної багатозадачності.


4

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

У процесорі є якийсь механізм прослуховування перерв, а також деякий спосіб налаштування "що робити", коли трапляються перебої різного типу. Це дозволяє операційній системі домовитись про те, що вона буде отримувати сповіщення, коли апаратні пристрої роблять щось (включаючи все важливі апаратні годинники, які просто генерують переривання через регулярні проміжки часу). Завдяки конфігурації обробки переривань процесора, позначений код в ОС буде отримувати контроль, коли трапляються переривання.

Комп’ютер знаходиться в дуже неприємному стані (для програміста програми), коли почне працювати обробник переривань; машина була зайнята чимось іншим (що може бути чим завгодно ), і тепер ОС повідомила, що "щось сталося". Він повинен зібрати будь-яку іншу інформацію, необхідну для фактичного втручання переривання з будь-якого місця в машині, він повинен лежати і робити будь-яку обробку, яка потрібна, не заважаючи, що "може бути все", що працює на процесорі. Якщо ОС хоче переключити, який додаток зараз працює, йому доведеться зберегти достатньо контексту для подальшого відновлення (знову ж таки, не порушуючи цього контексту), а потім завантажте інший контекст, а потім нехай процесор відновиться нормально виконання в цьому контексті.

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

Отже, по суті, так, ОС керується перебоями. "Абстрактна" ОС завантажує машину в стан "нормальної роботи" і в якийсь момент передає управління "нормальному" процесу. За звичайних обставин ОС поверне собі контроль лише шляхом перерв; але оскільки майже нічого цікавого не відбувається без перерви, ОС в основному постійно контролює все.


3

Операційна система керується перебоями. Це означає що:

Якщо немає процесів для виконання, немає пристроїв вводу / виводу для обслуговування, і немає користувачів, яким би відповісти, операційна система буде сидіти спокійно, чекаючи, що щось станеться. Події майже завжди сигналізуються про виникнення переривання або пастки, пастка - це апаратне переривання, що генерується, коли дається недійсна інструкція, а потім вона повертає управління в ОС.

Приклад недійсної інструкції - це коли програма намагається отримати доступ до пам’яті іншої програми, не маючи дозволу.


перерви не завжди повинні бути чимось поганим або недійсним, як ви описали

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