uawikipc.ru

Контролери переривань x64

Відео: # 6. Що таке регістри і переривання / 2. Введення в асемблер / Програмування з нуля

Оскільки архітектура x64 сумісна з операційними системами x86, системи x64 повинні надавати такі ж контролери переривань, що і системи x86. Але суттєва різниця полягає в тому, що x64-версії не будуть запускатися на системах, які не мають APIC, оскільки для управління переривань вони використовують APIC.

Відео: Відеоуроки по Arduino. Переривання (10-я серія, ч1)

зміст:

  • 1 Контролери переривань IA64
  • 2 Експеримент: перегляд PIC і APIC

Контролери переривань IA64

Архітектура IA64 залежить від модернізованого вдосконаленого програмованого контролера StreamlinedAdvancedProgrammableInterrupt Controller (SAPIC), який є результатом розвитку контролера APIC.

Відео: Лекція 278. Обмін даних по перериваннях

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

Експеримент: перегляд PIC і APIC

Конфігурацію PIC на однопроцессорной системі і поточного локального APIC на мультипроцессорной системі можна переглянути відповідно за допомогою команд відладчика ядра! Pic та! Apic. Висновок команди! Pic на однопроцессорной системі має такий вигляд.

(Слід врахувати, що команда! Pic в системі, що використовує APIC HAL, не працює.)

lkd>! pic

Відео: Системний Контролер Переривань Драйвер

----- IRQ Number ----- 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

Physically in service:. . . . . . . . . . . . . . . .



Physically masked:. . . Y. . Y Y. . Y. . Y. .

Physically requested:. . . . . . . . . . . . . . . .

Level Triggered:. . . . . Y. . . Y. Y. . . .

Далі йде висновок команди! Apic, запущеної на системі, що використовує APIC HAL. Врахуйте, що при локальної налагодженні ядра ця команда показує APIC, пов`язаний з поточним процесором, - інакше кажучи, з тим процесором, на якому був запущений потік відладчика при введенні команди. При перегляді аварійного дампа або віддаленої системи для перемикання на той процесор, чий локальне APIC потрібно переглянути, можна використовувати команду ~ (тильда) із зазначенням після неї номери процесора.

lkd>! apic

Apic @ fffe0000 ID: 0 (50014) LogDesc: 01000000 DestFmt: ffffffff TPR 20

TimeCnt: 00000000clk SpurVec: 3f FaultVec: e3 error: 0

Ipi Cmd: 01000000`0000002f Vec: 2F FixedDel Ph: 01000000 edg high

Timer ..: 00000000`000300fd Vec: FD FixedDel Dest = Self edg high m

Linti0 .: 00000000`0001003f Vec: 3F FixedDel Dest = Self edg high m

Linti1 .: 00000000`000004ff Vec: FF NMI Dest = Self edg high

TMR: 51-52, 62, A3, B1, B3

IRR:

ISR ::

Різні числа, наступні за мітками Vec, показують вектор в IDT, пов`язаний із заданою командою. Наприклад, в даному висновку переривання номер 0xFD пов`язано з APIC Timer, а переривання номер 0xE3 управляє помилками APIC. Оскільки цей експеримент був запущений на тій же самій машині, що і раніше проводився експеримент! Idt, можна помітити, що 0xFD є перериванням профілювання HAL (яке використовує таймер для профілювання інтервалів), а 0xe3, як і очікувалося, є обробником помилок локального APIC HAL .

Наступний висновок є результатом виконання команди! Ioapic, яка б показала конфігурацію APIC-контролерів вводу-виводу, компонентів контролера переривань, підключеного до пристроїв:

lkd>! ioapic

IoApic @ FEC00000 ID: 0 (51) Arb: A951

Inti00 .: 0000a951`0000a951 Vec: 51 LowestDl Lg: 0000a951 lvl low

Поділитися в соц мережах:
Схожі
» » Контролери переривань x64