os第二章-2.2中斷技術(shù)_第1頁
os第二章-2.2中斷技術(shù)_第2頁
os第二章-2.2中斷技術(shù)_第3頁
os第二章-2.2中斷技術(shù)_第4頁
os第二章-2.2中斷技術(shù)_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

一、中斷的概念請求系統(tǒng)服務(wù),實現(xiàn)并行工作,處理突發(fā)事件,滿足實時要求,都需要打斷處理器正常的工作,為此,提出了中斷概念。中斷是指程序執(zhí)行過程中,當(dāng)發(fā)生某個事件時,中止CPU上現(xiàn)行程序的運行,引出處理該事件的程序執(zhí)行的過程。在提供中斷裝置的計算機(jī)系統(tǒng)中,在每兩條指令或某些特殊指令執(zhí)行期間都檢查是否有中斷事件發(fā)生,若無則立即執(zhí)行下一條或繼續(xù)執(zhí)行,否則響應(yīng)該事件并轉(zhuǎn)去處理中斷事件。中斷源是引起中斷的事件。中斷裝置是發(fā)現(xiàn)中斷源并產(chǎn)生中斷的硬件。中斷機(jī)制的共性:當(dāng)中斷事件發(fā)生后,它能改變處理器內(nèi)操作執(zhí)行的順序,可見中斷是現(xiàn)代操作系統(tǒng)實現(xiàn)并發(fā)性的基礎(chǔ)之一。2二、中斷源分類

(1)1.從中斷事件的性質(zhì)和激活

段來分可以分成兩類:強(qiáng)迫性中斷事件和自愿性中斷事件。強(qiáng)迫性中斷事件強(qiáng)迫性中斷事件不是正在運行的程序所期待的,而是由于隨機(jī)發(fā)生的某種事故或外部請求信息所引起的。這類中斷事件大致有:機(jī)器故障中斷事件。如電源故障、主 器出錯等。程序性中斷事件。如定點溢出、除數(shù)為0、地址越界等。又稱異常。外部中斷事件。如時鐘的定時中斷、控制臺發(fā)控制信息等。輸入輸出中斷事件。如設(shè)備出錯、傳輸結(jié)束等3

。二、中斷源分類

(2)4(2)自愿性中斷事件自愿性中斷事件是正在運行的程序所期待的事件。這種事件是由于執(zhí)行了一條訪管指令而引起的,它表示正在運行的程序?qū)Σ僮飨到y(tǒng)有某種需求,一旦機(jī)器執(zhí)行到一條訪管指令時,便自愿停止現(xiàn)行程序的執(zhí)行而轉(zhuǎn)入訪管中斷處理程序處理。二、中斷源分類

(3)運行程序中斷處理程序中斷裝置中斷處理程序中斷裝置外部中斷事件機(jī)器故障中斷事件程序性中斷事件輸入輸出中斷事件運行程序訪管指令兩類中斷事件5二、中斷源分類

(4)2.按照中斷信號的來源來分按照中斷信號的來源,可把中斷分為外中斷和內(nèi)中斷兩類。(1)外中斷(又稱中斷)指來自處理器和主存之外的中斷。外中斷包括:電源故障中斷、時鐘中斷、控制臺中斷、它機(jī)中斷和I/O中斷等。不同的中斷具有不同的中斷優(yōu)先級,處理高一級中斷時,往往會 部分或全部低級中斷。6二、中斷源分類

(4)的中(2)內(nèi)中斷(又稱異常)指來自處理器和主存斷。內(nèi)中斷包括:通路校驗錯、主存奇偶錯、操作碼、地址越界、頁面失效、調(diào)試指令、訪管中斷、算術(shù)操作溢出等各種程序性中斷。訪管中斷是由機(jī)器提供的特殊指令,該指令執(zhí)行時將會引起內(nèi)中斷。異常(內(nèi)中斷)是不能被的,一旦出現(xiàn)應(yīng)立即響應(yīng)并加以處理。7二、中斷源分類

