內核模式和用戶模式是硬件功能,特別是處理器的功能.專為中高端系統(PC,功能手機,智能手機,除最簡單的網絡設備之外的所有系統……)設計的處理器都包含此功能.內核模式可以使用不同的名稱:管理程序模式,特權模式等.在x86(PC中的處理器類型)中,它被稱為“ring 0”,用戶模式稱為“ring 3”.
處理器在寄存器中有一點存儲空間,用于指示它是處于內核模式還是用戶模式. (在具有兩個以上模式的處理器上,這可能不止一位.)某些操作只能在內核模式下執行,特別是通過修改控制MMU的寄存器來更改虛擬內存配置.此外,還有從用戶模式切換到內核模式的方法很少,它們都需要跳轉到內核代碼控制的地址.這允許在內核模式下運行的代碼控制在用戶模式下運行的代碼可以訪問的內存.
類Unix操作系統(以及大多數其他具有進程隔離的操作系統)分為兩部分:
>內核以內核模式運行.內核可以做任何事情.
>進程以用戶模式運行.進程無法訪問硬件,無法訪問其他進程的內存(顯式共享除外).
因此,操作系統利用硬件功能(特權模式,MMU)來強制進程之間的隔離.
基于Microkernel的操作系統具有更細粒度的體系結構,在內核模式下運行的代碼更少.
當用戶模式代碼需要執行不能直接執行的操作(例如訪問文件,訪問外設,與另一個進程通信,……)時,它會生成system call:跳轉到內核代碼中的預定義位置.
當硬件外圍設備需要從CPU請求注意時,它會將CPU切換到內核模式并跳轉到內核代碼中的預定義位置.這稱為interrupt.
進一步閱讀