Linux 2 6 核心閱讀筆記 中斷和異常

2021-06-22 22:06:59 字數 1207 閱讀 7080

2023年7月24日 中斷門、陷阱門及中斷門

中斷是可以禁止的,可以通過告訴pic停止對某個中斷的發布。被禁止的中斷是不會丟失的,在解除禁止後又會傳送到cpu上。

禁止中斷和遮蔽(mask)中斷的不同之處是遮蔽是忽略掉某個中斷,而禁止相當於延遲傳送。

intel提供了三種型別的中斷描述符:任務門、中斷門及陷阱門描述。linux使用與inten稍有不同的細分分類和術語,把他們進行如下分類:

中斷門:使用者態程序不能訪問的乙個intel中斷門(dpl為0),所有的linux中斷處理程式都通過中斷門在核心態進行呼叫。

系統門:使用者態程序可以訪問的乙個intel陷阱門(dpl為3),通過系統門來訪問三個linux異常處理程式,在使用者態下可以通過三個彙編指令來訪問:into,bound,int $0x80。

系統中斷門:使用者態程序主要通過這個門來使用系統呼叫(dpl為3),通過int $3彙編指令來進入。

陷阱門:使用者態程序不能訪問的intel陷阱門(dpl為0),大部分linux異常處理程式通過這個門進入。

任務門:使用者態程序不能訪問的intel任務門(dpl為0),「double fault」(通常表示內後有嚴重的錯誤)異常使用通過這個門進入的。

2023年7月25日 中斷處理

中斷處理程式可以共享同一條irq線,每個從這條線來的中斷,核心會呼叫每乙個註冊這條線上的所有的irq線,由中斷處理程式判斷是否是自己期望的裝置的中斷並處理這個中斷。

在smp架構上,中斷的分發可以有兩種方式:

靜態分發:把中斷訊號傳遞給重定向表相應項所列出的本地apic。中斷立即傳遞給乙個特定的cpu,或一組cpu或所有cpu。

動態分發:選擇乙個正在執行程序優先順序最低的cpu。每個cpu的本地apic裡都有乙個仲裁優先順序暫存器,如果同時存在兩個以上相同優先順序的cpu,核心通過仲裁(arbitration)技術來分發中斷給某個cpu來增加公平性和負載均衡,每當中斷傳遞給乙個cpu時,其相應的仲裁優先順序自動置為0,其他每個cpu都優先順序都增加1。當仲裁優先順序暫存器大於15時,就把它置為獲勝cpu前乙個仲裁優先順序加1。

2023年7月26日 工作佇列

在linux2.6的核心中引入了工作佇列,用來代替2.4的任務佇列,工作佇列和中斷的可延遲函式類似,都只能執行在核心態並且不能訪問使用者態位址空間,主要不同在於可延遲函式執行在中斷上下文中,工作對列則是執行在進策劃那個上下文中(確切的說應該是核心執行緒的上下文)。工作佇列通過核心執行緒(kthread)和等待佇列(wait_queue)來實現。

Linux 2 6核心筆記 記憶體管理

4月14日 很多硬體的功能,物盡其用卻未必好過軟實現,linux出於可移植性及其它原因,常常選擇不去過分使用硬體特性。比如 linux只使用四個segment,分別是 user cs user ds kernel cs kernel ds,因為paging可以完成segmentation的工作,而且...

Linux2 6軟中斷分析

linux2.6 的軟中斷框架與 2.4相比有了一些不同 2.2之前的傳統bottom half已經幾乎沒有了,任務佇列被取消,軟中斷的呼叫時機也有所不同。下面分析一下 2.6軟中斷的框架。2.6中軟中斷還是由函式 do softirq 呼叫,但異常和系統呼叫返回 排程時不再執行軟中斷,執行時機變為...

Linux 2 6核心編譯,核心公升級

本文描述了在fc8下公升級linux核心為2.6.25的詳細步驟.1.首先從如下 得到linux 2.6.25.2.然後在 usr src下untar這個包.tar xjfv linux 2.6.25.tar.bz2 3.配置核心 cd usr src linux 2.6.25 make mrpro...