关于系统调用/中断


什么是系统调用/中断,不需要强记概念,可以放到全局去理解。

CPU执行指令的时候是如何区分先后顺序和权限?以intel X86架构CPU为例,其划分了四个特权级别0~3,0级最高,3级最低。现行主流操作系统入windows/Unix/Linux,只使用了0级特权级和3级特权级。一条工作在0级特权级的指令具有CPU提供的最高权力,而一条工作在3级特权级的指令具有CPU提供的最低或最基本权力。

CPU通过识别CPL、DPL、RPL这三种特权级别进行特权级别检查

0级别一般只给操作系统用,3级给其他程序用。操作系统(内核)代码运行在最高级别0级特权级上,可以使用特权指令、控制中断、修改页表、访问设备等。应用程序代码运行在最低级别3级特权级上,不能做受控操作。如果应用程序要做受控操作,比如访问磁盘写文件等,那就需要执行系统调用函数,执行系统调用的时候CPU的运行级别从3到0发生切换,并跳转到系统调用对应的内核代码执行内核程序,这样内核帮应用程序完成了设备访问。完成之后在从0切换到3。这个过程也称为用户态到内核态的切换。

这样看来,系统调用/中断只是一个函数调用,用来完成CPU从用户态到内核态的切换。

知识共享许可协议本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,请务必在遵守许可协议的前提下转载。
发布时间:2020-09-25 11:20:07 阅读:50 标签:技术操作系统