簡介
計算機指令是規定計算機操作類型及運算元地址的一組二進制代碼。是控制計算機動作的 “命令”。一條機器指令通常分操作碼與運算元兩部分,是一串若干位的二進制代碼。操作碼使計算機產生不同的動作,運算元指明被操作的對象,可以是運算元本身,也可是被運算元在記憶體中的地址。陷阱指令是處理計算機系統意外中斷的指令 ,是由於系統調用引起處理機中斷的指令。陷阱指令可以使執行流程從用戶態陷入核心並把控制權轉移給作業系統,使得用戶程式可以調用核心函式和使用硬體從而獲得作業系統所提供的服務,比如用視頻軟體放一個電影,視頻軟體就發出陷阱使用顯示器和音效卡從而訪問硬體。
陷阱
陷阱是由於某條指令執行或結果出現異常引起的程式控制權自動轉移,譬如非法指令、非法訪問等異常就會引起陷阱。陷阱表中存放有兩類陷阱,一種是硬體陷阱,另一種是由軟體陷阱指令產生的軟體陷阱。陷阱類似異常的進程調用,需中斷現行程式的進程、保留現場並轉到處理程式中去。的陷阱可分為大類精確型陷阱、延遲型陷阱和中斷。精確型陷阱是由於特殊的指令而產生的,它發生在狀態被產生陷阱的指令改變之前。延遲型陷阱也是由於特殊的指令而產生的,它發生在引起陷阱的指令將程式狀態改變之後。狀態的改變可以是由於執行了陷阱產生指令或是其隨後的某條指令。延遲型陷阱在執行完陷阱產生指令之後會執行一條或多條指令,但是延遲型陷阱必須發生在任何一條依賴於陷阱產生指令的指令被執行之前。也就是說,延遲型陷阱不能被延遲到一條與陷阱產生指令可能會改變的暫存器、條件碼或是其他軟體可見狀態相關的指令執行之後。同時除非是浮點異常或協處理器異常,否則延遲型陷阱也不能被延遲到精確性指令之後。中斷既不是精確型陷阱也不是延遲型陷阱。它由處理器核外部的異步事件產生的中斷請求引起 。
原因
程式錯誤是指在軟體運行中因為程式本身有錯誤而造成的功能不正常、當機、數據丟失、非正常中斷等現象。系統程式錯誤是指系統程式本身有錯誤而造成的功能不正常、當機或中斷等現象。有些系統程式錯誤會造成計算機安全隱患,此時叫做系統漏洞。
硬錯誤是由於硬體的損壞或缺陷造成的,因此數據總是不正確的,此類錯誤是無法糾正的;軟錯誤是隨機出現的,例如在記憶體附近突然出現電子干擾等因素,可能造成記憶體軟錯誤的出現。作業系統或程式訪問記憶體地址不在當前物理記憶體中,而在磁碟上的頁面檔案內的情況。
調用特權指令,所謂特權指令,就是在系統態時運行的指令,是關係到系統全局的指令。其對記憶體空間的訪問範圍基本不受限制,不僅能訪問用戶存儲空間,也能訪問系統存儲空間,如啟動各種外部設備、設定系統時鐘時間、關中斷、清主存、修改存儲器管理暫存器、執行停機指令、轉換執行狀態等。特權指令只允許作業系統使用,不允許應用程式使用,否則會引起系統混亂 。
系統調用
系統調用(system call),又稱為系統調用,指運行在用戶空間的程式向作業系統核心請求需要更高許可權運行的服務。系統調用提供用戶程式與作業系統之間的接口。大多數系統互動式操作需求在核心態運行。如設備IO操作或者進程間通信。作業系統的進程空間可分為用戶空間和核心空間,它們需要不同的執行許可權。其中系統調用運行在核心空間。系統調用和普通庫函式調用非常相似,只是系統調用由作業系統核心提供,運行於核心核心態,而普通的庫函式調用由函式館或用戶自己提供,運行於用戶態。