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

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

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

什么是用户态和内核态

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

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

什么是用户态

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

用户态的几个特点

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

什么是内核态

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

内核态的特点?

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

为什么需要区分用户态和内核态

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

BUT!有没有想过,操作系统为什么要搞出用户态和内核态?

原因是:

某些程序可靠性和安全性不高,如果这些程序执行了 cpu 的某些指令,会导致系统崩溃,如:设置时钟、清理内存、调整网络 等


操作系统是如何控制不同态的权限的

要控制权限,必须要对程序发出的每一条指令进行检查。而这种检查被称为 地址翻译,这里不详细展开。内核态程序通过绕过地址翻译执行特权指令,从而访问所有资源。


程序应该运行在用户态还是内核态?

  • 用户态

    • 能运行在用户态就运行在用户态
    • 涉及用户数据和应用的操作
  • 内核态

    • 牵扯到计算机本体的操作
    • 对时序要求比较高的操作

用户态如何切换到内核态?

用户态程序 陷入 到内核态有 3 种方法:

  1. 系统调用:使用的是操作系统为用户开发的一个中断

  2. 外围设备中断:网卡、打印机等

  3. 异常:缺页等异常


参考资料

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

posted @ 2020-03-25 21:08  吴丹阳-V  阅读(3730)  评论(0编辑  收藏  举报