linux 中断 进程,linux中断分上下部分原因
中斷處理程序在處理中斷時(shí)起到了關(guān)鍵作用,也是一個(gè)中斷程序必不可少的部分。不過(guò),現(xiàn)如今的中斷處理流程都會(huì)分為兩部分:上半部分(top half)和下半部分(bottom half)。為什么要將一個(gè)中斷分為如此兩部分?下面的幾個(gè)經(jīng)典原因可以很好的詮釋這個(gè)問(wèn)題。
1.中斷可以隨時(shí)的打斷處理機(jī)對(duì)其他程序的執(zhí)行,如果被打斷的代碼對(duì)系統(tǒng)很重要,那么此時(shí)中斷處理程序的執(zhí)行時(shí)間應(yīng)該是越短越好。
2.通過(guò)上文我們知道,中斷處理程序正在執(zhí)行時(shí),會(huì)屏蔽同條中斷線(xiàn)上的中斷請(qǐng)求;而更嚴(yán)重的是,如果設(shè)置了IRQF_DISABLED,那么該中斷服務(wù)程序執(zhí)行是會(huì)屏蔽所有其他的中斷請(qǐng)求。那么此時(shí)應(yīng)該讓中斷處理程序執(zhí)行的越快越好。
上面的幾個(gè)例子都要求中斷服務(wù)程序的執(zhí)行時(shí)間越短越好。一般的,中斷處理程序會(huì)在上半部分執(zhí)行。而事實(shí)上,幾乎所有的情況,上半部分就只執(zhí)行中斷處理程序。因此,我們可以這樣認(rèn)為:一個(gè)完整的中斷處理流程是由中斷處理程序和下半部分共同完成的。
這樣劃分是有一定原因的,因?yàn)槲覀儽仨氂幸粋€(gè)快速、異步而且簡(jiǎn)單的處理程序?qū)iT(mén)來(lái)負(fù)責(zé)對(duì)硬件的中斷請(qǐng)求做出快速響應(yīng),與此同時(shí)也要完成那些對(duì)時(shí)間要求很?chē)?yán)格的操作。而那些對(duì)時(shí)間要求相對(duì)寬松,其他的剩余工作則會(huì)在稍候的任意時(shí)間執(zhí)行,也就是在所謂的下半部分去執(zhí)行。
總之,這樣劃分一個(gè)中斷處理過(guò)程主要是希望減少中斷處理程序的工作量(當(dāng)然了,理想情況是將全部工作都拋給下半段。但是中斷處理程序至少應(yīng)該完成對(duì)中斷請(qǐng)求的相應(yīng)。),因?yàn)樵谒\(yùn)行期間至少會(huì)使得同級(jí)的中斷請(qǐng)求被屏蔽,這些都直接關(guān)系到整個(gè)系統(tǒng)的響應(yīng)能力和性能。而在下半段執(zhí)行期間,則會(huì)允許響應(yīng)所有的中斷。
和上半段只能通過(guò)中斷處理程序?qū)崿F(xiàn)不同的是,下半部可以通過(guò)多種機(jī)制來(lái)完成:小任務(wù)(tasklet),工作隊(duì)列,軟中斷。在本博客后續(xù)的文章當(dāng)中你會(huì)看到,不管是那種機(jī)制,它們均為下半部提供了一種執(zhí)行機(jī)制,比上半部靈活多了。至于何時(shí)執(zhí)行,則由內(nèi)核負(fù)責(zé)。
總結(jié)
以上是生活随笔為你收集整理的linux 中断 进程,linux中断分上下部分原因的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 锐骐正时皮带怎样对?
- 下一篇: mysql主从复制 火墙_MySQL高级