天天看點

2022-2-11 計算機組成原理 —— 異常和中斷

一、來自硬體層面的異常

硬體的異常可能由多個原因産生。

  • 算術溢出,計算發生溢出
  • 通過鍵盤和滑鼠給網絡發送資訊
  • 讀取檔案的請求也是一個異常

異常是軟體和硬體組合到一起的處理過程。異常的發生和捕捉由硬體發生,異常的處理由軟體來完成。

異常代碼(中斷向量)—— 異常發生的時候,CPU 檢測到了特殊的信号。

特殊信号的配置設定:

  • I/O 發出的信号的異常代碼,是由作業系統來配置設定的
  • 加法溢出這樣的異常代碼,是由硬體來配置設定的

異常表(中斷向量表)

存放的是不同的異常代碼對應的異常的程式處理位址。

2022-2-11 計算機組成原理 —— 異常和中斷

檢測異常,拿到異常,根據異常的代碼進行處理

2022-2-11 計算機組成原理 —— 異常和中斷

二、異常的分類

  • 中斷:CPU 外部的裝置向 CPU 發送中斷的資訊。
  • 陷阱:程式員主動設定的斷點,程式執行到這個陷阱就會中斷執行,轉而去執行異常處理程式。最常見的陷阱是系統調用(使用者态到核心态的切換),打開檔案和建立新的程序。
  • 故障:故障不是在編寫程式的時候刻意設定的。而是在程式運作的時候發生的,也同樣需要對應的程式去處理。

    (故障 和 中斷、陷阱的差別是:處理完故障後,仍然回來處理目前的指令,而中斷和陷阱回來處理下一條指令)

  • 中止:當程式遇到故障無法重新運作,程式自然終止。
    2022-2-11 計算機組成原理 —— 異常和中斷
  • 同步 —— 在程式内部發生的異常:陷阱、故障、終止
  • 異步 —— 在程式外部發生的異常:中斷

處理流程:儲存現場,查詢異常代碼,異常處理程式調用

三、異常的處理:上下文切換

1、将目前正在執行的指令去壓棧。同時将 CPU 内目前運作程式使用的寄存器裡的值都壓入棧中。

2、陷阱涉及到核心态與使用者态的切換,将資料壓入到核心棧中,而不是程式棧裡。

3、故障這種異常,執行的是目前的指令,而不是下一條指令,因為目前的指令并沒有正确執行完成。

繼續閱讀