W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
盡管一些設(shè)備可只使用它們的 I/O 區(qū)來控制, 大部分真實的設(shè)備比那個要復(fù)雜點. 設(shè)備不得不和外部世界打交道, 常常包括諸如旋轉(zhuǎn)的磁盤, 移動的磁帶, 連到遠(yuǎn)處的線纜, 等等. 很多必須在一個時間片中完成, 不同于, 并且遠(yuǎn)慢于處理器. 因為幾乎一直是不希望使處理器等待外部事件, 對于設(shè)備必須有一種方法使處理器知道有事情發(fā)生了.
當(dāng)然, 那種方法是中斷. 一個中斷不過是一個硬件在它需要處理器的注意時能夠發(fā)出的信號. Linux 處理中斷非常類似它處理用戶空間信號的方式. 對大部分來說, 一個驅(qū)動只需要為它的設(shè)備中斷注冊一個處理函數(shù), 并且當(dāng)它們到來時正確處理它們. 當(dāng)然, 在這個簡單圖像之下有一些復(fù)雜; 特別地, 中斷處理有些受限于它們能夠進行的動作, 這是它們?nèi)绾芜\行而導(dǎo)致的結(jié)果.
沒有一個真實的硬件設(shè)備來產(chǎn)生中斷, 就難演示中斷的使用. 因此, 本章使用的例子代碼使用并口工作. 這些端口在現(xiàn)代硬件上開始變得稀少, 但是, 運氣地, 大部分人仍然能夠有一個有可用的端口的系統(tǒng). 我們將使用來自上一章的簡短模塊; 添加一小部分它能夠產(chǎn)生并處理來自并口的中斷. 模塊的名子, short, 實際上意味著 short int ( 它是 C, 對不?), 來提醒我們它處理中斷.
但是, 在我們進入主題之前, 是時候提出一個注意事項. 中斷處理, 由于它們的特性, 與其他的代碼并行地運行. 因此, 它們不可避免地引起并發(fā)問題和對數(shù)據(jù)結(jié)構(gòu)和硬件的競爭. 如果你屈服于誘惑以越過第 5 章的討論, 我們理解. 但是我們也建議你轉(zhuǎn)回去并且現(xiàn)在看一下. 一個堅實的并發(fā)控制技術(shù)的理解是重要的, 在使用中斷時.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: