處理器管理(異常與中斷以及程序排程)

2021-06-22 14:41:05 字數 2579 閱讀 7934

在程式執行時,產生中斷或異常事件,執行程式被中斷,轉向中斷處理程式。這兩種情況都是通過中斷機制發生,可以說中斷和異常是使用者態到核心態轉換的唯一途徑。

當系統產生中斷或異常,處理器將作出響應並交換程式狀態字,此時處理器會從使用者態到核心態轉換。處理完成後計算機通過引導程式狀態字的特權指令來實現從核心態返回使用者態。

中斷是指在程式執行過程中,遇到急需要處理的事件時,暫時中止現行程式在cpu上的執行,轉而執行相應的事件處理程式,處理完成後再返回斷點或排程其他程式。它是現在帶計算機系統的重要組成部分之一。每當應用程式執行系統呼叫要求獲得作業系統服務等都要通過中斷機制產生中斷訊號並啟動核心工作。可以說作業系統是由中斷驅動的。

cpu會在執行在兩條指令之間檢查有無中斷發生。

自願性中斷事件時正在執行的程式所期待的,是由於執行訪管指令而引起的,它表示執行的程式對作業系統的有某種需求,一旦機器執行訪管指令,就會使cpu狀態從使用者態轉向核心態,停止現行程式的執行而轉入核心的相應系統呼叫例程進行處理。這被稱為訪管中斷。

硬中斷分為外中斷和內中斷。外中斷,又稱中斷,是指來自處理器之外的中斷訊號。包括時鐘中斷、鍵盤中斷、裝置中斷等。內中斷又稱為異常。是指來自cpu內部的中斷訊號。又分為三種:訪管中斷,由系統呼叫引起。硬體故障中斷,如電源失效,奇偶校驗錯誤,匯流排超時等;程式性中斷,如非法操作,位址越界,頁面故障,除數為0,浮點數溢位。所有這些異常均有異常處理程式處理,且不能被遮蔽。

中斷和異常的區別:中斷是由於當前程式無關的中斷訊號觸發的,cpu對中斷的響應是被動的,且與cpu模式無關。既可以發生在使用者態,又可以發生在核心態。通常在發生兩條機器指令之間才響應中斷。通常在兩條機器指令之間才能響應中斷。異常是由cpu控制單元產生的,源於現行程式執行指令過程中檢測到例外。大部分異常發生在使用者態。異常處理程式所提供的服務通常是當前程序所需要的。如程式出錯或頁面故障。異常處理程式在當前程式的上下文執行。

cpu對異常和中斷的響應是一致的。即當執行完當前指令後,或在執行當前指令的中途,根據中斷源所提供的中斷向量,在主存中找到響應服務程式的入口位址並呼叫此服務。中斷向量由硬體或作業系統的核心預先分配和設定。系統呼叫所對應的向量在訪管指令中給出。中斷和異常以統一的模式加以實現,這也是許多書中將它們都歸入中斷機制的原因。

在兩條指令中間,cpu會檢查中斷暫存器是否有中斷事件發生,若無中斷訊號或中斷訊號被遮蔽,則繼續執行後續指令。否則將暫停當前程式,轉向

核心的中斷處理程式。

中斷和異常的響應需要做四件事:1,發現中斷源;2,保護現場;3,轉向中斷/異常處理程式。4,恢復現場。

訪管中斷是由程式執行訪管指令而引起的,表示當前執行的程式對作業系統功能的呼叫。它包括操作碼和訪管引數兩部分。前者表示此指令是訪管指令,後者表示具體的訪管要求。當程式發出訪管請求時,cpu控制裝置發出中斷向量,然後指定系統呼叫號,表示想要呼叫的系統呼叫。

時鐘是作業系統進行呼叫工作的重要工具,如維護系統絕對日期和時間,讓分時程序按時間片輪轉,讓實時程序定時傳送或接收控制訊號,系統定時喚醒或阻塞程序。利用定時器能夠確保作業系統必要時獲得控制權,使陷入死迴圈的程序最終會因為時間片耗盡而被迫讓出處理器。時鐘通常是乙個硬體,它按照固定週期發出中斷請求,分為絕對時鐘和間隔時鐘。系統設定乙個絕對時鐘暫存器,定時的把此暫存器的內容加一。間隔時鐘在每個時間切換點將間隔時鐘暫存器的內容減一。當減為0時,就產生間隔時鐘中斷。作業系統經常利用間隔時鐘進行排程

發生中斷的每個裝置都有乙個相應的中斷處理程式。乙個裝置的中斷處理程式是它裝置驅動程式的一部分。中斷處理程式是被核心呼叫來響應中斷的,工作在核心態的中斷上下文中,不允許被阻塞。(也可以認為處理中斷必定需要訪管!)

中斷和異常是啟用作業系統的僅有方法,它暫停當前程序的執行,把處理器切換至核心態,核心獲得cpu的控制權後,如果需要就可以實現程序切換,程序切換必定發生在核心態而非使用者態。當發生程序切換時,暫存器上下文會被儲存到系統級上下文(包括程序控制塊、主存管理資訊、核心棧等)的相應的現場資訊位置,然後核心把這些資訊壓入

核心棧的乙個上下文層

,當核心處理完中斷返回或程序完成其系統呼叫返回使用者態,核心進行上下文切換並從核心棧彈出乙個上下文層。

程序上下文切換步驟:

1,儲存被中斷程式的處理器現場資訊。

2,修改被中斷程序的pcb有關資訊,如程序狀態等。

3,把被中斷程序的pcb加入相關佇列。

4,選擇占用處理器執行的另乙個程序。

5,修改被選中程序pcb有關資訊,如改為就緒態。

6,設定被選中程序的位址空間,恢復儲存管理資訊。

7,根據被選中程序的上下文資訊來恢復處理器現場。

處理器模式切換步驟:

1,儲存被中斷程序的處理器現場資訊。

2,處理器從使用者態切換到核心態,以便執行系統服務程式或中斷處理程式。

3,如果處理中斷,可根據所規定的中斷級別設定中斷遮蔽位。

4,根據系統呼叫號或中斷號,從系統呼叫表或中斷入口位址表中找到系統服務程式或中斷處理程式的位址。

模式切換不同於程序切換,它不一定引起程序狀態的切換,也不一定引起程序切換。

也就是說,程序的切換一定會引起模式切換但是模式切換未必引起程序切換。

處理器管理與程序排程

1.理解程序狀態轉換的三態模型與七態模型 在記憶體中有三道程序並按abc的順序執行,其計算與io操作時間如下圖所示,如果每次進行程序切換時間為1ms,畫出各程序狀態轉換的時間關係圖。2.安裝python環境,用psutil庫檢視系統資訊 1 安裝 官網python pycharm jupyter n...

ARM處理器異常與中斷處理 學習總結

今天學習 arm system developer s guide designing and optimizing system software 第9章 異常與中斷處理,總結一下 1.異常處理 q1.異常和中斷嘛關係啊?中斷時異常的一種,中斷兩種 irq,fiq。異常好多種呢?reset,dat...

處理器中斷的本質,硬中斷 軟中斷 異常的區別

處理器中斷的本質,硬中斷 軟中斷 異常的區別 1956年,era 1103a計算機系統引入了中斷 interrupt 機制。era 1103a用於接收 處理風洞試驗資料,再將資料處理結果返回給風洞,如此迴圈往復。但風洞資料的準備時間比較長,era 1103a只能處於等待狀態,這段時間被白白的浪費掉了...