我們經常會聽到程式的使用者态和核心态,一個程式從使用者态進入了核心态。。。
核心态和使用者态到底指的是什麼呢?我們這就解開其神秘面紗
所謂的使用者态、核心态,實際上是處理器(cpu)的一種狀态,在 cpu 狀态字裡面用 1bit 表示
也叫普通态,cpu 通路資源有限
cpu 通路資源有限
程式可靠性、安全性要求低
程式編寫維護比較簡單
也叫特權态,cpu 可以通路計算機的任何資源
cpu 可以通路任何資源
程式可靠性、安全性要求高
編寫維護成本比較高
那麼,經過上面的解釋,應該都了解了什麼是使用者态和核心态。
BUT!有沒有想過,作業系統為什麼要搞出使用者态和核心态?
原因是:
某些程式可靠性和安全性不高,如果這些程式執行了 cpu 的某些指令,會導緻系統崩潰,如:設定時鐘、清理記憶體、調整網絡 等
要控制權限,必須要對程式發出的每一條指令進行檢查。而這種檢查被稱為 位址翻譯,這裡不詳細展開。核心态程式通過繞過位址翻譯執行特權指令,進而通路所有資源。
使用者态
能運作在使用者态就運作在使用者态
涉及使用者資料和應用的操作
核心态
牽扯到計算機本體的操作
對時序要求比較高的操作
使用者态程式 陷入 到核心态有 3 種方法:
系統調用:使用的是作業系統為使用者開發的一個中斷
外圍裝置中斷:網卡、列印機等
異常:缺頁等異常