《深入理解計算機系統》 異常處理

2021-06-27 23:23:23 字數 503 閱讀 8307

異常表

在作業系統啟動時,系統建立和初始化了乙個被稱為異常表的跳轉表,條目k對應異常k的異常處理程式入口位址。

異常的分類:

中斷(interrupt):來自處理器外部i/o裝置的訊號,並不是由專門的指令造成的,是非同步的,其處理程式成為中斷處理程式。

陷阱(trap):故意的異常,是執行指令的結果,其作重要的用途是系統呼叫。為允許訪問核心服務,處理器提供了乙個特殊的systemcall n 指令,當使用者程式請求服務n時,可以執行這條指令,執行systemcall指令會導致乙個到異常處理程式的陷阱,這個處理程式對引數解碼,並呼叫適當的核心處理程式。

故障()(潛在可恢復的錯誤),如缺頁異常

終止:不可恢復的致命錯誤造成的結果。一般是硬體錯誤

ia32體系下,有256種不同型別的異常

系統呼叫

每個系統呼叫都有乙個編號,對應乙個核心跳轉表的偏移量

linux中,通過int  0x80 指令,根據eax暫存器中的系統呼叫號 ,來呼叫相應的核心函式

深入理解計算機系統 異常

異常是異常控制流的一種形式,它一部分是由硬體實現的,一部分是由作業系統實現的。異常就是控制流中的突變,用來響應處理器狀態中的某些變化。在處理器中,狀態被編碼為不同的位和訊號。狀態變化稱為事件event,事件可能與當前指令的執行直接相關。比如發生虛擬儲存器的換頁,算數溢位,或者一條指令試圖除以零。另一...

深入理解計算機系統 異常

2012 07 19 22 41 53 分類 linux 標籤 linux 計算機系統異常 字型大小大中小 訂閱異常是異常控制流的一種形式,它一部分是由硬體實現的,一部分是由作業系統實現的。異常就是控制流中的突變,用來響應處理器狀態中的某些變化。在處理器中,狀態被編碼為不同的位和訊號。狀態變化稱為事...

深入理解計算機系統

關鍵路徑是在迴圈的反覆執行中形成的資料相關鏈。迴圈展開是一種程式變換,通過增加每次迭代計算的元素的數量,減少迴圈的迭代次數。重新結合變換能夠減少計算中關鍵路徑上操作的數量,通過更好地利用功能單元的流水線能力得到更好的效能。浮點運算不保證是可結合的,通常迴圈展開和並行地累積在多個值中,是提高程式效能的...