核心態和使用者態的區別
為什麼CPU給予每個程式不同的權限?
該部落格上撰寫的文章是出於教學目的而創建的。 另外,文章中的資訊可能不正確,請謹慎。
CPU 不會以相同的權限執行所有程式碼。 作業系統的核心程式碼運行在高權限的核心態,一般程式運行在受限的使用者態。
通常所說的核心級和用戶級也常指這個權限區域。
使用者模式
瀏覽器、遊戲和即時通訊程式等應用程式在使用者模式下運作。
- 硬體無法直接控制。
- 無法存取任意實體記憶體。
- 您無法隨意讀取其他進程的記憶體。
- 即使出現問題,通常也只是終止相關進程。
由於每個程式都提供了獨立的虛擬位址空間,即使它們使用相同的位址值,它們實際上也可能指向不同的記憶體。
核心模式
核心模式可讓您執行 CPU 的特權指令並管理系統範圍的記憶體和裝置。
- 管理頁表和虛擬記憶體。
- 處理中斷。
- 調度進程和執行緒。
- 運行設備驅動程式。
- 它檢查請求是否正確,然後執行硬體操作。
權限越大,核心模式錯誤的影響就越大。 這就是為什麼一個有問題的驅動程式可能會導致整個作業系統停止運作。
這兩個區域透過系統呼叫連接。
當使用者程式想要讀取檔案或發送網路資料時,它必須向核心發出請求。
使用者態程式
↓ System Call
權限檢查+進入內核態
↓
文件、記憶體和裝置操作
↓
返回使用者模式
使用者模式和核心模式之間的切換與簡單的函數呼叫不同。 需要更改CPU權限,檢查核心接收的位址和長度是否安全,並傳回結果。
這並不意味著核心模式一定比使用者模式更快。 兩者之間的差異不是速度等級,而是可以執行的命令和可以存取的資源的權限差異。
之所以設定這個界限,並不是為了讓你感到不舒服。 這是為了防止一般程式的錯誤或攻擊直接控制整台電腦。