陷阱

計算機術語

指的是當異常或者中斷髮生時,處理器捕捉到一個執行線程,並且將控制權轉移到操作系統中某一個固定地址的機制。

基本介紹


陷阱指的是當異常或者中斷髮生時,處理器捕捉到一個執行線程,並且將控制權轉移到操作系統中某一個固定地址的機制。現代操作系統是由中斷驅動的,中斷分為硬體中斷和軟體中斷。而陷阱屬於一種軟體中斷。如果計算機沒有進程要執行,沒有用戶響應請求,操作系統將等待某個事件的發生。而事件總是由中斷或者陷阱引起的。
在“簡單網路管理協議”(SNMP) 中,代理髮送給管理系統的消息,表示在運行代理的主機上有事件發生

操作方法


大家都知道,現代的CPU都是有優先順序概念的,用戶程序運行在低優先順序,操作系統運行在高優先順序。高優先順序的一些指令低優先順序無法執行。有一些操作只能由操作系統來執行,用戶想要執行這些操作的時候就要通知操作系統,讓操作系統來執行。用戶態的程序就是用這種方法來通知操作系統的。
具體怎樣做的呢?操作系統會把這些功能編號,比如向一個埠寫一個字元的功能調用編號 12,有兩個參數,埠號 port 和寫入的字元 bytevalue。我們可以如下實現:
int outb(int port, int bytevalue)
{
__asm mov r0, 12;
__asm mov r1, port;
__asm mov r2, bytevalue;
__asm trap
return r0;
}
在操作系統的 trap 處理的 handler 裡面,相信大家已經知道怎麼辦了。有些敏感的讀者可能已經明白了,原來一部分 C 的庫函數是用這種方法實現的。