OS學習筆記一: 中斷與異常

衣舞晨風發表於2017-10-05

一、基礎概念

1、缺頁異常

CPU通過地址匯流排可以訪問連線在地址匯流排上的所有外設,包括實體記憶體、IO裝置等等,但從CPU發出的訪問地址並非是這些外設在地址匯流排上的實體地址,而是一個虛擬地址,由MMU將虛擬地址轉換成實體地址再從地址匯流排上發出,MMU上的這種虛擬地址和實體地址的轉換關係是需要建立的,並且MMU還可以設定這個物理頁是否可以進行寫操作,當沒有建立一個虛擬地址到實體地址的對映,或者建立了這樣的對映,但那個物理頁不可寫的時候,MMU將會通知CPU產生了一個缺頁異常。

2、陷入指令

陷入指令(Traps),又叫做自陷指令或訪管指令,出現在計算機作業系統中,用於實現在使用者態下執行的程式呼叫作業系統核心程式,即當執行的使用者程式或系統實用程式欲請求作業系統核心為其服務時,可以安排執行一條陷入指令引起一次特殊異常。

3、CPU

處理器由運算器、控制器、一系列的 暫存器以及快取記憶體構成。

兩類暫存器:

  • 使用者可見暫存器:高階語言編譯器通過優化演算法分配並使用之,以減少程式訪問記憶體次數
  • 控制和狀態暫存器:用於控制處理器的操作通常由 作業系統 程式碼使用

4、控制和狀態暫存器

  • 用於控制處理器的操作

  • 在某種特權級別下可以 訪問、修改

  • 常見的控制和狀態暫存器

    • 程式計數器(PC :Program Counter ),記錄將要取出的指令的地址

    • 指令暫存器(IR :Instruction Register ),記錄最近取出的指令

    • 程式狀態字(PSW :Program Status Word ),記錄處理器的執行狀態 如 條件碼 、模式、控制位 等資訊

5、CPU狀態之間的切換

  • 使用者態 → 核心態

    唯一途徑 → 中斷/ 異常/ 陷入機制

  • 核心態 → 使用者態

    設定程式狀態字PSW

一條特殊的指令 :陷入指令(又稱訪 管 指令,因為核心態也被稱為supervisor mode)提供給使用者程式的介面,用於呼叫 作業系統 的功能 (服務)。

例如:int ,trap ,syscall ,sysenter/sysexit

二、中斷與異常的概念

  • CPU 對系統發生的某個事件作出的一種反應

  • CPU 暫停正在執行的程式,保留現場後自動轉去執行相應事件的處理程式,處理完成後返回斷點,繼續執行被打斷的

事件的發生改變了處理器的控制流

特點:
1、是隨機發生的
2、是自動處理的(硬體完成這一過程)
3、是可恢復的(被中斷的,在以後某個時刻繼續)

三、引入中斷與異常的原因

中斷的引入: 為了支援CPU 和裝置之間 的 並行操作

  • 當CPU 啟動裝置進行 輸入/ 輸出後 ,裝置便 可以獨立工作,CPU 轉去處理與此次輸入/ 輸出不相關的 事情;當裝置完成輸入/ 輸出後,通過向CPU 發中斷報告此次 輸入/ 輸出的結果,讓CPU 決定如何處理以後 的 事情

異常的引入 :表示CPU 執行指令時本身 出現的問題

  • 如算術溢位、除零、 取數時的奇偶錯,訪 存地址時越界或執行了“陷入指令” 等,這時硬體改變了CPU 當前 的執行流程,轉到相應的錯誤處理程式或 異常處理程式或執行系統呼叫

四、事件

這裡寫圖片描述

中斷:外部 事件,正在執行的程式所不期望的

異常 :由正在執行的指令引發

五、中斷與異常小結

這裡寫圖片描述

六、中斷、異常機制工作原理

  • 中斷/ 異常機制是現代計算機系統的核心機制之一

    硬體和軟體相互配合 而使計算機系統得以充分發揮能力

  • 硬體該做什麼事? —— 中斷/ 異常響應

    捕獲中斷源發出的中斷/ 異常請求,以一定方式響應,將處理器控制權交給特定的處理程式

  • 軟體要做什麼事? —— 中斷/ 異常處理 程式

    識別中斷/ 異常型別並完成相應的處理

七、中斷響應

中斷響應:

  • 發現 中斷 、 接收中斷的過程

  • 由中斷硬體 部件完成,處理器控制部件中 設有 中斷暫存器

中斷響應過程示意圖:
這裡寫圖片描述

八、中斷向量表

中斷向量 :

一個記憶體單元,存放 中斷處理程式入口地址和程式執行時所需的處理機狀態字

這裡寫圖片描述

九、linux中斷向量表

這裡寫圖片描述

十、中斷響應示意圖

這裡寫圖片描述

十一、中斷處理程式

  • 設計作業系統時,為每一類中斷/ 異常事件編好相應的處理程式,並設定好中斷向量表

  • 系統執行時若響應中斷,中斷硬體部件將CPU 控制權轉給中斷處理程式:

    • 儲存相關暫存器資訊

    • 分析中斷/ 異常的具體原因

    • 執行對應的處理功能

    • 恢復現場,返回被事件打斷的程式

軟體提前設定好 硬體部件來執行

十二、中斷例項

以裝置輸入輸出中斷為例:

  1. 印表機 給CPU 發中斷訊號(硬體)

  2. CPU 處理完當前指令後檢測到中斷,判斷出中斷來源並向相關裝置發確認訊號(硬體)

  3. CPU 開始為軟體處理中斷做準備(硬體):

    • 處理器 狀態被切換到核心態

    • 在系統棧中儲存被中斷程式的重要上下文環境,主要是 程式計數器PC 、程 序狀態字PSW

  4. CPU 根據中斷碼查中斷向量表,獲得與該中斷相關的處理 程式 的入口地址,並將PC 設定成該地址,新的指令週期開始時,CPU 控制轉移到中斷處理程式(硬體)

  5. 中斷處理程式開始工作(軟體)

    • 在系統棧中儲存現場資訊

    • 檢查I/O 裝置的狀態資訊,操縱I/O 裝置或者在裝置
      和記憶體之間傳送資料等等

  6. 中斷處理結束時,CPU 檢測到中斷返回指令 ,從 系統棧 中 恢復被中斷程式的上下文環境 ,CPU 狀態恢復成原來的狀態,PSW 和PC 恢復成中斷前的值,CPU 開始一個新的指令週期(硬體)

本文整理自:《作業系統原理》北京大學_陳向群 講義

個人微信公眾號:
這裡寫圖片描述

作者:jiankunking 出處:http://blog.csdn.net/jiankunking

相關文章