(5)8(3)中斷和異常的區(qū)別中斷是由與現(xiàn)行指令無關(guān)的中斷信號觸發(fā)的(異步的),且中斷的發(fā)生與CPU處在用戶模式或內(nèi)核模式無關(guān),通常在兩條機(jī)器指令之間才可響應(yīng)中斷,一般來說,中斷處理程序提供的服務(wù)不是為當(dāng)前進(jìn)程所需的,如時鐘中斷、硬盤讀寫服務(wù)請求中斷;異常是由處理器正在執(zhí)行現(xiàn)行指令而引起的,一條指令執(zhí)行期間允許響應(yīng)異常,異常處理程序提供的服務(wù)是為當(dāng)前進(jìn)程所用的。異常包括很多方面,有出錯(fault),也有陷入(trap)。二、中斷源分類

(5)9(4)出錯和陷入的區(qū)別出錯和陷入的區(qū)別如下:它們發(fā)生時保存的返回指令地址不同,出錯保存指向觸發(fā)異常的那條指令,而陷入保存指向觸發(fā)異常的那條指令的下一條指令。從異常返回時,出錯會重新執(zhí)行那條指令,而陷入就不會重新執(zhí)行那條指令。如缺頁異常是一種出錯,而陷入主要應(yīng)用在調(diào)試中。IBM中大型機(jī)操作系統(tǒng)使用了上述第一種分類方法,

Windows2000/XP則采用了上述第二種分類方法。二、中斷源分類

(6)硬中斷與軟中斷硬中斷:中斷和異常要通過硬件設(shè)施來產(chǎn)生中斷請求,可看作硬中斷。軟中斷:不必由硬件發(fā)信號而能軟中斷是利用硬件中斷的概念,用的中斷稱軟中斷,方式進(jìn)行模擬,實現(xiàn)宏觀上的異步執(zhí)行效果。軟中斷通常是由內(nèi)核或進(jìn)程對某個進(jìn)程發(fā)出的中斷信號,可看作內(nèi)核與進(jìn)程或進(jìn)程與進(jìn)程之間用來模擬硬中斷的一種信號通信方式。10二、中斷源分類

(7)11硬中斷和軟中斷共同點:當(dāng)中斷源產(chǎn)生中斷請求或發(fā)出軟中斷信號后,CPU或者接收進(jìn)程在適當(dāng)?shù)臅r機(jī)自動進(jìn)行中斷處理或完成軟中斷信號所對應(yīng)的功能。適當(dāng)?shù)臅r機(jī)是指接收的硬中斷會及時獲得中斷處理程序的處理,但接收軟中斷信號的進(jìn)程不一定正好在接到此信號時占有處理器,而相應(yīng)的軟中斷信號處理必須等到該接收進(jìn)程獲得處理器后才能進(jìn)行,通常會有一定時間的延遲。三、中斷裝置(1)發(fā)現(xiàn)中斷源并產(chǎn)生中斷的硬件稱中斷裝置,這些硬件包括中斷邏輯線路和中斷寄存器。所有計算機(jī)系統(tǒng)都采用硬件和 (硬件中斷裝置和中斷處理程序)結(jié)合的方法實現(xiàn)中斷處理。1.中斷裝置主要做的三件事發(fā)現(xiàn)中斷源,響應(yīng)中斷請求。保護(hù)現(xiàn)場。將運行程序中斷點在處理器中某些寄存器內(nèi)的現(xiàn)場信息(又稱運行程序的執(zhí)行上下文)存放于內(nèi)

