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