浅谈操作系统的用户态和内核态


浅谈操作系统的用户态和内核态

我们经常会听到程序的用户态和内核态,一个程序从用户态进入了内核态。。。

什么是用户态和内核态

内核态和用户态到底指的是什么呢?我们这就解开其神秘面纱

所谓的用户态、内核态,实际上是处理器(cpu)的一种状态,在 cpu 状态字里面用 1bit 表示

什么是用户态

也叫普通态,cpu 访问资源有限

用户态的几个特点

  1. cpu 访问资源有限
  2. 程序可靠性、安全性要求低
  3. 程序编写维护比较简单

什么是内核态

也叫特权态,cpu 可以访问计算机的任何资源

内核态的特点?

  1. cpu 可以访问任何资源
  2. 程序可靠性、安全性要求高
  3. 编写维护成本比较高

为什么需要有用户态和内核态

那么,经过上面的解释,应该都了解了什么是用户态和内核态。

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版》- 邹恒明


作者:毛阳,发布于:2020/03/26
原文:https://www.cnblogs.com/wudanyang/p/12570344.html