器。啟動處理中斷事件的程序。12三、中斷裝置(2)中斷寄存器用來記錄中斷事件,中斷寄存器的內(nèi)容稱中斷字,中斷字的每一位對應(yīng)一個中斷事件。每當(dāng)一條機(jī)器指令執(zhí)行結(jié)束的時刻,中斷控制部件掃描中斷字,查看是否有中斷事件發(fā)生,若是則處理器便響應(yīng)這個中斷請求。中斷發(fā)生后,中斷字的相應(yīng)位會被置位。由于同一時刻可能有多個中斷事件發(fā)生,中斷裝置將根據(jù)中斷要求和中斷優(yōu)先級選取一個,然后把中斷寄存器的內(nèi)容送入程序狀態(tài)字寄存器的中斷碼字段,且把中斷寄存器相應(yīng)位清“0”。13三、中斷裝置(3)外中斷舊PSW訪管中斷舊PSW程序中斷舊PSW機(jī)器故障中斷舊PSWI/O中斷舊PSW外中斷新PSW訪管中斷新PSW程序中斷新PSW機(jī)器故障中斷新PSWI/O中斷新PSW18202830385860687078現(xiàn)行PSW②中斷時保存現(xiàn)行PSW③中斷時裝入現(xiàn)行PSW④中斷后恢復(fù)PSW主存

雙字單元(16進(jìn)制)①裝配中斷碼IBM中大型機(jī)中斷響應(yīng)過程1415三、中斷裝置(4)被中斷的程序的程序狀態(tài)字稱為舊程序狀態(tài)字,中斷處理程序的程序狀態(tài)字稱為新程序狀態(tài)字,如何實現(xiàn)新舊程序狀態(tài)字的交換?通常,系統(tǒng)為每一種中斷都開辟了主存的固定單元存放新的和舊的程序狀態(tài)字。IPCSPSW現(xiàn)行PSW寄存器新棧頂主存新IP新CS新PSW老IP老CS老PSW中斷向量表中斷堆棧IBM

PC機(jī)中斷的響應(yīng)過程三、中斷裝置(5)在IBMPC機(jī)上,通常在計算機(jī)內(nèi)存的低地址處開辟了一個稱為中斷向量表的區(qū)域,表中每一項稱為一個中斷向量,其中存放了一個中斷處理程序的

地址及相關(guān)信息。當(dāng)發(fā)現(xiàn)中斷源并響應(yīng)中斷時,中斷裝置將把現(xiàn)行PSW內(nèi)容壓進(jìn)堆棧,接著再把指令指針I(yè)P和代碼段 址內(nèi)容也壓入堆棧,這樣就保存了原運行程序的狀態(tài)。處理器根據(jù)硬件中斷裝置提供的中斷向量號,獲得被接受的中斷請求的中斷向量地址,再按照中斷向量地址把中斷處理程序的PSW送入現(xiàn)行程序狀態(tài)字寄存器,加載新的程序狀態(tài)字。返回原程序時,把棧頂內(nèi)容送入現(xiàn)行IP、CS和PSW中。16四、中斷處理程序(1)處理中斷事件的程序稱為中斷處理程序。它的主要任務(wù)是處理中斷事件和恢復(fù)正常操作。地址的尋找不同中斷源對應(yīng)不同中斷處理程序,故快速找到中斷處理程序的

地址是一個關(guān)鍵問題。尋找

地址可采用如下辦法:在主 器設(shè)置一張向量地址表, 單元的地址對應(yīng)向量地址,

單元的內(nèi)容為

地址。CPU響應(yīng)中斷后,根據(jù)預(yù)先規(guī)定的次序找到相應(yīng)向量地址,便可獲得該中斷事件處理程序的

地址。17四、中斷處理程序(2)3.中斷處理程序主要做四項工作(1)保護(hù)未被硬件保護(hù)的一些必需的處理狀態(tài)。如保存通用寄存器的內(nèi)容到主 器。(2)識別各個中斷源,分析產(chǎn)生中斷的原因。(3)處理發(fā)生的中斷事件。(4)恢復(fù)正常操作?;謴?fù)中斷前的程序從斷點執(zhí)行或

