資源描述:
《中斷及中斷功能調(diào)用》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、7中斷及中斷功能調(diào)用主講:傅中君7中斷及中斷功能調(diào)用7.1中斷概述7.28086中斷系統(tǒng)7.3中斷功能調(diào)用概述7.4鍵盤輸入中斷調(diào)用7.5顯示器輸出中斷調(diào)用7.6磁盤文件管理7.1.1中斷的基本概念什么是中斷?與生活場(chǎng)景的比較正在看書電話鈴響接電話繼續(xù)看書執(zhí)行程序事件發(fā)生事件處理繼續(xù)執(zhí)行程序中斷處理中斷請(qǐng)求及響應(yīng)實(shí)際場(chǎng)景計(jì)算機(jī)中斷返回7.1概述中斷的定義CPU執(zhí)行程序時(shí),由于發(fā)生了某種隨機(jī)的事件(外部或內(nèi)部),引起CPU暫時(shí)中斷正在運(yùn)行的程序,轉(zhuǎn)去執(zhí)行一段特殊的服務(wù)程序(稱為中斷服務(wù)程序或中斷處理程序),以處理該事件,該事件處理完后
2、又返回被中斷的程序繼續(xù)執(zhí)行,這一過程稱為中斷。中斷源引起CPU中斷的事件——中斷源。例如:外設(shè)——請(qǐng)求輸入輸出數(shù)據(jù),報(bào)告故障等事件——掉電、硬件故障、軟件錯(cuò)誤、非法操作、定時(shí)時(shí)間到等中斷源分為:外部中斷、內(nèi)部中斷內(nèi)部中斷:CPU內(nèi)部執(zhí)行程序時(shí)自身產(chǎn)生的中斷外部中斷:CPU以外的設(shè)備、部件產(chǎn)生的中斷8086/8088的外部中斷信號(hào):INTR、NMIINTR——可屏蔽中斷請(qǐng)求,高電平有效,受IF標(biāo)志的控制。IF=1時(shí),執(zhí)行完當(dāng)前指令后CPU對(duì)它作出響應(yīng)。NMI——非屏蔽中斷請(qǐng)求,上升沿有效,任何時(shí)候CPU都要響應(yīng)此中斷請(qǐng)求信號(hào)。為何計(jì)算
3、機(jī)中要引入中斷?提高數(shù)據(jù)傳輸率;避免了CPU不斷檢測(cè)外設(shè)狀態(tài)的過程,提高了CPU的利用率。實(shí)現(xiàn)對(duì)特殊事件的實(shí)時(shí)響應(yīng)。如多任務(wù)系統(tǒng)操作系統(tǒng)中:缺頁中斷設(shè)備中斷各類異常實(shí)時(shí)時(shí)鐘等中斷系統(tǒng)的功能(1)為了加強(qiáng)中斷系統(tǒng)的靈活性,對(duì)于各種中斷請(qǐng)求,應(yīng)具有屏蔽和開放的功能,使程序員可以靈活控制。(2)具有“中斷級(jí)別”的判斷和控制功能,即能實(shí)現(xiàn)中斷源排隊(duì)。當(dāng)多個(gè)中斷源申請(qǐng)中斷時(shí),能根據(jù)事先的設(shè)定及時(shí)響應(yīng)中斷。(3)能實(shí)現(xiàn)中斷嵌套,即高級(jí)別的中斷能中斷較低級(jí)別的中斷。(4)系統(tǒng)響應(yīng)中斷后,能自動(dòng)進(jìn)行中斷處理。中斷過程五個(gè)步驟:中斷請(qǐng)求中斷判優(yōu)(有時(shí)
4、還要進(jìn)行中斷源識(shí)別)中斷響應(yīng)中斷服務(wù)中斷返回以下以外部中斷為主介紹這五個(gè)步驟。7.1.2中斷過程與中斷管理1)中斷請(qǐng)求外設(shè)接口(中斷源)發(fā)出中斷請(qǐng)求信號(hào),送到CPU的INTR或NMI引腳;中斷請(qǐng)求信號(hào):邊沿請(qǐng)求,電平請(qǐng)求例如,NMI為邊沿請(qǐng)求,INTR為電平請(qǐng)求中斷請(qǐng)求信號(hào)應(yīng)保持到中斷被處理為止;CPU響應(yīng)中斷后,中斷請(qǐng)求信號(hào)應(yīng)及時(shí)撤銷。在8086/8088系統(tǒng)中,外設(shè)的中斷要經(jīng)過8259A可編程中斷控制器(PIC)的排隊(duì)判優(yōu)后向CPU發(fā)出:(I/O接口)→PIC→CPU2)中斷源識(shí)別計(jì)算機(jī)中的中斷源有很多,CPU必須識(shí)別是哪一個(gè)設(shè)
5、備產(chǎn)生中斷。識(shí)別中斷源有兩個(gè)方法:軟件查詢。將中斷信號(hào)從數(shù)據(jù)總線讀入用程序進(jìn)行判別。中斷矢量法。由中斷源提供中斷類型號(hào),CPU根據(jù)類型確定中斷源。(8086/8088即采用此種方法)3)中斷判優(yōu)多個(gè)中斷源產(chǎn)生中斷,CPU首先為誰服務(wù)?——中斷優(yōu)先級(jí)排隊(duì)問題。中斷優(yōu)先級(jí)控制要處理兩種情況:對(duì)同時(shí)產(chǎn)生的中斷:應(yīng)首先處理優(yōu)先級(jí)別較高的中斷;若優(yōu)先級(jí)別相同,則按先來先服務(wù)的原則處理;對(duì)非同時(shí)產(chǎn)生的中斷:低優(yōu)先級(jí)別的中斷處理程序允許被高優(yōu)先級(jí)別的中斷源所中斷——即允許中斷嵌套。中斷優(yōu)先級(jí)的控制方法硬件判優(yōu)——鏈?zhǔn)脚袃?yōu)、并行判優(yōu)(中斷向量法)軟
6、件判優(yōu)——順序查詢中斷請(qǐng)求,先查詢的先服務(wù)(即先查詢的優(yōu)先級(jí)別高)通常將中斷判優(yōu)與中斷源識(shí)別合并在一起進(jìn)行處理。x86系統(tǒng)中,這項(xiàng)任務(wù)由PIC和CPU共同完成。鏈?zhǔn)脚袃?yōu)電路原理圖INTAinCPUINTAINTR外設(shè)1外設(shè)2外設(shè)接口1菊花鏈邏輯電路外設(shè)接口2外設(shè)3外設(shè)接口3≥1菊花鏈邏輯電路菊花鏈邏輯電路┇I(xiàn)REQIREQIREQ中斷確認(rèn)INTAinINTAin中斷確認(rèn)中斷確認(rèn)菊花鏈邏輯電路INTAinIREQINTR&=1≥1INTAoutDB三態(tài)門中斷向量碼E外設(shè)接口中斷確認(rèn)菊花鏈邏輯電路3)中斷響應(yīng)在每條指令的最后一個(gè)時(shí)鐘周期
7、,CPU檢測(cè)INTR或NMI信號(hào)。若以下條件成立,則CPU響應(yīng)中斷:當(dāng)前指令執(zhí)行完。對(duì)INTR,還應(yīng)滿足以下條件當(dāng)前指令是STI和IRET,則下條指令也要執(zhí)行完。當(dāng)前指令帶有LOCK、REP等指令前綴時(shí),則把它們看成一個(gè)整體,要求完整地執(zhí)行完;對(duì)INTR,CPU應(yīng)處于開中斷狀態(tài),即IF=1;當(dāng)前沒有復(fù)位(RESET)和保持(HOLD)信號(hào)。若NMI和INTR同時(shí)發(fā)生,則首先響應(yīng)NMI。3)中斷響應(yīng)(續(xù))CPU中斷響應(yīng)時(shí),要做下述三項(xiàng)工作:向中斷源發(fā)出INTA#中斷響應(yīng)信號(hào);斷點(diǎn)保護(hù),包括CS、IP和PSW(FLAGS)。這主要是保證
8、中斷結(jié)束后能返回被中斷的程序。獲得中斷服務(wù)程序首地址(入口)。如何得到中斷處理程序的首地址?固定入口法中斷向量法4)中斷處理(中斷服務(wù))中斷服務(wù)子程序特點(diǎn)為”遠(yuǎn)”過程(類型為FAR)要用IRET指令返回中斷服務(wù)子程序要做的工作保護(hù)現(xiàn)場(chǎng)