分享

操作系统是如何取得CPU的控制权的

 bylele 2020-07-27

之前看组成原理和操作系统,看完之后打算把某个逻辑整理一遍,真正动笔的时候,发现很多逻辑我自己都没搞明白,何谈整理呢?然后我就带着问题再去看书,但是书里面讲的都是细节,我需要那种通俗大白话的解释。于是乎,又去搜索,根据别人的解释和自己从书里面看到的知识点,总算找到了一个符合自己期望的解释。

计算机体系从硬件到操作系统,再到上层的软件,网络,语言,各种框架,要学的东西实在太多,毕竟时间有限,只能采取深一门而广多门的策略。对于上层的某种语言、框架,自己着重研究,而对于底层硬件和操作系统,纯粹是抱着了解的态度,也就是说,可以对程序是怎样运行的? 操作系统是做什么的?这种问题能做出简单的回答。我不希望深入到组成原理或者操作系统的某种具体细节中,只求心里面有这样一种层次体系,再说高一点,可以将上层遇到的某种特性,原理和底层结合起来(如线程,阻塞)。这样对于上层语言和框架的概念也能理解得更深刻。

但如果要对操作系统是如何取得CPU的控制权的这个问题作出回答,还是需要对CPU和操作系统有一定了解的,比如CPU的体系结构,CPU是做什么的?

cpu体系结构

CPU是很复杂的,这里只讲与这个问题有关的概念。CPU是一系列寄存器、控制器和逻辑运算器组成的一个系统,它是硬件概念,他能识别的是机器指令,不管是C语言,java语言还是操作系统的代码,最后到cpu这里的都是机器指令,cpu并不知道它执行的是用户的还是操作系统的指令,但是他会根据他的状态寄存器等一系列标志位寄存器来进行权限控制(哪些指令可以执行,哪些指令不可以执行并抛出硬件异常到操作系统)。

加载操作系统

操作系统加载流程

最终操作系统的代码被加载进内存中,CPU开始执行操作系统指令,所以操作系统是最开始霸占cpu的,那么他就可以对cpu的寄存器做出各种设置,当它把控制权让出去的时候,他可以降低cpu寄存器的权限(所谓的用户态),当他重新控制cpu时(可以通过系统调用,也可以通过cpu硬件中断),中断发生时,cpu会主动改变寄存器标志位,切换到内核态,执行内核代码。

系统调用

对于程序员编写的I/O代码(c、java),是无法在用户态执行的,往下看其实是操作系统帮你执行的。当cpu执行i/o代码时,发现自己是用户态权限,立刻发出一个软中断,跳转到内核的中断处理程序,此时的权限立刻变成了内核态(在执行中断的时候,cpu自己改变寄存器的权限状态),此时的内核指令运行在内核态,即所谓的"陷入内核态"。

中断处理程序

中断处理程序是内核的一部分

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多