非法指令陷阱

非法指令陷阱

單片機(MCU)正常工作時,每次獲得的都是由彙編或編譯程式生成的有效操作碼,MCU能正確解釋並執行它們,但是,當MCU受到干擾或系統出現混亂時,可能得到無法識別的無效操作碼,即非法指令,此時MCU就進入非法指令陷阱,MCU就停在非法指令處。

簡介

在計算機中,中斷是指CPU對系統發生某事件時的這樣一種回響: CPU 暫停正在執行的程式,在保留現場後自動地轉去執行該事件的中斷處理程式;執行完後,再返回到原程式的斷點處繼續執行。內中斷則是指由於CPU 內部事件所引起的中斷,如程式出錯(非法指令、地址越界)、電源故障等。 內中斷(trap)也被譯為“捕獲”或“陷入,非法指令屬於內部中斷,非法指令陷阱通常是因為執行檔本身出現錯誤, 或者試圖執行數據段和無效操作碼,堆疊溢出時也有可能產生這個信號。

中斷與陷阱

非法指令陷阱 非法指令陷阱

根據系統對中斷處理的需要,作業系統一般對中斷進行分類並對不同的中斷賦予不同的處理優先權,以便在不同的中斷同時發生時,按輕重緩急進行處理。

根據中斷源產生的條件,可把中斷分為外中斷和內中斷。外中斷是指來自處理器和記憶體外部的中斷,包括I/0設備發出的I/O中斷、外部信號中斷(例如用戶鍵人ESC鍵)。各種定時器引起的時鐘中斷以及調試程式中設定的斷點等引起的調試中斷等。外中斷在狹義上一般被稱為中斷。

內中斷主要指在處理器和記憶體內部產生的中斷。內中斷一般稱為陷阱(trap)或異常。它包括程式運算引起的各種錯誤,如地址非法、校驗錯、頁面失效、存取訪問控制錯、算術操作溢出、數據格式非法、除數為零、非法指令、用戶程式執行特權指令、分時系統中的時間片中斷以及從用戶態到核心態的切換等都是陷阱的例子。

為了按中斷源的輕重緩急處理回響中斷,作業系統為不同的中斷賦予不同的優先權。例如在UNIX系統中,外中斷和陷阱的優先權共分為8級。為了禁止中斷或禁止中斷,CPU的處理器狀態字PSW中也設有相應的優先權。如果中斷源的優先權高於PSW的優先權,則CPU回響該中斷源的請求;反之,CPU禁止該中斷源的中斷請求。

各中斷源的優先權在系統設計時給定,在系統運行時是固定的。而處理器的優先權則根據執行情況由系統程式動態設定。除了在優先權的設定方面有區別之外,中斷和陷阱還有如下 主要區別

陷阱通常由處理器正在執行的現行指令引起,而中斷則是由與現行指令無關的中斷源引起的。陷阱處理程式提供的服務為當前進程所用,而中斷處理程式提供的服務則不是為了當前進程的。中斷是由硬體引起的,而異常是由軟體引起的;中斷是異步的,而異常是同步的。

陷阱處理程式分類

作業系統中的陷井分為兩類:一類是標準系統陷井。這種陷井的處理程式是由系統提供的,用 戶不能對其進行修改。另一類是用戶專用陷井。這 種陷並的處理程式可以由用戶自己定義。具體 地說,在系統中有這樣一些陷井:

( l )專由系統處理的陷阱。

(2 )必須先由系統處理,然後才可以由用戶處理的陷阱。如 在Debug下的Tarce / Ba e rk 等。

(3 ) 若 開放,則由用 戶 處理:若 關 閉,則 由 系統處 理 的 陷 阱。

(4 ) 軟 件產 生 的 陷 阱。

(5)空 陷 阱

陷阱 處 理 是 由 固 件 和 軟 件 共 同 完 成 的。它首先 由固 件來識別,然後 由 軟 件 進 行 處 理。每當一個陷阱發生,固 件從 系 統 可 用陷阱保護區(TSA)佇列上取下一個STA,插入進入陷阱的那個任務的STA 佇列中(該佇列由TCB中的TS P指出 ),並將該任務進入陷阱時的一部分現場信息保 到 TSA 中(還有一部分現場信息 由軟體保存到STA 中 )。

陷阱處理所完成的功能

1. 定義一個陷阱處理程式

2. 開放陷阱

3. 關閉陷阱

4. 傳送陷阱條件

5. 傳送軟體陷阱條件

6. 組間傳送陷阱條件

相關詞條

熱門詞條

聯絡我們