Головна

переривання

  1. ВВЕДЕННЯ-ВИВЕДЕННЯ ПО ПРЕРИВАНІЯЮ
  2. ПИТАННЯ 16) Організація переривання процесора.
  3. Виконання підпрограми переривання.
  4. Як і коли опитуються прапори запитів на переривання? По зрізу АЛІ а 5том стані
  5. Медичними показаннями для штучного переривання бере-менности
  6. Методи штучного переривання вагітності.
  7. Механізм переривань. Переривання по рівню (організація, обробка, застосування)

Переривання являють собою механізм, що дозволяє координувати паралельне функціонування окремих пристроїв обчислювальної системи і реагувати на особливі стани, що виникають при роботі процесора. Таким чином, переривання - це примусова передача управління від виконуваної програми до системи (а через неї - до відповідної програми обробки переривання), яка відбувається при виникненні певної події.

1 CPU (Central processing unit) - центральне обробляє пристрій або просто процесор.


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

Механізм переривань реалізується апаратно-програмними засобами. Структури систем переривання (в залежності від апаратної архітектури) можуть бути самими різними, але всі вони мають одну загальну особливість - переривання неодмінно тягне за собою зміну порядку виконання команд процесором. Механізм обробки переривань незалежно від архітектури обчислювальної системи включає наступні елементи:

1. Встановлення факту переривання (прийом сигналу на переривання) і иденти
 фикация переривання (в операційних системах іноді здійснюється за
 повторно, на кроці 4).

2. Запам'ятовування стану перерваного процесу. Стан процесу визначаються
 ється насамперед значенням лічильника команд (адресою наступної команди,
 який, наприклад, в 180x86 визначається регістрами CS і IP - покажчиком
 команди [2, 22, 84]), вмістом регістрів процесора і може включати
 також специфікацію режиму (наприклад, режим призначений для користувача або при
 привілейованих) і іншу інформацію.

3. Управління апаратно передається підпрограмі обробки переривання. У про
 Стейша випадку в лічильник команд заноситься початкова адреса підпрограми
 обробки переривань, а у відповідні регістри - інформація з сло
 ва стану. У більш розвинених процесорах, наприклад в тому ж i80286 і по
 наступних 32-бітових мікропроцесорах, починаючи з i80386, здійснюється
 досить складна процедура визначення початкової адреси відповідаю
 щей підпрограми обробки переривання і не менш складна процедура
 ініціалізації робочих регістрів процесора (див. розділ «Система прерива
 ний 32-розрядних мікропроцесорів i80x86 », глава 3).

4. Збереження інформації про перерваної програми, яку не вдалося спа
 сти на кроці 2 за допомогою дій апаратури. У деяких обчислювач
 них системах передбачається запам'ятовування досить великого обсягу
 інформації про стан перерваного процесу.

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

6. Відновлення інформації, що відноситься до перерваного процесу (етап,
 зворотний кроку 4).

7. Повернення в перервану програму.

