windows中斷請求級(IRQL)

2021-05-21 19:35:57 字數 773 閱讀 8727

windows是完全按照模組化設計的,那麼它很重要的乙個概念就是「互動」。在linux中,沒有所謂的「互動」,如果非要對應乙個,那麼互動就是函式 呼叫,而windows的核心卻不是這樣簡單。這也許就是單核心和微核心的區別吧?windows是乙個基本的c/s模式的系統,核心裡面也不乏這樣的例 子,到處都是c/s的影子,不信你看,到處都是xx管理器。所以如果乙個模組需要乙個服務,那麼它就得請求乙個服務(訊息傳遞?)。

windows中將硬體中斷和部分系統級別的軟體執行緒都抽象成中斷,比如如果需要重新排程,那麼就請求乙個dispatch_level級別的中斷,但 是如果當前正在執行更高階別的中斷,那麼這個請求將被排隊。直到irql降低到dispatch_level之下。這就是說在 dispatch_level之上是不會發生執行緒切換的;另乙個例子,考慮缺頁異常,缺頁異常被影射到dispatch_level優先順序,也就是說在 dispatch_level之上的程式如果產生缺頁中斷,那麼核心將崩潰。

windows的這種做法有很多優點,比如:還記得linux的自旋鎖嗎?在單處理器環境下,如果核心非搶占,那麼什麼也不做,如果核心可搶占,那麼就禁 用搶占,這是linux的實現,在windows中根本沒有那麼複雜,實際上就是一句話就可以實現和自旋鎖一樣的效果,就是將cpu提公升到 dispatch_level優先順序(限於單處理器,這就禁用了搶占)。但是windows的這種做法也有弊端,就是越往上irql,就有越少的核心函式 可供使用,比如在isr裡面就不能用分頁記憶體,不能切換執行緒。兩種系統孰好孰懷,這是很愚蠢的問題,只能說windows的實現更加自洽(少量原則決定一切),而linux實現或許更加靈活

FIQ(快速中斷請求)和IRQ 外部中斷請求

快速中斷請求 fast interrupt request,fiq 在arm中,fiq模式是特權模式中的一種,同時也屬於異常模式一類。用於高速資料傳輸或通道處理,在觸發快速中斷請求 fiq 時進入。fiq和irq 外部中斷模式 之間有很大的區別。fiq模式必須盡快處理,處理結束後離開這個模式 irq...

windows中斷請求級(IRQL)

windows是完全按照模組化設計的,那麼它很重要的乙個概念就是 互動 在linux中,沒有所謂的 互動 如果非要對應乙個,那麼互動就是函式 呼叫,而windows的核心卻不是這樣簡單。這也許就是單核心和微核心的區別吧?windows是乙個基本的c s模式的系統,核心裡面也不乏這樣的例 子,到處都是...

中斷請求級

中斷請求級 在設計windows的時候,設計者3將中斷請求劃分為軟體中斷和硬體中斷,並將這些中斷都對映成不同級別的中斷請求級 irql 同步處理機制很大程度上依賴於中斷請求級。1.中斷請求 irq 與可程式設計中斷控制器 pic 中斷請求 irq 一般有兩種,一種是外部中斷,也就是硬體產生的中斷,另...