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

2022-03-10 00:08:20 字數 1080 閱讀 6489

最近,又看起來作業系統,對其中的一些概念還不是理解的很透徹,現在再來溫習一遍。

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

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

(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)的巨集指令或廣義指令。

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

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

指令和指令系統

第一部分,是指令的操作碼。操作碼用於指明本條指令的操作功能,例如,是算術加運算 減運算還是邏輯與 或運算功能,是否是讀 寫記憶體或讀 寫外設操作功能,是否是程式轉移和子程式呼叫或返回操作功能等,計算機需要為每條指令分配乙個確定的操作碼。第二部分,是指令的運算元位址,用於給出被操作的資訊 指令或資料 ...

彙編指令 資料處理指令之邏輯指令

邏輯指令集有 and orr eor bic 1 與邏輯指令一般用於置零某位 and logical and operation.syntax and rd,rn,op2 description load rd with logical and of rn with op2.rd rn and op...