深入剖析linux中斷機制_第1頁
已閱讀1頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、深入剖析深入剖析LinuxLinux中斷機制中斷機制--中斷概述--中斷概述【摘要】本文詳解了Linux內核的中斷實現(xiàn)機制。首先介紹了中斷的一些基本概念,然后分析了面向對象的Linux中斷的組織形式、三種主要數(shù)據結構及其之間的關系。隨后介紹了Linux處理異常和中斷的基本流程,在此基礎上分析了中斷處理的詳細流程,包括保存現(xiàn)場、中斷處理、中斷退出時的軟中斷執(zhí)行及中斷返回時的進程切換等問題。最后介紹了中斷相關的API,包括中斷注冊和釋放、中

2、斷關閉和使能、如何編寫中斷ISR、共享中斷、中斷上下文中斷狀態(tài)等。【關鍵字】中斷,異常,hw_interrupt_type,irq_desc_t,irqaction,asm_do_IRQ,軟中斷,進程切換,中斷注冊釋放request_irq,free_irq,共享中斷,可重入,中斷上下文1中斷概述1.1為什么需要中斷?處理器的速度跟外圍硬件設備的速度往往不在一個數(shù)量級上,因此,如果內核采取讓處理器向硬件發(fā)出一個請求,然后專門等待回應的辦

3、法,顯然差強人意。既然硬件的響應這么慢,那么內核就應該在此期間處理其他事務,等到硬件真正完成了請求的操作之后,再回過頭來對它進行處理。想要實現(xiàn)這種功能,輪詢(polling)可能會是一種解決辦法??梢宰寖群硕ㄆ趯υO備的狀態(tài)進行查詢,然后做出相應的處理。不過這種方法很可能會讓內核做不少無用功,因為無論硬件設備是正在忙碌著完成任務還是已經大功告成,輪詢總會周期性地重復執(zhí)行。更好的辦法是由我們來提供一種機制,讓硬件在需要的時候再向內核發(fā)出信號

4、(變內核主動為硬件主動)。這就是中斷機制。1.2中斷的表示形式硬件設備生成中斷的時候并不考慮與處理器的時鐘同步—換句話說就是中斷隨時可以產生。因此,內核隨時可能因為新到來的中斷而被打斷。從物理學的角度看,中斷是一種電信號,由硬件設備生成,并直接送入中斷控制器的輸入引腳上。然后再由中斷控制器向處理器發(fā)送相應的信號。處理器一經檢測到此信號,便中斷自己的當前工作轉而處理中斷。此后,處理器會通知操作系統(tǒng)已經產生中斷,這樣,操作系統(tǒng)就可以對這個中

5、斷進行適當?shù)奶幚砹?。同步總是返回到下一條指令故障潛在可恢復的錯誤同步返回到當前指令終止不可恢復的錯誤同步不會返回在處理器執(zhí)行到由于編程失誤而導致的錯誤指令(例如被0除)的時候,或者是在執(zhí)行期間出現(xiàn)特殊情況(例如缺頁),必須靠內核來處理的時候,處理器就會產生一個異常。因為許多處理器體系結構處理異常與處理中斷的方式類似,因此,內核對它們的處理也很類似。通過軟中斷實現(xiàn)系統(tǒng)調用,那就是陷人內核,然后引起一種特殊的異?!到y(tǒng)調用處理程序異常。你將

6、會看到,中斷的工作方式與之類似,其差異只在于中斷是由硬件而不是軟件引起的。1.4中斷處理程序在響應一個特定中斷的時候,內核會執(zhí)行一個函數(shù),該函數(shù)叫做中斷處理程序(interrupthler)或中斷服務例程(interruptserviceroutineISR)。產生中斷的每個設備都有一個相應的中斷處理程序。在Linux中,中斷處理程序看起來就是普普通通的C函數(shù)。只不過這些函數(shù)必須按照特定的類型聲明,以便內核能夠以標準的方式傳遞處理程序的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論