淺談操作系統的用戶態和內核態
我們經常會聽到程序的用戶態和內核態,一個程序從用戶態進入了內核態。。。
什么是用戶態和內核態
內核態和用戶態到底指的是什么呢?我們這就解開其神秘面紗
所謂的用戶態、內核態,實際上是處理器(cpu)的一種狀態,在 cpu 狀態字里面用 1bit 表示
什么是用戶態
也叫普通態,cpu 訪問資源有限
用戶態的幾個特點
- cpu 訪問資源有限
- 程序可靠性、安全性
要求低
- 程序編寫維護比較簡單
什么是內核態
也叫特權態,cpu 可以訪問計算機的任何資源
內核態的特點?
- cpu 可以訪問任何資源
- 程序可靠性、安全性
要求高
- 編寫維護成本比較高
為什么需要區分用戶態和內核態
那么,經過上面的解釋,應該都了解了什么是用戶態和內核態。
BUT!有沒有想過,操作系統為什么要搞出用戶態和內核態?
原因是:
某些程序可靠性和安全性不高,如果這些程序執行了 cpu 的某些指令,會導致系統崩潰,如:設置時鍾、清理內存、調整網絡 等
操作系統是如何控制不同態的權限的
要控制權限,必須要對程序發出的每一條指令進行檢查。而這種檢查被稱為 地址翻譯
,這里不詳細展開。內核態程序通過繞過
地址翻譯執行特權指令,從而訪問所有資源。
程序應該運行在用戶態還是內核態?
-
用戶態
- 能運行在用戶態就運行在用戶態
- 涉及用戶數據和應用的操作
-
內核態
- 牽扯到計算機本體的操作
- 對時序要求比較高的操作
用戶態如何切換到內核態?
用戶態程序 陷入
到內核態有 3 種方法:
-
系統調用:使用的是操作系統為用戶開發的一個中斷
-
外圍設備中斷:網卡、打印機等
-
異常:缺頁等異常
參考資料
https://blog.csdn.net/ddna/article/details/4941373 用戶態和內核態是如何切換,比較底層
https://blog.csdn.net/shanghx_123/article/details/83151064 用戶態和內核態是如何切換
https://www.cnblogs.com/Sargreis/p/6874866.html 用戶態和內核態是如何切換,講的比較通俗
《操作系統之哲學原理第2版》- 鄒恆明