資源描述:
《windows xp中斷處理》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、實(shí)例研究:Windows2000/XP中斷處理1、Windows2000/XP中斷處理概述(1)中斷主要由I/O設(shè)備、處理器時(shí)鐘或定時(shí)器、可以啟用或禁用。中斷是異步事件,可能隨時(shí)發(fā)生,與處理器正在執(zhí)行的內(nèi)容無(wú)關(guān)。異常是同步事件,它是某一個(gè)特定指令執(zhí)行的結(jié)果。異常的例子是內(nèi)存訪問(wèn)錯(cuò)誤、調(diào)試指令及被零除。內(nèi)核也將系統(tǒng)服務(wù)調(diào)用視作異常。Windows2000/XP中斷處理概述(2)硬件和軟件都可以產(chǎn)生中斷和異常,如總線出錯(cuò)異常由硬件造成,而被零除異常是由軟件引起的;同樣,I/O設(shè)備可產(chǎn)生中斷,而內(nèi)核自身也可以發(fā)
2、出中斷。Windows2000/XP中斷處理概述(3)陷阱指處理意外事件的一種硬件機(jī)制,當(dāng)中斷或異常發(fā)生時(shí),它能發(fā)現(xiàn)并俘獲正在執(zhí)行的線程,把它從用戶態(tài)切換到核心態(tài),并將控制權(quán)交給內(nèi)核的陷阱處理程序。Windows2000/XP中斷處理概述(4)Windows陷阱調(diào)度中斷服務(wù)例程中斷服務(wù)例程中斷服務(wù)例程異常調(diào)度器虛存管理器的頁(yè)面管理器中斷調(diào)度器系統(tǒng)服務(wù)調(diào)度器異常調(diào)度器陷阱處理程序異常幀虛擬地址異常硬件異常軟件異常系統(tǒng)服務(wù)調(diào)用中斷2、Windows2000/XP中斷類型和優(yōu)先級(jí)(1)?中斷請(qǐng)求級(jí)IRQL(I
3、nterruptRequestLevel)?內(nèi)核維護(hù)的IRQL是可以移植的?IRQL將按照優(yōu)先級(jí)排列中斷,并按照優(yōu)先級(jí)順序服務(wù)中斷,較高優(yōu)先級(jí)中斷可以搶占較低優(yōu)先級(jí)中斷服務(wù)Windows2000/XP中斷類型和優(yōu)先級(jí)(2)Windows中斷請(qǐng)求級(jí)系統(tǒng)關(guān)閉高31掉電30處理器內(nèi)的中斷29時(shí)鐘28配置文件設(shè)備n………設(shè)備1Dispatch/DPC2APC1低0硬件中斷軟件中斷正常的線程執(zhí)行Windows2000/XP中斷類型和優(yōu)先級(jí)(3)Windows中斷屏蔽高掉電處理器內(nèi)的中斷時(shí)鐘配置文件設(shè)備n………設(shè)備1在
4、處理器A上被屏蔽的中斷Dispatch/DPCAPC低IRQL=時(shí)鐘處理器A在處理器B上被屏蔽的中斷IRQL=Dispatch/DPC處理器BWindows2000/XP硬件中斷處理(1)?中斷產(chǎn)生時(shí),陷阱處理程序保存運(yùn)行程序的狀態(tài),調(diào)用中斷調(diào)度程序。?中斷調(diào)度程序提高處理器的IRQL到中斷源的級(jí)別,以便在中斷服務(wù)過(guò)程中屏蔽等于和低于當(dāng)前中斷源級(jí)別的其他中斷。?重新啟用中斷,以使高優(yōu)先級(jí)的中斷仍然能夠得到服務(wù)。Windows2000/XP硬件中斷處理(2)?Windows使用中斷分配表IDT(Interru
5、ptDispatchTable)來(lái)查找處理特定中斷的例程。?中斷源的IRQL作為表的索引,表的入口指向中斷處理例程。Windows2000/XP硬件中斷處理(3)Windows中斷服務(wù)高掉電處理器間的中斷時(shí)鐘設(shè)備n………設(shè)備1②中斷調(diào)度程序接收到中斷源的IRQL,用作查詢IDT的索引Dispatch/DPCAPC低①有中斷產(chǎn)生………線程調(diào)度程序/DPC處理程序(無(wú))系統(tǒng)關(guān)閉例程系統(tǒng)調(diào)電例程處理器間中斷處理程序時(shí)鐘處理程序設(shè)備nISR設(shè)備1ISRAPC處理程序③中斷調(diào)度程序跟隨該指針,調(diào)用相應(yīng)的處理程序Win
6、dows2000/XP軟件中斷處理多數(shù)中斷由硬件產(chǎn)生,但內(nèi)核也為多種任務(wù)產(chǎn)生軟件中斷,包括:?jiǎn)?dòng)線程調(diào)度、處理計(jì)時(shí)器到時(shí)、在特定線程的描述表中異步執(zhí)行一個(gè)過(guò)程及支持異步I/O等。4、延遲過(guò)程調(diào)度和異步過(guò)程調(diào)用(1)內(nèi)核直接調(diào)用調(diào)度程序?qū)崿F(xiàn)描述表切換時(shí),在深入多層代碼內(nèi)檢測(cè)到應(yīng)該進(jìn)行重調(diào)度,理想的解決方法是請(qǐng)求調(diào)度,但應(yīng)延遲調(diào)度的產(chǎn)生直到內(nèi)核完成當(dāng)前活動(dòng)為止,延遲過(guò)程調(diào)用DPC軟件中斷是實(shí)現(xiàn)這種延遲的簡(jiǎn)便方法。延遲過(guò)程調(diào)度和異步過(guò)程調(diào)用(2)延遲過(guò)程調(diào)度DPC的用法:1)內(nèi)核處理時(shí)鐘中斷2)執(zhí)行“延遲函數(shù)”,
7、3)設(shè)備驅(qū)動(dòng)程序使用DPC完成I/O請(qǐng)求。延遲過(guò)程調(diào)度和異步過(guò)程調(diào)用(3)提交DPC高掉電………②如果IRQL降到比Dispatch/DPC級(jí)低,則DPC中斷發(fā)生。Dispatch/DPCAPC低①定時(shí)器到時(shí),內(nèi)核排好DPC隊(duì)列,準(zhǔn)備釋放等候在定時(shí)器上的所有線程,然后內(nèi)核請(qǐng)求軟件中斷?!{(diào)度程序③DPC中斷之后,控制傳送給(線程)調(diào)度程序DPCDPCDPC④調(diào)度程序執(zhí)行DPC中的每一個(gè)DPC例程,然后使隊(duì)列變空。如果需要,調(diào)度程序還重新安排處理器延遲過(guò)程調(diào)度和異步過(guò)程調(diào)用(4)異步過(guò)程調(diào)用APC為用戶程
8、序和系統(tǒng)代碼提供了一種在特殊用戶線程的描述表(特殊的地址空間)中執(zhí)行代碼的方法。延遲過(guò)程調(diào)度和異步過(guò)程調(diào)用(5)兩種APC,用戶態(tài)APC和核心態(tài)APC。核心態(tài)APC在線程描述表中運(yùn)行并不需要得到目標(biāo)線程的“允許”,而用戶態(tài)APC則需要得到目標(biāo)線程的“允許”。核心態(tài)APC可以中斷線程及執(zhí)行過(guò)程,而不需要線程的干預(yù)和同意。延遲過(guò)程調(diào)度和異步過(guò)程調(diào)用(6)執(zhí)行體使用核心態(tài)APC來(lái)執(zhí)行必須在特定線程的地址空間(描述表)中