異常指的是在程式運行過程中發生的異常事件,通常是由硬體問題或者程式設計問題所導致的。異常處理入口描述符是用來說明異常服務程式的入口的地址及有關屬性。異常處理入口描述符一般描述符是否有效、服務程式的特權級和描述符的類型等信息。
基本介紹
- 中文名:異常處理入口描述符
- 外文名:Exception handling entry descriptors
- 學科:計算機
- 定義:異常處理有關參數
- 有關術語:異常
- 領域:計算機系統
簡介,異常,異常處理,中斷描述符,
簡介
異常處理入口描述符是用來說明異常服務程式的入口的地址及有關屬性。異常處理入口描述符有時也可以稱為中斷描述符。異常處理入口描述符一般異常描述符表(中斷描述表)中,系統中不同的異常處所調用的異常處理程式是不同的。在異常描述符表中,不同異常處理入口描述符在表中有著不同描述。
異常
異常可分為處理器探測異常和編程異常。處理器探測異常是指當 CPU執行一條指令時所探測到的反常條件而產生的異常,可分為:故障 ( 異常處理結束後, 會重新執行引起異常的指令 );陷阱( 不再執行引起異常的指令, 主要用於調試程式 );異常結束( 發生了一個嚴重錯誤 , 處理程式將迫使進程終止 )。編程異常則是指編程者在程式中發出請求時發生的異常。異常處理一般按照以下步驟進行:首先保護現場,然後由中斷或異常處理程式執行真正的處理。在完成與特定事件對應的處理動作之後,再恢復現場。
異常處理
異常處理,是程式語言或計算機硬體里的一種機制,用於處理軟體或信息系統中出現的異常狀況(即超出程式正常執行流程的某些特殊條件)。
各種程式語言在處理異常方面具有非常顯著的不同點(錯誤檢測與異常處理區別在於:錯誤檢測是在正常的程式流中,處理不可預見問題的代碼,例如一個調用操作未能成功結束)。某些程式語言有這樣的函式:當輸入存在非法數據時不能被安全地調用,或者返回值不能與異常進行有效的區別。例如,C語言中的atoi函式(ASCII串到整數的轉換)在輸入非法時可以返回0。在這種情況下編程者需要另外進行錯誤檢測(可能通過某些輔助全局變數如C的errno),或進行輸入檢驗(如通過正則表達式),或者共同使用這兩種方法。
通過異常處理,我們可以對用戶在程式中的非法輸入進行控制和提示,以防程式崩潰。
從進程的視角,硬體中斷相當於可恢復異常,雖然中斷一般與程式流本身無關。
從子程式編程者的視角,異常是很有用的一種機制,用於通知外界該子程式不能正常執行。如輸入的數據無效(例如除數是0),或所需資源不可用(例如檔案丟失)。如果系統沒有異常機制,則編程者需要用返回值來標示發生了哪些錯誤。
中斷描述符
中斷描述符又稱中斷門,它用於描述中斷和異常處理程式的屬性。與實地址模式下的中斷向量一樣,保護模式下的中斷描述符也充當引導程式到服務程式初始點執行的指針。不同之處在於,在保護模式下,中斷描述符要占據連續的8個位元組單元。所有的中斷描述符都集中存放在中斷描述符表(IDT)中,由中斷描述符表取代實地址模式下的中斷向量表。
例如圖中低地址的0和1兩個位元組是中斷代碼的偏移量A15~A0;
高地址的6和7兩個位元組是中斷代碼的偏移量A31~A16;
2和3兩個位元組是段選擇符,段選擇符和偏移量用來形成中斷服務子程式的入口地址;
4和5兩個位元組稱為訪問許可權位元組,它標識該中斷描述符是否有效、服務程式的特權級和描述符的類型等信息。
具體描述如下:
P(present):表示中斷描述符的有效性。P=1,中斷描述符有效;P=0,中斷描述符無效。
DPL(descriptor privilege level):表示中斷優先權,是系統描述符被訪問的特權級,DPL占用2位,有4種編碼:00, 01, 10和11,共4級特權級,0級優先權最高。
TYPE:指示中斷描述符的不同類型,占用4位,在中斷描述符表中有3種類型的描述符:任務門、中斷門和自陷門。例如,1110指示32位中斷門,1111指示32位自陷門,0101指示32位任務門。
中斷描述符表相當於實地址模式下的中斷向量表,用於存放中斷描述符。表中最多可以包含256箇中斷描述符,每箇中斷描述符占用連續的8個位元組,因此IDT共占用2KB存儲空間,可以放在80486 CPU物理地址空間的任何地方,該表的位置和大小由中斷描述符表暫存器IDTR的值確定。
IDTR包含32位的基地址和16位段限,基地址定義中斷描述符表IDT在存儲器中的起始點,段限定義中斷描述符表所占的位元組個數。