者重新啟動一個新的程序或者甚至重新啟動操作系統(tǒng)。18操作系統(tǒng)與中斷的關(guān)系操作系統(tǒng)乃至整個計算機(jī)系統(tǒng)基本上是由中斷驅(qū)動的,沒有中斷,操作系統(tǒng)就得不到執(zhí)行,整個計算機(jī)系統(tǒng)就動不起來。加電啟動是計算機(jī)系統(tǒng)運動的原始驅(qū)動力量。之后,計算機(jī)就一直運動不止,一旦停下來,必須再次加電啟動。在計算機(jī)系統(tǒng)運動的過程斷使得計算機(jī)系統(tǒng)的活動變得五彩繽紛、波浪起伏,而不是平鋪直敘,一逗到底。19操作系統(tǒng)與中斷的關(guān)系操作系統(tǒng)是計算機(jī)系統(tǒng)的控制者、主宰者,用戶進(jìn)程則是被控制者、被主宰者。中斷為操作系統(tǒng)

計算機(jī)系統(tǒng)事物創(chuàng)造了機(jī)會。訪管中斷、鍵盤中斷等屬于低頻率中斷,需要程序或者外界主動操作才會引起中斷,時鐘中斷屬于高頻中斷,不需要外界主動介入,會自動產(chǎn)生高頻中斷信號,密集的時鐘中斷使得操作系統(tǒng)每隔幾微妙就接管整個計算機(jī)系次,也就是說,不

作系統(tǒng)控制的計算機(jī)工作時間非常短暫。中斷使得CPU在操作系統(tǒng)和用戶進(jìn)程之間快速切換。20操作系統(tǒng)與中斷的關(guān)系用戶進(jìn)程P1

操作系統(tǒng)(OS)

用戶進(jìn)程P2系統(tǒng)功能調(diào)用處理子程序時鐘中斷處理子程序鍵盤中斷處理子程序進(jìn)程結(jié)束系統(tǒng)功能調(diào)用處理子程序123456INT

21H789

101112131514161819

1721操作系統(tǒng)與中斷的關(guān)系22用戶進(jìn)程P1執(zhí)行幾微秒后,時鐘中斷發(fā)生,CPU由P1切換到OS執(zhí)行時鐘中斷處理程序,執(zhí)行完后返回

到P1,繼續(xù)執(zhí)行。遇到訪管中斷,CPU由P1切換到

OS執(zhí)行系統(tǒng)功能調(diào)用處理子程序,執(zhí)行完后返回到

P1繼續(xù)執(zhí)行。時鐘中斷發(fā)生,CPU由P1切換到OS執(zhí)行時鐘中斷處理程序,執(zhí)行完后OS計算了進(jìn)程優(yōu)先

級,發(fā)現(xiàn)P2比P1優(yōu)先級高,于是轉(zhuǎn)進(jìn)程切換程序調(diào)

度P2運行起來,CPU由OS切換到P2。鍵盤中斷發(fā)生,

CPU由P2切換到OS執(zhí)行鍵盤中斷處理程序,執(zhí)行完

后返回到P2,繼續(xù)執(zhí)行。時鐘中斷發(fā)生,CPU由P2切換到OS執(zhí)行時鐘中斷處理程序,執(zhí)行完后返回到P1,繼續(xù)執(zhí)行。五、中斷事件的具體處理方法

(1)1.機(jī)器故障中斷事件的處理這種事件是由硬件故障產(chǎn)生的,排除故障須進(jìn)行人工干預(yù)。中斷處理能做的工作是:保護(hù)現(xiàn)場,防止故障蔓延,報告給操作員并提供故障信息以便維修和校正,及對程序中所造成的破壞進(jìn)行估價和恢復(fù)。下面是一些硬件失效中斷事件的處理辦法:電源故障的處理:電源發(fā)生故障時,硬設(shè)備能保證繼續(xù)正常工作一段時間,操作系統(tǒng)利用這一段時間做三個工作:將處理器中有關(guān)寄存器內(nèi)的信息經(jīng)主 器送到磁盤保存起來。停止 設(shè)備工作。有些 設(shè)備不能立即停止,中斷處理程序?qū)堰@些正在交換信息又不能立即停止的設(shè)備記錄下來。2324五、中斷事件的具體處理方法