Кроки 1-3 реалізуються апаратно, а кроки 4-7 - програмно. На рис. 1.4 показано, що при виникненні запиту на переривання природний хід обчислень порушується і управління передається програмі обробки виниклого переривання. При цьому засобами апаратури зберігається (як правило, за допомогою механізмів стековой пам'яті) адреса тієї команди, з якою


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

Отже, головні функції механізму переривань:

Q розпізнавання або класифікація переривань;

Q передача управління відповідно оброблювачу переривань;

Q коректне повернення до перерваної програми.

Перехід від переривається програми до обробника і назад повинен виконуватися як можна швидше. Одним з швидких методів є використання таблиці, яка містить перелік усіх допустимих для комп'ютера переривань і адреси відповідних обробників. Для коректного повернення до перерваної програми перед передачею управління обробникові переривань вміст регістрів процесора запам'ятовується або в пам'яті з прямим доступом, або в системному стеці - system stack.

Переривання, що виникають при роботі обчислювальної системи, можна розділити на два основні класи: зовнішні (їх іноді називають асинхронними) і внутрішні (синхронні).

зовнішні переривання викликаються асинхронними подіями, які відбуваються поза переривається процесу, наприклад:

Q переривання від таймера;

Q переривання від зовнішніх пристроїв (переривання по вводу / виводу);


Q переривання по порушенню харчування;

Q переривання з пульта оператора обчислювальної системи;

Q переривання від іншого процесора або іншої обчислювальної системи.

внутрішні переривання викликаються подіями, які пов'язані з роботою процесора і є синхронними з його операціями. Прикладами є наступні запити на переривання:

Q при порушенні адресації (в адресній частині виконуваної команди вказано заборонений або неіснуючу адресу, звернення до відсутнім сегменту або сторінці при організації механізмів віртуальної пам'яті);

Про при наявності в поле коду операції незадіяною двійковій комбінації;

Q при розподілі на нуль;

Q при переповненні або зникненні порядку;

Q при виявленні помилок парності, помилок у роботі різних пристроїв апаратури засобами контролю.

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

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

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


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

Програмне управління спеціальними регістрами маски (маскування сигналів переривання) дозволяє реалізувати різні дисципліни обслуговування:

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

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

Q по принципом стека, або, як іноді кажуть, з дисципліни LCFS (Last come first served - останнім прийшов - першим обслужений), тобто запити з бо-



леї низьким пріоритетом можуть переривати обробку переривання з більш високим пріоритетом. Дли цього необхідно не накладати маски ні на один сигнал переривання і не виключати систему переривань.

Слід особливо відзначити, що для правильної реалізації останніх двох дисциплін потрібно забезпечити повне маскування системи переривань при виконанні кроків 1-4 і 6-7. Це необхідно для того, щоб не втратити запит і правильно його обслужити. Багаторівневе переривання повинно відбуватися на етапі власне обробки переривання, а не на етапі переходу з одного процесу на інший.

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

Як ми вже знаємо, коли з'явиться відповідний запит на переривання система переривань ідентифікує сигнал і, якщо переривання дозволені, управління передається на відповідну підпрограму обробки. З рис. 1.4 видно, що в підпрограмі обробки переривання є дві службові секції. Це - перша секція, в якій здійснюється збереження контексту перерваної завдання, який не зміг бути збережений на 2-му кроці, і остання, заключна секція, в якій, навпаки, здійснюється відновлення контексту. Для того щоб система переривань не зреагувала повторно на сигнал запиту на переривання, вона зазвичай автоматично «закриває» (відключає) переривання, тому необхідно потім в підпрограмі обробки переривань знову включати систему переривань. Установка розглянутих режимів обробки переривань (з відносними і абсолютними пріоритетами, і за правилом LCFS) здійснюється в кінці першої секції підпрограми обробки. Таким чином, на час виконання центральної секції (в разі роботи в режимах з абсолютними пріоритетами і по дисципліні LCFS) переривання дозволені. На час роботи заключній секції підпрограми обробки система переривань повинна бути відключена і після відновлення контексту знову включена. Оскільки ці дії необхідно виконувати практично в кожній підпрограмі обробки переривань, у багатьох операційних системах перші секції підпрограм обробки переривань виділяються в спеціальний системний програмний модуль, званий супервизором переривань.

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


повнити дії, пов'язані з обслуговуванням даного (поточного) запиту на переривання. Нарешті, перед тим як передати управління цією підпрограми, супервізор переривань встановлює необхідний режим обробки переривання. Після виконання підпрограми обробки переривання управління знову передається супервізору, на цей раз вже на той модуль, який займається диспетчеризацією задач (див. Розділ «Якість диспетчеризації і гарантії обслуговування», глава 2). І вже диспетчер задач, в свою чергу, відповідно до прийнятого режимом розподілу процесорного часу (між виконуються процесами) відновить контекст того завдання, якою буде вирішено виділити процесор. Розглянута нами схема проілюстрована на рис. 1.6.

Як ми бачимо з рис. 1.6, тут немає безпосереднього повернення в перервану раніше програму безпосередньо з самої підпрограми обробки переривання. Для прямого безпосереднього повернення досить адресаповернення зберегти в стеку, що і робить апаратура процесора. При цьому стек легко забезпечує можливість повернення в разі вкладених переривань, оскільки він завжди реалізує дисципліну LCFS (last come - first served).

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


переривається процесу безпосередньо в його дескрипторі, тобто дескриптор процесу (принаймні його частина) стає структурою даних, яку підтримує апаратура.

Для повного розуміння принципів створення і механізмів реалізації розглянутих далі сучасних ОС необхідно знати архітектуру персональних комп'ютерів і, зокрема, особливості системи переривання. Це питання більш детально розглянуто в розділі 4 «Управління вводом / виводом і файлові системи», присвяченому архітектурі мікропроцесорів 180x86.



Процеси і треди | Основні види ресурсів

ЧАСТИНА I Операційні | Системи і середовища | Поняття операційного середовища | Поняття обчислювального процесу і ресурсу | Діаграма станів процесу | Реалізація поняття послідовного процесу в ОС | Класифікація операційних систем |

© um.co.ua - учбові матеріали та реферати