操作系统操作系统

用户态与内核态

2017-03-27  本文已影响1469人  大海孤了岛
unix和linux的体系架构:分为用户态和内核态
unix和linux的体系架构.png
  • 内核态:控制计算机的硬件资源,并提供上层应用程序运行的环境。

三者之间的关系如下:


三者之间的关系.png
系统调用是操作系统中的最小功能单位。
  • 系统调用与上层应用程序的关系:
    如果将系统调用比作是一个“比画”,那么上层应用就是一个“汉字”。如果完成一个“汉字”,就需要通过多个系统调用。
  • 系统调用与公用函数库的关系:
    公用函数库实现对系统调用的封装,将简单的业务逻辑接口呈现给用户,方便用户调用,从这个角度上看,库函数就像是组成汉字的“偏旁”。
从特权级来区分内核态和用户态:

在CPU的所有指令中,有一些指令是非常危险的,如果错用,将导致整个系统崩溃。所以,CPU将指令分为特权指令和非特权指令,对于那些危险的指令,只允许操作系统及其相关模块使用,普通的应用程序只能使用那些不会造成灾难的指令。

intel cpu提供Ring0-Ring3四种级别的运行模式,Ring0级别最高,Ring3最低。Linux使用了Ring3级别运行用户态,Ring0作为 内核态。

用户态切换为内核态的三种情况:
  • 系统调用

系统调用的本质其实也是中断,相对于外围设备的硬中断,这种中断称为软中断。从触发方式和效果上来看,这三种切换方式是完全一样的,都相当于是执行了一个中断响应的过程。但是从触发的对象来看,系统调用是进程主动请求切换的,而异常和硬中断则是被动的。

参考资料:
Linux探秘之用户态与内核态
Linux用户态和内核态
linux操作系统的内核态和用户态

上一篇 下一篇

猜你喜欢

热点阅读