用戶態和內核態的理解和區別

CPU的兩種工做狀態:內核態(管態)和用戶態(目態)。安全

內核態: 
1.系統中既有操做系統的程序,也有普通用戶程序。爲了安全性和穩定性,操做系統的程序不能隨便訪問,這就是內核態。即須要執行操做系統的程序就必須轉換到內核態才能執行!!! 
2. 內核態能夠使用計算機全部的硬件資源!!!操作系統

用戶態:不能直接使用系統資源,也不能改變CPU的工做狀態,而且只能訪問這個用戶程序本身的存儲空間!!!!進程

三種從「用戶態」轉換到「內核態」的最主要(觸發)方式: 
a.系統調用(用戶進程主動發起的):這是用戶態進程「主動」要求切換到內核態的一種方式,用戶態進程經過「系統調用」身子那個使用操做系統提供的服務城區完成工做!! 
b.異常:當CPU執行運行在用戶態下的程序時,發生了某些不可知的異常,這是會觸發當前運行進程切換處處理此異常的內核程序中,也就轉到了內核態,好比缺頁異常!! 
c.外圍設備的中斷:當外圍設備完成用戶請求的操做後,會向CPU發出相應的中斷信號,這時CPU會暫停執行下一條即將要執行的指令轉而去執行與中斷信號對應的處理程序,若是先前執行的指令時用戶態下的程序,那麼這個轉換過程天然也就發生了由用戶態到內核態的切換。好比硬盤讀寫操做完成,系統會切換到硬盤讀寫的中斷處理程序中執行後續操做等。ip

以上三種觸發方式,本質上的切換操做是一致的,沒有任何區別,都是至關於執行了一箇中斷相應的過程!!由於系統調用實際上最終也是「中斷機制」實現的,而異常和中斷的處理機制基本上也是一致的!!。內存

涉及到「用戶態切換到內核態」的步驟主要包括: 
1.從當前進程的描述符中提取內核棧的ss0及esp0信息。 
2.使用ss0和esp0指向的內核棧將當前進程的cs、eip、eflags、ss、esp信息保存起來,這個過程也完成了有用戶態到內存棧的切換過程,同時保存了被暫停執行的程序的下一條指令。 
3.將先前有中斷向量檢索獲得的中斷程序的cs、eip信息裝入相應的寄存器,開始執行中斷處理程序,這是就轉到了內核態的程序執行了。資源

總結: 
1.計算機系統中有「操做系統程序」和「普通用戶程序」。 
2.操做系統程序執行就是在「內核態」下執行的。 
3.普通用戶程序就是在「用戶態」下執行的。 
4.內核態能夠使用全部的硬件資源,用戶態不能直接使用系統資源,也不能改變CPU的工做狀態,只能訪問用戶程序本身的存儲空間!! 
5.爲了安全和穩定性,操做系統程序是不能隨便訪問的!!! 
6.引發「用戶態切換到內核態」的本質就是「CPU實行了一次中斷相應」!!硬件

相關文章
相關標籤/搜索