1. 程式人生 > >x86中斷架構

x86中斷架構

    x86計算機的 CPU 為中斷只提供了兩條外接引腳:NMI 和 INTR。

1. 可程式設計中斷控制器8259A


8259A 只適合單 CPU 的情況。

每個CPU都有一個本地APIC,所有本地APIC連線到IO APIC。主要是收集來自 I/O 裝置的 Interrupt 訊號且在當那些裝置需要中斷時傳送訊號到本地 APIC,系統中最多可擁有 8 個 I/O APIC。

一個本地定時裝置以及為本地中斷保留的兩條額外的 IRQ 線 LINT0 和 LINT1。所有本地 APIC 都連線到 I/O APIC,形成一個多級 APIC 系統,如圖 2 所示。


使用方式:

1) 作為一種標準的 8259A 工作方式。本地 APIC 被禁止,外部 I/O APIC 連線到 CPU,兩條 LINT0 和 LINT1 分別連線到 INTR 和 NMI 引腳。

2) 作為一種標準外部 I/O APIC。本地 APIC 被啟用,且所有的外部中斷都通過 I/O APIC 接收。

辨別一個系統是否正在使用 I/O APIC,可以在命令列輸入如下命令:
# cat /proc/interrupts
           CPU0       
  0:      90504    IO-APIC-edge  timer
  1:        131    IO-APIC-edge  i8042
  8:          4    IO-APIC-edge  rtc
  9:          0    IO-APIC-level  acpi
 12:        111    IO-APIC-edge  i8042
 14:       1862    IO-APIC-edge  ide0
 15:         28    IO-APIC-edge  ide1
177:          9    IO-APIC-level  eth0
185:          0    IO-APIC-level  via82cxxx
...
如果輸出結果中列出了 IO-APIC,說明您的系統正在使用 APIC。如果看到 XT-PIC,意味著您的系統正在使用 8259A 晶片。