配置功能選項
中斷流程
連線ioapic引腳的裝置觸發中斷
檢測delivery status是否為0,不是0則等待,否則設其為1 (sent pending)
將中斷傳送至對應的cpu
cpu響應中斷
對於level觸發的中斷,設定irr為1,並等待cpu觸發eoi,再將irr復位0
delivery status置位0。到此時,方可繼續響應此條線上的中斷
每個cpu都有local apic,接收ioapic的資料
相應中斷的流程
判斷接收到的中斷目的是否為本cpu,如果不是則丟棄
如果非fixed型別的中斷則直接傳給cpu
irr->isr->cpu
cpu觸發eoi,local apic處理此eoi並將之傳給ioapic,完成此次中斷的處理
cpu對中斷和異常的處理
異常的分類
遮蔽中斷/異常
可在特權層有條件地遮蔽掉某些異常
中斷處理流程(以x86-64為例)
找到中斷處理程式
切換堆疊
儲存環境
$iret
set_intr_gate()
vsset_intr_gate_ist()
set_intr_gate()
vsset_system_intr_gate()
異常處理
中斷初始化
中斷處理
裝置中斷的處理
6 中斷和異常
問題 早期的計算機各程式只能序列執行,系統資源利用率低。解決 發明了作業系統,引入中斷機制,實現多道程式併發執行。本質 傳送中斷意味著需要作業系統的介入,開展管理工作。將多道程式 3個程式 同時放入到記憶體,各個程式併發執行 程序1在使用者態下執行,一段時間後cpu收到計時部件發出的中斷訊號,切換為...
Linux核心學習筆記五 中斷推後處理機制
硬體通過中斷與作業系統進行通訊,通過對硬體驅動程式處註冊中斷處理程式,快速響應硬體的中斷。硬體中斷優先順序很高,打斷當前正在執行的程式。有兩種情況 硬體中斷在中斷處理程式中處理 硬體中斷延後再進行處理 這個具體硬體相關,在中斷處理程式中處理,打斷了當前正在執行的程式 所有中斷都將被遮蔽 如果占用時間...
Linux核心 異常和中斷的區別
相信大家都知道非常著名的兩個名詞 異常和中斷,不過,你真的理解這兩個名詞在說什麼嗎?它們之間有什麼區別呢?1.中斷 大家都知道,當我們在敲擊鍵盤的同時就會產生中斷,當硬碟讀寫完資料之後也會產生中斷,所以,我們需要知道,中斷是由硬體裝置產生的,而它們從物理上說就是電訊號,之後,它們通過中斷控制器傳送給...