我们经常会听到程序的用户态和内核态,一个程序从用户态进入了内核态。。。
内核态和用户态到底指的是什么呢?我们这就解开其神秘面纱
所谓的用户态、内核态,实际上是处理器(cpu)的一种状态,在 cpu 状态字里面用 1bit 表示
也叫普通态,cpu 访问资源有限
要求低
也叫特权态,cpu 可以访问计算机的任何资源
要求高
那么,经过上面的解释,应该都了解了什么是用户态和内核态。
BUT!有没有想过,操作系统为什么要搞出用户态和内核态?
如果都处于一个态下,有什么问题吗?
想象一下,如果一个国家的所有人都能获得国家的机密资料、控制国家资源,那这个国家也就离崩溃不远了。
操作系统也是如此,所以我们要限制不用的程序访问资源的权限。
要控制权限,必须要对程序发出的每一条指令进行检查。而这种检查被称为 地址翻译
,这里不详细展开。内核态程序通过绕过
地址翻译执行特权指令,从而访问所有资源。
用户态
内核态
通过 软中断
https://blog.csdn.net/ddna/article/details/4941373 用户态和内核态是如何切换,比较底层
https://blog.csdn.net/shanghx_123/article/details/83151064 用户态和内核态是如何切换
https://www.cnblogs.com/Sargreis/p/6874866.html 用户态和内核态是如何切换,讲的比较通俗
《操作系统之哲学原理第2版》- 邹恒明
原文:https://www.cnblogs.com/wudanyang/p/12570344.html