Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

spz / lect / lekc5_1_2_pereryv

.pdf
Скачиваний:
16
Добавлен:
23.02.2016
Размер:
214.98 Кб
Скачать

1

Події (переривання) - рушійна сила, що змінює стан процесів.

1.Механізм обробки переривань.

2.Функції механізму переривань.

3.Групи переривань.

4.Розподіл переривань по рівнях пріоритету.

5.Дисципліни обслуговування переривань.

6.Обробка переривань за участю супервізорів ОС.

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

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

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

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

— переривання неодмінне спричиняє зміну порядку виконання команд процесором.

Механізм обробки переривань незалежно від архітектури обчислювальної системи включає наступні елементи:

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

2.Запам'ятовування стану перерваного процесу. Стан процесу визначається насамперед значенням лічильника команд (адресою наступної команди, що, наприклад, в і80х86 визначається регістрами СS і ІР), умістом регістрів процесора і може включати також специфікацію режиму (наприклад, режим користувальницький, чи привілейований) і іншу інформацію.

3.Керування апаратно передається підпрограмі обробки переривання. У найпростішому випадку в лічильник команд заноситься початкова адреса

2

підпрограми обробки переривань, а у відповідні регістри — інформація зі слова стану. У більш розвитих процесорах, наприклад у тім же і80286 і наступних 32-бітових мікропроцесорах, починаючи з i80386, здійснюється досить складна процедура визначення початкової адреси відповідної підпрограми обробки переривання і не менш складна процедура ініціалізації робочих регістрів процесора .

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

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

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

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

Кроки 1-3 реалізуються апаратно, а кроки 4-7 — програмно.

Підпрограма обробки переривань

Переривання

Виконувана

програма

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

Власне тіло програми обробки переривання

Відновлення контексту перерваної раніше програми,

установка попереднього режиму роботи системи переривань

Рис. Обробка переривання

3

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

Однак така схема використовується тільки в найпростіших програмних середовищах. У мультипрограмних операційних системах обробка переривань відбувається по більш складних схемах.

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

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

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

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

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

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

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

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

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

переривання по порушенню живлення;

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

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

4

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

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

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

при діленні на нуль;

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

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

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

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

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

5

 

Засоби контролюпроцесора

Високий

 

пріоритет

 

 

 

 

 

 

 

 

Системний таймер

 

 

 

 

 

 

 

Магнітні диски

 

 

 

 

Зовнішні пристрої

Мережне обладнання

 

 

 

 

 

 

 

Термінали

Низький

 

 

 

 

Програмні переривання

 

пріоритет

 

 

 

 

Рис. Розподіл переривань по рівнях пріоритету

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

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

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

6

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

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

за принципом стека, чи, як іноді говорять, по дисципліні LCFS (1аst соme first served — останнім прийшов — першим обслугований), тобто запити з більш низьким пріоритетом можуть переривати обробку переривання з більш високим пріоритетом. Для цього необхідно не накладати маски ні на один сигнал переривання і не виключати систему переривань.

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

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

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

7

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

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

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

Переривання

Виконувана супервізор переривань

програма

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

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

8

Виконання коду підпрограми обробки переривання

Ця підпрограма вже не піклується про збереження контексту перерваного процесу

Диспетчер задач

Вибір готової до виконання задачі (на основі прийнятої дисципліни обслуговування)

Відновлення контексту перерваної раніше програми,

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

Рис. 1.6. Обробка переривання за участю супервізорів ОС

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

Соседние файлы в папке lect