訪管指令

訪管指令

“訪管指令”是可以在目態下執行的指令。當源程序中有需要操作系統服務的要求時,編譯程序就會在由源程序轉換成的目標程序中安排一條“訪管指令”並設置一些參數。當目標程序執行時,中央處理器若取到了“訪管指令”就產生一個中斷事件,中斷裝置就會把中央處理器轉換成管態,並讓操作系統處理該中斷事件。操作系統分析訪管指令中的參數,然後讓相應的“系統調用”子程序為用戶服務。系統調用功能完成後,操作系統把中央處理器的管態改為目態,並返回到用戶程序。

訪管指令


從程序調用的角度來看,用戶應用程序中要調用一些子程序。子程序可以分為用戶自己編寫的子程序和軟體提供的子程序,對後者的訪問即被稱為訪問系統程序(訪管)指令,又稱為陷阱(TRAP)指令。
訪管指令並不是特權指令。所謂特權指令,是指用於操作系統或其他系統軟體的指令,一般不提供給用戶使用。

由來


我們可以進一步問另一個問題:為什麼要在程序執行中引入“訪管指令”呢?
我們知道,用戶程序只能在目態下運行,並且不能使用特權指令。因而就存在這麼一個問題:如果用戶程序想要啟動外設,或者要完成在目態下無法完成的工作,該怎麼辦?要解決這一問題必須有三個條件:
(1)需要有一條指令,能使處理機從目態進入管態,並向操作系統提交要代為完成的工作;
(2)在管態下由操作系統完成用戶程序的請求;
(3)操作系統完成所做工作后能返回到用戶程序,即從管態回到原來的目態。
解決這個問題要靠訪管指令。訪管指令本身不是特權指令,其基本功能是讓程序擁有“自願進管”的手段,從而引起訪管中斷。
自願性中斷事件(軟體中斷)是正在運行的程序所期待的事件。這種事件是由於執行了一條訪管指令而引起的,它表示正在運行的程序對操作系統有某種需求。一旦機器執行這一中斷時,便自願停止現行程序而轉入訪管中斷處理程序處理。例如,要求操作系統協助啟動外圍設備工作。
所謂系統調用就是用戶在程序中能用訪管指令調用的由操作系統提供的子功能集合。其中每一個子功能稱為一個系統調用命令。