Теорія операційної системи

:: Меню ::

Головна
Представлення даних в обчислювальних системах
Машинні мови
Завантаження програм
Управління оперативною пам'яттю
Сегментна і сторінкова віртуальна пам'ять
Комп'ютер і зовнішні події
Паралелізм з точки зору програміста
Реалізація багатозадачності на однопроцесорних комп'ютерах  
Зовнішні пристрої
Драйвери зовнішніх пристроїв
Файлові системи
Безпека
Огляд архітектури сучасних ОС

:: Друзі ::

Карта сайту
 

:: Статистика ::

 

 

 

 

 

Семафори і переривання

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


:: Реклама ::

 

:: Посилання ::


 

 

 


Copyright © Kivik, 2017