淺談Linux之中斷系統(tǒng)
中斷意味著在處理器執(zhí)行程序時(shí)會(huì)出現(xiàn)突發(fā)情況, 此時(shí),處理器應(yīng)停止當(dāng)前任務(wù)并處理意外事件。 治療完成后會(huì)復(fù)發(fā)。 返回被中斷程序的開(kāi)始位置以繼續(xù)執(zhí)行。 我們知道微控制器有自己的中斷系統(tǒng)。 Linux系統(tǒng)如何實(shí)現(xiàn)中斷?
根據(jù)中斷的來(lái)源,可以分為內(nèi)部中斷和外部中斷;中斷的屏蔽性可分為可屏蔽中斷和不可屏蔽中斷;中斷的入口地址可分為向量中斷和非向量中斷等。對(duì)于Linux的中斷處理程序架構(gòu)來(lái)講,與單片機(jī)不同的它采用頂半部和底半部實(shí)現(xiàn)的,頂半部是處理緊急的硬件操作,底半部是延緩的耗時(shí)操作。也就是說(shuō)頂半部主要是對(duì)中斷的前期處理,比如記錄中斷號(hào),處理中斷信息等。底半部則是處理程序所有的事情。Linux中斷函數(shù)的主要包括,申請(qǐng)中斷→釋放中斷→使能中斷→屏蔽中斷→中斷隊(duì)列函數(shù)等。
對(duì)于中斷來(lái)講可謂是所有嵌入式系統(tǒng)的必須具備的,因?yàn)槟壳笆忻娴牟僮飨到y(tǒng)的對(duì)實(shí)時(shí)性要求很高,如果采用流水式或者時(shí)間片輪轉(zhuǎn)的方法很難達(dá)到理想的效果。所以任何一個(gè)嵌入式工程師都應(yīng)該對(duì)中斷系統(tǒng)了如指掌。