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