(2)停止處理器工作。此時,整個系統(tǒng)既不執(zhí)行指令又不響應(yīng)中斷。當(dāng)故障排除后,操作員可以從一個約定點啟動操作系統(tǒng)以恢復(fù)工作。2)主

器故障的處理中斷處理程序停止與出現(xiàn)的中斷事件有關(guān)的程序的執(zhí)行,然后向操作員報告出錯單元的地址和錯誤的性質(zhì)。2.程序性中斷事件的處理程序性中斷事件大致有兩種處理辦法:系統(tǒng)報告錯誤,請求操作員干預(yù)。如 使用 指令。用戶程序自定義處理辦法。如定點溢出、階碼下溢等中斷事件,操作系統(tǒng)可以將其轉(zhuǎn)交給用戶程序自行處理。如果用戶程序沒有給出處理辦法,則由操作系統(tǒng)進(jìn)行標(biāo)準(zhǔn)處理。五、中斷事件的具體處理方法

(3)3.外部中斷事件的處理時鐘中斷事件的處理時鐘是操作系統(tǒng)進(jìn)行調(diào)度工作的重要工具,如讓分時進(jìn)程作時間片輪轉(zhuǎn)、讓實時進(jìn)程定時發(fā)出或接收控制信號、系統(tǒng)定時喚醒或阻塞一個進(jìn)程、對用戶進(jìn)程進(jìn)行記賬。時鐘可以分成絕對時鐘和間隔時鐘兩種。系統(tǒng)設(shè)置絕對時鐘寄存器,定時地把該寄存器的內(nèi)容加1。如果開始時這個寄存器的內(nèi)容為0,那么,只要操作員告訴系統(tǒng)開機(jī)時的年、月、日、時、分、秒,以后就可推算出當(dāng)前的年、月、日、時、分、秒。計算當(dāng)前時間時,只要按時鐘中斷的次數(shù)和絕對時鐘寄存器的內(nèi)容推算就可得到。25五、中斷事件的具體處理方法

(4)間隔時鐘是定時將一個間隔時鐘寄存器的內(nèi)容減1,當(dāng)間隔時鐘寄存器的內(nèi)容為0時,產(chǎn)生一個間隔時鐘中斷,起到鬧鐘的作用,意味著預(yù)定的時間到了。操作系統(tǒng)經(jīng)常利用間隔時鐘作控制調(diào)度。操作系統(tǒng)有關(guān)時鐘的任務(wù)包括內(nèi)容:絕對日期和時間;防止進(jìn)程的運行時間超出其允許值,發(fā)現(xiàn)陷入死循環(huán)的進(jìn)程;對使用CPU的用戶進(jìn)程記賬;處理進(jìn)程的間隔時鐘(鬧鐘);對系統(tǒng)的功能或部件提供監(jiān)視定時器。26五、中斷事件的具體處理方法

(5)在In

x86/Pentium微機(jī)中,Linux利用CMOS中記錄的時間作為系統(tǒng)啟動時的基準(zhǔn)時間。Linux系統(tǒng)時間的測量基準(zhǔn)是jiffies(瞬時)(一個全局變量)。系統(tǒng)啟動時,CMOS中記錄的時間轉(zhuǎn)化從 0時0分0秒(UNIX

)算起的jiffies值(累積秒數(shù))。Linux中兩種類型系統(tǒng)定時器:老的定時器機(jī)制和新的定時器機(jī)制,兩種定時器都有對應(yīng)的處理例程,必須在到達(dá)給定的系統(tǒng)時間時被進(jìn)程調(diào)用。老的定時器機(jī)制:有一個32個指針的數(shù)組定義的定時器。每個指針指向一個timer-struct結(jié)構(gòu),timer-active是活動定時器掩碼。新的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論