操作系统的本质

操作系统本质上也是一个进程,它与其他用户进程共享CPU。与普通进程不同的是,它具有硬件的所有访问权限。而用户进程默认对硬件是没有任何访问权限的,它只能通过系统调用,委托操作系统来完成这些操作。

问题

当操作系统在创建完一个进程后,会将CPU的控制权交给这个新创建的进程。上下文切换,大家应该都知道。操作系统要做的就是停止一个进程,然后再启动另一个进程。很简单是吧,那么问题来了,操作系统的程序都不在运行了,它已经把CPU的使用权给其他进程了,怎么对这个进程进行控制呢?

协作方式:等待系统调用

在过去的某些系统中曾经就使用过这种方式,在这种情况下,操作系统信任用户进程可以正确地执行,不会出幺蛾子。

以下两种情况出现时,CPU会恢复操作系统进程:

注:trap handler和exception handler是在电脑开机的时候告知CPU的

操作系统就恢复了对CPU的控制,在这个时候它就可以决定要不要进行上下文切换。

缺点:

1.只能被动地等待用户进程进行System Call或者出错,操作系统才能恢复对CPU的控制

2.如果用户进程没有进行I/O操作,进入死循环,则操作系统永远无法恢复控制,唯一的解决方法就是重启

非协作方式:定时器中断

以上方式有明显的缺点,为了让计算机提供稳定的服务,操作系统必须把对用户进程进行把控。而要想把控进程则必须保持对CPU的控制权。

如果不能让在CPU内部执行的程序让出CPU,那能不能从外部侵入,打断CPU的执行呢?

可以,早期的操作系统开发人员就想到用定时器中断的方式来处理,定时器是单独的一个硬件设备,它可以独立运行。每隔一段时间就给CPU一个中断信号,打断它的执行。

但是打断归打断,怎么恢复操作系统呢?

和上面一样,CPU在开机的时候会被告知一个interrup handler,当中断出现的时候,它的处理方式就是恢复操作系统进程。那这个时候OS的程序就又可以继续运行了。

准备工作

综上,针对这个定时器中断的方案,操作系统在电脑开机的时候,要做这几件事,一个是开启定时器,设定间隔时间。另一个是告知CPU,让它知道当定时器中断产生的时候该执行什么代码。

注:时间片的大小一般是定时器中断时间的倍数。所以当某次因中断恢复OS的时候,刚好可以执行上下文切换。

【杂谈】操作系统如何有效地掌控CPU的更多相关文章

  1. IT运维大会精华回顾 等保2.0时代掌控万物互联

    10月24日,由<网络安全和信息化>杂志社.IT运维网联合主办的“2019(第十届)IT运维大会”在北京新世纪日航酒店成功举行. 随着大数据.云计算.物联网.互联网+等快速发展,IT系统架 ...

  2. 全面认识 RUST -- 掌控未来的雷电

    文章目录 RUST 简介 如何衡量语言的好坏? 静态语言 编译器 语言定位 代表性项目 Hello World RUST 前景 RUST 简介 Rust 是一种兼顾内存安全.高并发和稳定运行的编程语言 ...

  3. ACM对时间掌控力和日积月累的习惯的意义

    马云说,要想创业成功,不是要知道现在什么东西最火,而是要清楚的知道十年以后什么东西最火.这就意味着,你对时间掌控力,至少要有十年. 但是仔细回想一下自己的学生时代,自己对时间的把握是怎样的?有些人只能 ...

  4. IQ一个人的智力和对科学知识的理解掌握程度。 EQ对环境和个人情绪的掌控和对团队关系的运作能力。 AQ挫折商 一个人面对困境时减除自己的压力、渡过难关的能力。

    IQ: Intelligence Quotient 智商 一个人的智力和对科学知识的理解掌握程度. EQ: Emotional Quotient 情商 一个人对环境和个人情绪的掌控和对团队关系的运作能 ...

  5. 4星|《行为设计学:掌控关键决策》:影响决策质量的四大思维陷阱及WRAP应对法

    行为设计学:掌控关键决策 两位作者认为,有四大思维陷阱让人做出错误的决策:思维狭隘.证实倾向.短期情绪.过度自信.两位作者提出WRAP决策流程来应对:Widen your options(拓宽选择空间 ...

  6. CIO需加强对战略管理层面的掌控-精华篇

    当代CIO面临提升信息化作用的新机遇.CIO在企业中,不能满足于职能性的技术支撑角色,要找到新的着力点,以发挥信息化在全局战略中的作用,把信息化力量聚焦于做强做优,提高国际竞争力上来,成为企业不可或缺 ...

  7. Streamr助你掌控自己的数据

    博客说明 所有刊发内容均可转载但是需要注明出处. 项目简介 Streamr 致力于为世界实时数据的自由公平交换打造开源平台,并促进全球数据经济的发展.Streamr项目基于区块链技术,并向用户提供数据 ...

  8. Javascript通过bind()掌控this

    Javascript通过bind()掌控this: http://blog.csdn.net/rznice/article/details/26134201 bind能为我们做些什么,同时它的好处在哪 ...

  9. TED:如何掌控你的自由时间以及让自己变得更好,这样就能看到爱情应有的样子

    TED:如何掌控你的自由时间以及让自己变得更好,这样就能看到爱情应有的样子 一.<如何掌控你的自由时间> (1)时间管理的传统思维:守时和节省零散的时间.演讲者认为这个观点已经彻底落后. ...

随机推荐

  1. 最详细的maven教程

    转载   https://blog.csdn.net/wymrdjm/article/details/78695956 所有用Maven管理的真实的项目都应该是分模块的,每个模块都对应着一个pom.x ...

  2. springboot:bootstrap和application有什么区别?

    bootstrap和application区别: Spring Cloud 构建于 Spring Boot 之上,在 Spring Boot 中有两种上下文,一种是 bootstrap,另外一种是 a ...

  3. nmcli简单使用

    nmcli connection 查看所有网卡信息 nmcli connection show ens33 查看网卡具体信息 nmcli connection reload 是配置文件生效

  4. MAC帧封装

    通过控制台输入一段文字,输出MAC帧的2进制和16进制的字符串,主要是求FCS.这里只考虑单帧的情况,即只考虑输入数据在1字节~1500字节之间的情况,对于更长的数据暂不考虑. 1.MAC帧基本格式 ...

  5. 在被调用函数中获取资源及C++中的引用

    #include <iostream> using namespace std; struct Teacher{ char name[64]; int age; }; //在被调用函数 获 ...

  6. eclise -The method onClick(View) of type new View.OnClickListener(){} must override a superclass method 在做arcgis android开发的时候,突然遇到这种错误,The method onClick(View) of type new View.OnClickListener(){} mus

    eclise -The method onClick(View) of type new View.OnClickListener(){} must override a superclass met ...

  7. kafka的生产者配置以及发送信息的三种方式

    1.Fire-and-forget 这种方式是不管发送成功与否,客户端都会返回成功.尽管大多数的时候Kafka 在发送失败后,会自己重新自动再一次发送消息,但是也会存在丢失消息的风险 Producer ...

  8. 常用NLog配置

    <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSe ...

  9. javascript获取url参数的方式

     方式一: 推荐使用此方式: url链接为:newsDetail.html?id=8a8080e35f90d9fd015f90dac7750001&modelId=123456 var URL ...

  10. vue混入 (mixin)的使用

    混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能.一个混入对象可以包含任意组件选项.当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项. 使用示 ...