1.中斷的概念
中斷對于操作系統(tǒng)非常重要,它就好像機器中的齒輪,驅(qū)動各部件的動作。所以,許多人稱操作系統(tǒng)是由“中斷驅(qū)動”的。
所謂中斷是指CPU對系統(tǒng)發(fā)生的某個事件做出的一種反應,它使CPU暫停正在執(zhí)行的程序,保留現(xiàn)場后自動執(zhí)行相應的處理程序,處理該事件后,如被中斷進程的優(yōu)先級最高,則返回斷點繼續(xù)執(zhí)行被“打斷”的程序。
引起中斷的事件或發(fā)出中斷請求的來源稱為中斷源。中斷源向CPU提出的處理請求稱為中斷請求。發(fā)生中斷時,被打斷程序的暫停點稱為斷點。
前面講過,中斷最初是作為通道(或設(shè)備)與CPU之間進行通信的工具。通道和CPU并行工作,各自負責自己的任務。當通道完成某項預定的I/O請求或數(shù)據(jù)傳輸過程中發(fā)生故障時,就用中斷方式向CPU“報告情況”,請求處理。
中斷的概念后來得到進一步擴展。在現(xiàn)代計算機系統(tǒng)中,不僅通道或設(shè)備控制器可向CPU發(fā)送中斷信號,其他部件也可以造成中斷。例如,程序在CPU上運行時出現(xiàn)運算溢出、取數(shù)時奇偶錯、電源故障、時鐘計數(shù)到時等,都可成為中斷源。
中斷概念的另一個發(fā)展是訪管(即訪問管理)指令(或系統(tǒng)調(diào)用)的使用。用戶程序中可以使用操作系統(tǒng)對外界提供的系統(tǒng)調(diào)用,得到系統(tǒng)內(nèi)部服務。當用戶程序執(zhí)行到系統(tǒng)調(diào)用時,進程狀態(tài)從用戶態(tài)變?yōu)楹诵膽B(tài)。核心根據(jù)系統(tǒng)調(diào)用的編號,轉(zhuǎn)去執(zhí)行相應的處理程序,如對文件的讀/寫、對進程的控制等。硬件保證用戶態(tài)下運行的程序不得訪問核心空間中的數(shù)據(jù),從而保護了操作系統(tǒng)。系統(tǒng)調(diào)用的出現(xiàn)為用戶編制程序提供了方便和可靠性保證。
2.中斷類型
按功能劃分
這種分類法類似于IBM360/370系統(tǒng)的分類法,所有中斷源分為5類。
(1)機器故障中斷。它是機器發(fā)生錯誤時產(chǎn)生的中斷,用來反映硬件在執(zhí)行過程中出現(xiàn)的故障,以便進入診斷程序,做出處理。例如,機器電路檢驗錯、電源故障和內(nèi)存讀數(shù)錯,等等。
(2)I/O中斷。這是來自通道或各種外部設(shè)備的中斷,用于反映通道或設(shè)備的工作情況。例如,打印機打印結(jié)束、磁盤傳輸完成、利用終端進行輸入/輸出等。
(3)外部中斷。它是來自計算機系統(tǒng)外部裝置的中斷,用來反映外界對本系統(tǒng)的要求。例如,計時器到時溢出,操作員操縱控制臺按鈕,在多機系統(tǒng)中它機送來信號,等等。
(4)程序性中斷。這是因錯誤地使用指令或數(shù)據(jù)而引起的中斷,用于反映程序執(zhí)行過程中發(fā)現(xiàn)的例外情況,例如,非法操作碼,無效地址和運算溢出,等等。
(5)訪管中斷。由于執(zhí)行“訪問管理程序”指令而產(chǎn)生的中斷,用來使CPU的狀態(tài)從用戶態(tài)轉(zhuǎn)入管理態(tài),由操作系統(tǒng)根據(jù)不同的編號引進不同的處理。這樣,操作系統(tǒng)為用戶態(tài)程序提供對系統(tǒng)資源使用請求的服務。
按產(chǎn)生中斷的方式劃分
(1)強迫中斷。在程序運行過程中,發(fā)生某些(個)隨機性事件,如外設(shè)工作結(jié)束和程序運行出錯等,需要及時進行處理的一種中斷。程序設(shè)計人員在編制程序時并不知道它何時出現(xiàn),也并不期望它出現(xiàn)。上述按功能劃分的機器故障中斷、I/O中斷、外部中斷和程序性中斷都可算做強迫中斷。
(2)自愿中斷。程序員在編制程序時因需要系統(tǒng)提供某些服務而有意使用訪管指令或系統(tǒng)調(diào)用,從而導致執(zhí)行程序的中斷。這是程序員事先安排好的,其出現(xiàn)時機是可知的。上述按功能劃分的訪管中斷就屬于這一類。
按中斷事件來源劃分
目前,很多小型機系統(tǒng)和微型機系統(tǒng)都采用這種分類方式。
(1)中斷。它是由CPU以外的事件引起的,如I/O中斷、時鐘中斷、控制臺中斷等。利用中斷實現(xiàn)設(shè)備與CPU的通信。中斷是異步的,因為從邏輯上講,中斷的產(chǎn)生與當前正在執(zhí)行的進程無關(guān)。
(2)異常(Exception)。它是來自CPU內(nèi)部的事件或程序執(zhí)行中的事件引起的過程。如CPU本身故障(電源電壓低于105V,或頻率在47~63Hz之外)、程序故障(非法操作碼、地址越界、浮點溢出等)和請求系統(tǒng)服務的指令(即訪管指令)引起的事件等。可見,異常包括很多方面,主要有出錯、陷入和可編程異常。出錯和陷入之間最重要的區(qū)別是處理完異常事件返回時,出錯事件會重新執(zhí)行導致異常的那條指令,如缺頁故障處理完之后還會嘗試重新執(zhí)行那條觸發(fā)異常的指令(通常不會再缺頁);而陷入事件則不會重新執(zhí)行那條指令。陷入主要用于程序調(diào)試,被調(diào)試的進程遇到用戶設(shè)置的斷點會停下來等待你的處理,當你讓它重新運行時,它就執(zhí)行下面的指令。
可編程異常是由于用戶在C程序中使用了系統(tǒng)調(diào)用而引發(fā)的過程。系統(tǒng)調(diào)用也稱軟件中斷(或陷入)。應用程序使用系統(tǒng)調(diào)用就可由用戶模式轉(zhuǎn)入核心模式,在核心模式下完成相應的服務之后再返回用戶模式。所以系統(tǒng)調(diào)用是用戶程序與內(nèi)核的接口。硬件對可編程異常的處理與對陷入的處理是一致的,即從這類異常返回時,也返回產(chǎn)生異常的下一條指令。
3.中斷系統(tǒng)的作用
中斷系統(tǒng)是當代計算機必不可少的組成部分之一。中斷系統(tǒng)的作用主要有以下5點。
(1)提高主機的利用率,使高速CPU可以和低速的外部設(shè)備并行工作。
(2)及時進行事故處理。當計算機發(fā)生硬件故障或出現(xiàn)程序性錯誤(如運算結(jié)果溢出、除數(shù)為0、地址錯、非法操作碼等)時,可以通過中斷系統(tǒng)進行處理。操作系統(tǒng)通過程序復執(zhí)來排除偶然性錯誤,或?qū)⒐收吓c錯誤記錄下來,為故障診斷和機器恢復做好準備。
(3)實現(xiàn)分時操作。如前所述,在分時系統(tǒng)中正在運行的進程用完所分到的時間片后,就要讓出CPU,排到相應的就緒隊列中。在這里,依靠定時時鐘對時間片進行計時,到達預定值時就產(chǎn)生時鐘中斷,調(diào)用進程調(diào)度程序進行相應處理。就是說,通過中斷系統(tǒng)將CPU的時間分配給各個進程使用。
(4)實現(xiàn)實時操作。在實時控制系統(tǒng)中,很多信號是隨機產(chǎn)生的,只有通過中斷系統(tǒng)才能對它進行及時處理,避免信息的丟失。
(5)方便程序調(diào)試。利用中斷可以方便地調(diào)試程序,可人為設(shè)置斷點,隨時中斷程序的執(zhí)行,查看中間結(jié)果,了解機器的工作狀態(tài),輸入臨時命令等。
責任編輯人:CC
-
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6818瀏覽量
123323 -
中斷
+關(guān)注
關(guān)注
5文章
898瀏覽量
41490
發(fā)布評論請先 登錄
相關(guān)推薦
評論