x86中斷架構
阿新 • • 發佈:2019-01-30
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 ...