作業系統系列 核心態和使用者態

2021-09-24 04:28:56 字數 1722 閱讀 7921

核心態和使用者態:

為了保護作業系統及其資料結構,處理機的執行狀態分成兩種模式。作業系統執行於核心態,具有較高的特權,能執行一切命令,訪問所有暫存器和儲存區。使用者程式執行於使用者態,具有較低特權, 只能執行規定的命令,訪問指定的暫存器和儲存區。

【指令的劃分】

特權指令:只能由作業系統使用、使用者程式不能使用的指令(舉例:啟動i/o,記憶體清零,修改程式狀態字,設定時鐘, 允許/禁止終端,停機)。

非特權指令:使用者程式可以使用的指令(舉例:控制轉移,算數運算,取數指令,訪管指令(使使用者程式從使用者態陷入內 核態))

【cpu狀態之間的轉換】

使用者態—>核心態:唯一途徑是通過中斷、異常、陷入機制(訪管指令)

核心態—>使用者態:設定程式狀態字psw

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

通常來說,以下三種情況會導致使用者態到核心態的切換:

1)系統呼叫

這是使用者態程序主動要求切換到核心態的一種方式,使用者態程序通過系統呼叫申請使用作業系統提供的服務程式完成工 作。而系統呼叫的機制其核心還是使用了作業系統為使用者特別開放的乙個中斷來實現。

2)異常

當cpu在執行執行在使用者態下的程式時,發生了某些事先不可知的異常,這時會觸發由當前執行程序切換到處理此異常 的核心相關程式中,也就轉到了核心態,比如缺頁異常。

3)外圍裝置的中斷

當外圍裝置完成使用者請求的操作後,會向cpu發出相應的中斷訊號,這時cpu會暫停執行下一條即將要執行的指令轉而 去執行與中斷訊號對應的處理程式,

如果先前執行的指令是使用者態下的程式,那麼這個轉換的過程自然也就發生了由使用者態到核心態的切換。比如硬碟讀寫操 作完成,系統會切換到硬碟讀寫的中斷處理程式中執行後續操作等。

這3種方式是系統在執行時由使用者態轉到核心態的最主要方式,其中系統呼叫可以認為是使用者程序主動發起的,異常和 外圍裝置中斷則是被動的。

【核心態與使用者態的區別】

[核心]硬體的第一次延伸,系統將一些與硬體緊密相關的模組放在核心(中斷處理,時鐘管理)核心在執行類似程序控制 等基本操作時,往往是利用原語操作實現的。

[原語]由若干條指令構成、用於完成一定功能的過程。原語是「原子操作」。操作中的所有動作,要麼全做,要麼全不做。

1)核心態與使用者態是作業系統的兩種執行級別,當程式執行在3級特權級上時,就可以稱之為執行在使用者態。因為這是 最低特權級,是普通的使用者程序執行的特權級,大部分使用者直接面對的程式都是執行在使用者態;

2)當程式執行在0級特權級上時,就可以稱之為執行在核心態。

3)執行在使用者態下的程式不能直接訪問作業系統核心資料結構和程式。當我們在系統中執行乙個程式時,大部分時間是 執行在使用者態下的,在其需要作業系統幫助完成某些它沒有權力和能力完成的工作時就會切換到核心態。

4)這兩種狀態的主要差別是:

處於使用者態執行時,程序所能訪問的記憶體空間和物件受到限制,其所占有的處理機是可被搶占的 ;而處於核心態執行中的程序,則能訪問所有的記憶體空間和物件,且所占有的處理機是不允許被搶占的。

作業系統使用者態和核心態

核心態 cpu可以訪問記憶體所有資料,包括外圍裝置,例如硬碟,網絡卡.cpu也可以將自己從乙個程式切換到另乙個程式 使用者態 只能受限的訪問記憶體,且不允許訪問外圍裝置.占用cpu的能力被剝奪,cpu資源可以被其他程式獲取 為什麼要有使用者態和核心態 由於需要限制不同的程式之間的訪問能力,防止他們獲...

作業系統 使用者態和核心態

3g 4g大部分是共享的,是核心態的位址空間。這裡存放整個核心的 和所有的核心模組以及核心所維護的資料。2 特權級的概念 對於任何作業系統來說,建立乙個程序是核心功能。建立程序要做很多任務作,會消耗很多物理資源。比如分配物理記憶體,父子程序拷貝資訊,拷貝設定頁目錄頁表等等,這些工作得由特定的程序去做...

作業系統 核心態和使用者態

核心態和使用者態 核心態和使用者態 核心態 當乙個任務 程序 執行系統呼叫而陷入核心 中執行時,我們就稱程序處於核心執行態 或簡稱為核心態 其他的屬於使用者態。使用者程式執行在使用者態,作業系統執行在核心態.作業系統核心執行在核心態,而伺服器執行在使用者態 使用者態不能干擾核心態.所以cpu指令就有...