複製鏈接
請複製以下鏈接發送給好友

陷阱

(計算機術語)

鎖定
陷阱,是計算機術語。
中文名
陷阱
外文名
trap
類    型
軟件中斷
緣    由
出錯或者用户程序
其他意義
主要是指某些錯誤

陷阱基本介紹

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

陷阱操作方法

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