淺談操作系統的用戶態和內核態


淺談操作系統的用戶態和內核態

我們經常會聽到程序的用戶態和內核態,一個程序從用戶態進入了內核態。。。

什么是用戶態和內核態

內核態和用戶態到底指的是什么呢?我們這就解開其神秘面紗

所謂的用戶態、內核態,實際上是處理器(cpu)的一種狀態,在 cpu 狀態字里面用 1bit 表示

什么是用戶態

也叫普通態,cpu 訪問資源有限

用戶態的幾個特點

  1. cpu 訪問資源有限
  2. 程序可靠性、安全性要求低
  3. 程序編寫維護比較簡單

什么是內核態

也叫特權態,cpu 可以訪問計算機的任何資源

內核態的特點?

  1. cpu 可以訪問任何資源
  2. 程序可靠性、安全性要求高
  3. 編寫維護成本比較高

為什么需要區分用戶態和內核態

那么,經過上面的解釋,應該都了解了什么是用戶態和內核態。

BUT!有沒有想過,操作系統為什么要搞出用戶態和內核態?

原因是:

某些程序可靠性和安全性不高,如果這些程序執行了 cpu 的某些指令,會導致系統崩潰,如:設置時鍾、清理內存、調整網絡 等


操作系統是如何控制不同態的權限的

要控制權限,必須要對程序發出的每一條指令進行檢查。而這種檢查被稱為 地址翻譯,這里不詳細展開。內核態程序通過繞過地址翻譯執行特權指令,從而訪問所有資源。


程序應該運行在用戶態還是內核態?

  • 用戶態

    • 能運行在用戶態就運行在用戶態
    • 涉及用戶數據和應用的操作
  • 內核態

    • 牽扯到計算機本體的操作
    • 對時序要求比較高的操作

用戶態如何切換到內核態?

用戶態程序 陷入 到內核態有 3 種方法:

  1. 系統調用:使用的是操作系統為用戶開發的一個中斷

  2. 外圍設備中斷:網卡、打印機等

  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版》- 鄒恆明


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM