Linux 核心學習 6 中斷和異常處理

2021-10-13 15:33:32 字數 782 閱讀 1345

配置功能選項

中斷流程

連線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.中斷 大家都知道,當我們在敲擊鍵盤的同時就會產生中斷,當硬碟讀寫完資料之後也會產生中斷,所以,我們需要知道,中斷是由硬體裝置產生的,而它們從物理上說就是電訊號,之後,它們通過中斷控制器傳送給...