
- •Конспект лекцій по дисципліні
- •Ос загального призначення
- •Мікроядерна архітектура
- •Переваги мікроядерної архітектури
- •Блокування пам'яті.
- •Перевірка й установка.
- •Семафори.
- •Поштові скриньки.
- •Програмні переривання
- •Системні виклики
- •Типи адрес
- •Алгоритми розподілу пам'яті
- •Забезпечення зручного логічного інтерфейсу між пристроями й іншою частиною системи
- •Підтримка широкого спектра драйверів і простота включення нового драйвера в систему
- •Динамічне завантаження й вивантаження драйверів
Програмні переривання
Програмне переривання реалізує один зі способів переходу на підпрограму за допомогою спеціальної інструкції процесора, такий як INT у процесорах Intel Pentium, trap у процесорах Motorola, і т.п.
При виконанні команди програмного переривання процесор відпрацьовує ту ж послідовність дій, що й при виникненні зовнішнього або внутрішнього переривання, але тільки відбувається це в передбачуваній точці програми — там, де програміст помістив дану команду.
Практично всі сучасні процесори мають у системі команд інструкції програмних переривань.
Програмні переривання часто використовуються для виконання обмеженої кількості викликів функцій ядра операційної системи, тобто системних викликів.
Диспетчеризація й приоритезація переривань в ОС
Переривання виконують корисну для обчислювальної системи функцію - дозволяють реагувати на асинхронні стосовно обчислювального процесу події.
Переривання створюють додаткові труднощі для ОС в організації обчислювального процесу.
Для впорядкування роботи оброблювачів переривань в ОС застосовується той же механізм, що й для впорядкування роботи користувальницьких процесів – механізм пріоритетних черг. Всі джерела переривань діляться на кілька класів, причому кожному класу присвоюються пріоритет. В ОС виділяється програмний модуль, що займається диспетчеризацією оброблювачів переривань. Цей модуль у різних ОС називається по-різному, ми на самому початку визначимо його, як диспетчер переривань.
При виникненні переривання диспетчер переривань викликається першим. Він забороняє га якийсь час всі переривання, і з'ясовує причину переривання. Потім рівняється пріоритет джерела переривання з поточним пріоритетом потоку команд, виконуваних процесором. Якщо пріоритет нового запиту вище поточного, то виконання поточного потоку припиняється й виконується обробка переривання. У противному випадку запит ставиться в чергу.
Процедури обробки переривань і поточний процес
Важливою особливістю процедур, виконуваних по запитах переривань, є те, що вони виконують роботу, найчастіше ніяк не пов'язану з поточним процесом.
Наприклад, драйвер диска може одержати керування після того, як контролер диска записав у відповідні сектори інформацію, отриману від процесу А, але цей момент часу, не збіжиться з періодом чергової ітерації виконання процесу А або його потоку.
У найбільш типовому випадку процес А буде перебувати в стані очікування завершення операції вводу-виводу (при синхронному режимі виконання цієї операції) і драйвер диска перерве який-небудь інший процес.
У деяких випадках взагалі важко однозначно визначити, для якого процесу виконує роботу той або інший програмний модуль ОС, наприклад планувальник потоків. Тому для такого роду процедур уводяться обмеження - вони не мають права використовувати ресурси (пам'ять, відкриті файли й т.п.), з якими працює поточний процес.
Процедури обробки переривань працюють із ресурсами, які були виділені їм при ініціалізації відповідного драйвера або ініціалізації самої операційної системи. Ці ресурси належать ОС, а не конкретному процесу. Так пам'ять драйверам виділяється із системної області. Тому звичайно говорять, що процедури обробки перериванні працюють поза контекстом процесу.
Диспетчеризація переривань є важливою функцією ОС, і ця функція реалізована практично у всіх мультипрограмних ОС. Як правило, в ОС реалізується дворівневий механізм планування робіт. Верхній рівень планування виконується диспетчером переривань, що розподіляє процесорний час між потоком вступників запитів на переривання різних типів - зовнішніх, внутрішніх і програмних. процесорний час, Що Залишився, розподіляється іншим диспетчером - диспетчером потоків, на підставі дисциплін квантування й інших, які ми розглядали.