天天看點

淺談作業系統的使用者态和核心态

我們經常會聽到程式的使用者态和核心态,一個程式從使用者态進入了核心态。。。

核心态和使用者态到底指的是什麼呢?我們這就解開其神秘面紗

所謂的使用者态、核心态,實際上是處理器(cpu)的一種狀态,在 cpu 狀态字裡面用 1bit 表示

也叫普通态,cpu 通路資源有限

cpu 通路資源有限

程式可靠性、安全性要求低

程式編寫維護比較簡單

也叫特權态,cpu 可以通路計算機的任何資源

cpu 可以通路任何資源

程式可靠性、安全性要求高

編寫維護成本比較高

那麼,經過上面的解釋,應該都了解了什麼是使用者态和核心态。

BUT!有沒有想過,作業系統為什麼要搞出使用者态和核心态?

原因是:

某些程式可靠性和安全性不高,如果這些程式執行了 cpu 的某些指令,會導緻系統崩潰,如:設定時鐘、清理記憶體、調整網絡 等

要控制權限,必須要對程式發出的每一條指令進行檢查。而這種檢查被稱為 位址翻譯,這裡不詳細展開。核心态程式通過繞過位址翻譯執行特權指令,進而通路所有資源。

使用者态

能運作在使用者态就運作在使用者态

涉及使用者資料和應用的操作

核心态

牽扯到計算機本體的操作

對時序要求比較高的操作

使用者态程式 陷入 到核心态有 3 種方法:

系統調用:使用的是作業系統為使用者開發的一個中斷

外圍裝置中斷:網卡、列印機等

異常:缺頁等異常

繼續閱讀