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