内核态(Kernel Mode)与用户态(User Mode)
內(nèi)核態(tài): CPU可以訪問內(nèi)存所有數(shù)據(jù), 包括外圍設備, 例如硬盤, 網(wǎng)卡. CPU也可以將自己從一個程序切換到另一個程序
用戶態(tài): 只能受限的訪問內(nèi)存, 且不允許訪問外圍設備. 占用CPU的能力被剝奪, CPU資源可以被其他程序獲取
為什么要有用戶態(tài)和內(nèi)核態(tài)
由于需要限制不同的程序之間的訪問能力, 防止他們獲取別的程序的內(nèi)存數(shù)據(jù), 或者獲取外圍設備的數(shù)據(jù), 并發(fā)送到網(wǎng)絡, CPU劃分出兩個權(quán)限等級 -- 用戶態(tài) 和 內(nèi)核態(tài)
用戶態(tài)與內(nèi)核態(tài)的切換
所有用戶程序都是運行在用戶態(tài)的, 但是有時候程序確實需要做一些內(nèi)核態(tài)的事情, 例如從硬盤讀取數(shù)據(jù), 或者從鍵盤獲取輸入等. 而唯一可以做這些事情的就是操作系統(tǒng), 所以此時程序就需要先操作系統(tǒng)請求以程序的名義來執(zhí)行這些操作.
這時需要一個這樣的機制: 用戶態(tài)程序切換到內(nèi)核態(tài), 但是不能控制在內(nèi)核態(tài)中執(zhí)行的指令
這種機制叫系統(tǒng)調(diào)用, 在CPU中的實現(xiàn)稱之為陷阱指令(Trap Instruction)
他們的工作流程如下:
轉(zhuǎn)載于:https://www.cnblogs.com/zemliu/p/3695503.html
總結(jié)
以上是生活随笔為你收集整理的内核态(Kernel Mode)与用户态(User Mode)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MVC的传递数据的方法
- 下一篇: Repository 仓储,你的归宿究竟