uawikipc.ru

Відображення переривань на irql-рівні

Відео: Переривання Arduino, робота з регістрами

IRQL-рівні не можна ототожнювати із запитами на переривання (IRQ), певними контролерами переривань, - в архітектурі, на яких працює Windows, концепція IRQL на апаратному рівні не реалізована.

Як же тоді Windows визначає, який IRQL слід призначити переривання? Відповідь можна знайти в HAL. У Windows присутність пристроїв на шині (PCI, USB і т. Д.) І переривань, які можуть бути призначені цим пристроям, визначається таким типом драйвера пристрою, який називається драйвером шини.



Драйвер шини повідомляє цю інформацію диспетчеру пристроїв Plug and Play, який, з урахуванням допустимих призначення переривань для всіх інших пристроїв, вирішує, яке переривання буде призначено кожному пристрою. Потім їм викликається арбітр переривань Plug and Play, який відображає переривання на IRQL-рівні. (На системах, які не мають ACPI, використовується кореневої арбітр, а на ACPI-сумісних системах ACPI HAL має свій власний арбітр.)

Відео: Лекція 11: Переривання

Для різних HAL, включених в Windows, використовуються різні алгоритми призначення. На ACPI-системах (включаючи x86, x64 і IA64), HAL обчислює IRQL для заданого переривання шляхом ділення вектора переривання, призначеного IRQ на 16. Що ж стосується вибору вектора переривання для IRQ, це залежить від типу контролера переривання, наявного в системі.

На сучасних APIC-системах це число генерується в циклічному режимі, тому будь-якого способу обчислити IRQ на основі вектора переривання або IRQL не існує.

Відео: Лекція 13: Система переривань

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

Поділитися в соц мережах:
Схожі
» » Відображення переривань на irql-рівні