Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект по ОС.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
940.03 Кб
Скачать

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

Програмне переривання реалізує один зі способів переходу на підпрограму за допомогою спеціальної інструкції процесора, такий як INT у процесорах Intel Pentium, trap у процесорах Motorola, і т.п.

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

Практично всі сучасні процесори мають у системі команд інструкції програмних переривань.

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

Диспетчеризація й приоритезація переривань в ОС

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

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

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

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

Процедури обробки переривань і поточний процес

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

Наприклад, драйвер диска може одержати керування після того, як контролер диска записав у відповідні сектори інформацію, отриману від процесу А, але цей момент часу, не збіжиться з періодом чергової ітерації виконання процесу А або його потоку.

У найбільш типовому випадку процес А буде перебувати в стані очікування завершення операції вводу-виводу (при синхронному режимі виконання цієї операції) і драйвер диска перерве який-небудь інший процес.

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

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

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