系統呼叫指令,訪管指令之間的區別和聯絡

2022-07-29 02:06:12 字數 1033 閱讀 1126

當源程式中有需要作業系統服務的要求時,編譯程式就會在由源程式轉換成的目標程式中安排一條「訪管指令」並設定一些引數。當目標程式執行時,**處理器若取到了「訪管指令」就產生乙個中斷事件,中斷裝置就會把**處理器轉換成管態,並讓作業系統處理該中斷事件。作業系統分析訪管指令中的引數,然後讓相應的「系統呼叫」子程式為使用者服務。其次,訪管指令是在目態下使用的指令。

我們知道,使用者程式只能在目態下執行,並且不能使用特權指令。因而就存在這麼乙個問題:如果使用者程式想要啟動外設,或者要完成在目態下無法完成的工作,該怎麼辦?要解決這一問題必須有三個條件:

(1)需要有一條指令,能使處理機從目態進入管態,並向作業系統提交要代為完成的工作;

(2)在管態下由作業系統完成使用者程式的請求;

(3)作業系統完成所做工作後能返回到使用者程式,即從管態回到原來的目態。

解決這個問題要靠訪管指令。訪管指令本身不是特權指令,其基本功能是讓程式擁有「自願進管」的手段,從而引起訪管中斷。

還有自己找的一些資料,訪管指令由指令碼和訪管中斷號兩部分組成,即 svc n  ,式(1)   其中svc(super visor call)為指令碼,表明是訪管指令;n為訪管中斷號,其值是一整數,具體表示何種訪問請求。當中斷發生時,硬體終端裝置將訪管中斷號n送入舊的程式狀態字內的中斷碼字段,訪管中斷總控程式由系統堆疊中將其取出,並據此轉入對應的服務程式中。(這裡面有點需要注意的,系統呼叫的程式是根據訪管中斷號來確定的)。

在實際使用時,使用者程式與作業系統之間還需要相互傳遞引數和返回值。因此,使用者使用訪管指令的一般形式為:準備引數  ;svc n ;取返回值   式(2)。根據具體房管要求約定,引數及返回值可以通過暫存器傳遞,也可以通過記憶體傳遞。對於後者,作業系統必須能夠訪問程序空間。

通常,將式(2)稱為系統呼叫指令,它除了訪管指令外,還有準備引數和取返回值。為了使用方便,在高階語言中一般將其寫為同過程呼叫相類似的形式,即:返回值=系統呼叫名稱(引數1,引數2,...,引數n) 式(3)。 當然,編譯程式會將式(3)翻譯成形如(2)的形式。其中,系統呼叫名稱對應式(1),不同的系統呼叫名稱對應不同的整數n。在有些書籍中,也稱式(3)為代表式(2)的巨集指令或廣義指令。

系統呼叫指令 訪管指令 廣義指令之間的聯絡與區別

最近,又看起來作業系統,對其中的一些概念還不是理解的很透徹,現在再來溫習一遍。當源程式中有需要作業系統服務的要求時,編譯程式就會在由源程式轉換成的目標程式中安排一條 訪管指令 並設定一些引數。當目標程式執行時,處理器若取到了 訪管指令 就產生乙個中斷事件,中斷裝置就會把 處理器轉換成管態,並讓作業系...

指令和偽指令的區別

這個標題看似簡單,但是我卻一下子沒明白,這裡做下記錄。指令 每一條指令語句在源程式彙編時都要產生可供計算機執行的指令 即目標 所以這種語句又叫做可執行語句,每一條指令語句表示cpu具有的乙個基本能力,比如資料傳送,兩數相加或相減,移位等,而這種能力是在目標程式執行時完成的,是依賴於cpu 儲存器 i...

ARM指令和THUMB指令的區別

arm處理器的工作狀態 在arm的體系結構中,可以工作在三種不同的狀態,一是arm狀態,二是thumb狀態及thumb 2狀態,三是除錯狀態。嵌入式系統開發與應用教程 第2版 上介紹說 有兩種狀態arm狀態和thumb狀態,當時初學甚為不解,現在一知半解時再看忽然想到了顯示中的例子 arm核就好比乙...