linux中断机制的处理过程(linux中断机制)
linux如何強(qiáng)制中斷?
llinux強(qiáng)制中斷的命令有以下兩個(gè):
linux停止命令方法一
終止當(dāng)前正在執(zhí)行的某個(gè)命令最快的方法是按下組合鍵“Ctrl+C”。這個(gè)方法只有在用戶能夠從某個(gè)虛擬控制臺(tái)上控制這個(gè)程序的時(shí)候才奏效。
linux停止命令方法二
終止某個(gè)出錯(cuò)程序的另外一個(gè)辦法是kill(殺)掉它的進(jìn)程。請(qǐng)按照下面的方法進(jìn)行操作:
1) 輸入“ps”命令獲取進(jìn)程的PID,這個(gè)命令要求你是運(yùn)行這個(gè)程序的那個(gè)人或者是根用戶。如果是根用戶,請(qǐng)輸入“ps -aux”命令查看所有的進(jìn)程,不管是誰擁有它們的。
2) 在清單中找到這個(gè)出錯(cuò)進(jìn)程。因?yàn)槌绦虻拿Q列在清單的最右邊,通常一眼就可以找到它。
3) 請(qǐng)記下ps命令輸出清單中進(jìn)程狀態(tài)行最左邊的ID數(shù)字。
4) 輸入“kill ID”,終止該進(jìn)程。
linux網(wǎng)絡(luò)中斷?
一、最簡單的中斷機(jī)制
最簡單的中斷機(jī)制就是像芯片手冊(cè)上講的那樣,在中斷向量表中填入跳轉(zhuǎn)到對(duì)應(yīng)處理函數(shù)的指令,然后在處理函數(shù)中實(shí)現(xiàn)需要的功能中斷源:引起中斷的原因或者說發(fā)出中斷請(qǐng)求的來源叫做中斷源
**中斷類型:**外部中斷,內(nèi)部中斷。 外部中斷一般指外設(shè)發(fā)出的中斷請(qǐng)求,可以屏蔽;內(nèi)部中斷是指因硬件出錯(cuò)或者運(yùn)算邏輯出錯(cuò)引起的中斷,也叫異常,不可屏蔽。
中斷處理:
linux把中斷處理分為兩半,上下半部處理
上半部:處理非常緊急的事情 ,不可被其他中斷打斷的。如敏感時(shí)間、CPU邏輯、硬件狀態(tài)處理,這部分要非常快的完成,這部分中所有中斷被屏蔽
下半部:將中斷中不非常緊急的處理延后到一個(gè)合適的時(shí)間執(zhí)行 ,如把讀到的數(shù)據(jù)放到隊(duì)列
上下半部的處理主要區(qū)別是在于中斷是否被屏蔽,下半部主要由上半部安裝調(diào)度:
中斷服務(wù)函數(shù)里加了延遲會(huì)怎么樣?
1,中斷處理程序中不能使用有睡眠功能的函數(shù),如ioremap,kmalloc,msleep等,理由是中斷程序并不是進(jìn)程,沒有進(jìn)程的概念,因此就沒有休眠的概念;
2,中斷處理程序中的延時(shí)可以用忙等待函數(shù)來代替,如ndelay,udelay,mdelay等,這些函數(shù)在實(shí)現(xiàn)上本質(zhì)是根據(jù)CPU頻率進(jìn)行一定次數(shù)的循環(huán);最好不要使用mdelay,因?yàn)楹撩胙訒r(shí)對(duì)內(nèi)核來說已經(jīng)是非常大了。但是在中斷處理程序中使用msleep卻不行。(見linux設(shè)備驅(qū)動(dòng)開發(fā)詳解第二版p210頁)
3,printk函數(shù)在中斷處理函數(shù)中可以使用,但是會(huì)占用較多時(shí)間,降低效率。在調(diào)IIC驅(qū)動(dòng)的時(shí)候,由于IIC讀取寫入處理時(shí)必須進(jìn)行一定延時(shí),在我沒有使用udelay的時(shí)候,竟然用printk就使IIC中斷正常運(yùn)行,當(dāng)時(shí)在調(diào)試的時(shí)候,發(fā)現(xiàn)有些printk加上程序就正常,去掉就不正常,當(dāng)時(shí)真是匪夷所思,但現(xiàn)在明白了,因此printk占用時(shí)間比較大,正好充當(dāng)了IIC延時(shí)的功能。最后我把printk全部去掉,在需要延時(shí)的地方加入udelay,才使程序正常運(yùn)行。
4,使用for和while等的空循環(huán)在中斷處理函數(shù)中進(jìn)行延時(shí)操作,在實(shí)際測(cè)試中發(fā)現(xiàn)并不能起到延時(shí)的功能,linux內(nèi)核處理這種循環(huán)速度很快,并沒有延時(shí)的效果。這跟裸板程序使用循環(huán)來延時(shí)的用法不相同。
總結(jié)
以上是生活随笔為你收集整理的linux中断机制的处理过程(linux中断机制)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python学什么版本2020年_202
- 下一篇: action mutation 调用_V