Як працюють пристрої вводу і переривання

Ваша клавіатура є дуже простим пристроєм; простим тому, що вона генерує дуже малу кількість даних і робить це, за комп’ютерними мірками, дуже повільно. Кожне натискання клавіші спричиняє так зване апаратне переривання, або перепин^1 .

Робота операційної системи полягає, крім усього, у слідкуванні за такими перепинами. Для всіх можливих видів перепинів є розроблені спеціальні підхоплювачі^2 — частини операційної системи, що опікуються даними, пов’язаними з відподним перепином, перед тим, як користувацька програма зможе їх обробити.

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

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

Кожен вид перепину має певний пріоритет. Перепини з низьким пріоритетом (як, наприклад, клавіатурні) повинні чекати, коли перепин з вищим пріоритетом (наприклад, дискові сигнали чи системний годинник) будуть оброблені. *nix-системи, до яких відноситься і Лінукс, спроектовані таким чином, щоб давати вищий пріоритет тим процесам, котрі повинні бути оброблені швидше для того, щоб забезпечити стабільну роботу системи.

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

Тут ми спробуємо дати відповідь на це запитання. IRQ – це скорочення від «interrupt request» (запит на перепин). Операційній системі під час завантаження потрібно знати, який номер IRQ використовує кожен пристрій для того, щоб асоціювати певний підхоплювач з певним пристроєм. Якщо IRQ налаштовано неправильно, перепин може призначитись невідповідному підхоплювачу. Як правило це блокує пристрій, а часом може навіть привести до «зависання» системи.

У наш час налаштування IRQ проходить автоматично, і алгоритми, які за це відповідають, досить вдало виконують свою роботу. Користувачу лише у справді рідкісних випадках може знадобитись вносити туди якісь корективи, здебільшого це може стосуватись роботи із старими ISA-пристроями або ж надання одним пристроям переваги над іншими. У всіх інших випадках Ви можете бути спокійні — ядра сучасних операційних систем уже навчились з легкістю справлятись із цим завданням.