操作系统是怎么管理寄存器的?? 400 报错-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

操作系统是怎么管理寄存器的?? 400 报错

爱吃鱼的程序员 2020-05-30 22:45:48 163

操作系统是怎么管理寄存器的?? 400 报错

操作系统肯定要管寄存器的,但是是如何管理的呢?操作系统每开始执行一个程序,都需要保存寄存器数据,然后给程序设置权限,已经设置代码段数据段的基址等等,然后。这个容易实现,但是当程序结束后,如果返回给操作系统呢?也就是如何恢复寄存器数据?

第一个想法是,操作系统执行程序的方式,就是调用程序的入口函数,等到函数返回,操作系统就重新得到了控制权,然后恢复寄存器数据。这话方式应该是可行,但是很容易出错吧?程序赖着不退出了,那就完了。而且也不好实现多任务并行。

第二个想法是,没有第二个想法,为了增加字数才列出来的


还有一个问题是,多任务并行是如果实现的?且不说真正的并行,就说分时,是如何实现的呢?就说说,操作系统是如何让一个程序在规定时间内执行再准确的暂停了?这是如何控制的?也没看到x86处理器有过指定程序执行时间的指令啊,就究竟是如何实现的?。难不成操作系统个个神通广大,法力无边,能在不执行内核指令的情况下操作寄存器?

有没有人能普及一下?

寄存器操作 管理操作 管理报错 系统管理器 管理系统报错
分享到
取消 提交回答
全部回答(1)
  • 爱吃鱼的程序员
    2020-05-30 22:45:50

    说实话这乱七八糟一堆文字我看了两边,然后发现真救不了你.


    ######回复 @刘子玄 : 操作系统不管理寄存器,现在都是抢占式多线程操作系统,都是在线程释放资源的时候切换到其他进程的(你调用某些api的时候会发生等待和切换操作,然后保存线程执行环境数据)看一下操作系统原理的书籍就知道了.直接切换那个只有纯正的分时操作系统才会去做.现在估计只剩下大型UNIX了######= =######靠时钟中断,硬件一定会定时发起时钟中断,中断服务一定会执行,这样就可以进行调度或做其他事了,中断机制由硬件保证。找书看吧,这些问题不是几句说得清。######谢了######在中断产生时,寄存器压栈,在中断结束后,堆栈的数据弹回到寄存器。######

    寄存器操作是汇编级别的最小操作单元,即使是操作系统也不能够管理寄存器.

    是计算机有一些指令,能够自己把所有寄存器保存到一个地方.

    ######计算机基础如此博大精深,几十年高科技结晶,不是三天三夜就能说清的,更何况几句话######

    简单2个字 压栈.
    OS的原理很简单, 你可以找一些嵌入式的OS开源代码进行阅读, 相信读完2个系统的代码后, 就对OS核心部分很清楚了.

    挑你的一个问题进行回答: "操作系统是如何让一个程序在规定时间内执行再准确的暂停了?这是如何控制的?"
          感觉你还不清楚调度算法的实现.简单的说: 硬件中断将其打断,如果需要1ms的进程调度精度,那么就设置时钟中断为1ms.  你可以看下中断部分的代码.
           CPU的PC指针即使软件不去设置它也不是固定不变只能向下跑的. 当中断发生的时候,PC指针会自动修改到相应中断向量的物理地址上,并且中断时的重要寄存器的值被硬件自动保存.  于是我们就设置一个时钟中断向量(将这个地址上写入我们的代码函数的地址), 每18ms PC指针会被自动改到这个地方,在这个地方 我们根据调度算法, 看是继续执行被打断的线程 还是切换到更合适的线程上.   感性上, 线程/cpu 的运行 实际上是非常的不连贯,  中途不断的被各种中断疯狂的打断. 尤其高响应的硬实时OS,打断应该更加频繁.  我们想干任何事情都可以在中断处理中去做.         此外除了硬件中断, 因为硬件功能都是api提供,so程序代码实际上经常会很频繁调用一些系统API, 既然调用了系统api, os也完全可以在系统api执行软中断, 执行调度算法, 把pc指针移到别处去, 不再正常的函数返回了(保存好数据, 下次调度它时,模拟这个函数返回, 应用程序完全不知道发生了什么).

    ######一个嵌入式OS的代码不过几千行而已.  看完几个  你就精通OS的实现了. 不过"知识改变命运",  懂得越多混得越惨,  个人建议你干点其他能赚钱的事情. 底层实现的东西, 除了吹牛, 提升点技术素质, 对赚钱来说毫无用处, 面试时都没用!! (实际上现在面试都是看算法)   小正太,  根据赚钱来指导自己学习/背诵 什么东西. (很心痛的经验)######回复 @MinGKai : haha. 反正比赚1个亿简单多了.######“精通”OS有那么简单么…………######这个你放心,我只会把编程当成毕生的爱好,而不会用作工作。
    0 0
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

最新问题