【杂谈】操作系统如何有效地掌控CPU
操作系统的本质
操作系统本质上也是一个进程,它与其他用户进程共享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的更多相关文章
- IT运维大会精华回顾 等保2.0时代掌控万物互联
10月24日,由<网络安全和信息化>杂志社.IT运维网联合主办的“2019(第十届)IT运维大会”在北京新世纪日航酒店成功举行. 随着大数据.云计算.物联网.互联网+等快速发展,IT系统架 ...
- 全面认识 RUST -- 掌控未来的雷电
文章目录 RUST 简介 如何衡量语言的好坏? 静态语言 编译器 语言定位 代表性项目 Hello World RUST 前景 RUST 简介 Rust 是一种兼顾内存安全.高并发和稳定运行的编程语言 ...
- ACM对时间掌控力和日积月累的习惯的意义
马云说,要想创业成功,不是要知道现在什么东西最火,而是要清楚的知道十年以后什么东西最火.这就意味着,你对时间掌控力,至少要有十年. 但是仔细回想一下自己的学生时代,自己对时间的把握是怎样的?有些人只能 ...
- IQ一个人的智力和对科学知识的理解掌握程度。 EQ对环境和个人情绪的掌控和对团队关系的运作能力。 AQ挫折商 一个人面对困境时减除自己的压力、渡过难关的能力。
IQ: Intelligence Quotient 智商 一个人的智力和对科学知识的理解掌握程度. EQ: Emotional Quotient 情商 一个人对环境和个人情绪的掌控和对团队关系的运作能 ...
- 4星|《行为设计学:掌控关键决策》:影响决策质量的四大思维陷阱及WRAP应对法
行为设计学:掌控关键决策 两位作者认为,有四大思维陷阱让人做出错误的决策:思维狭隘.证实倾向.短期情绪.过度自信.两位作者提出WRAP决策流程来应对:Widen your options(拓宽选择空间 ...
- CIO需加强对战略管理层面的掌控-精华篇
当代CIO面临提升信息化作用的新机遇.CIO在企业中,不能满足于职能性的技术支撑角色,要找到新的着力点,以发挥信息化在全局战略中的作用,把信息化力量聚焦于做强做优,提高国际竞争力上来,成为企业不可或缺 ...
- Streamr助你掌控自己的数据
博客说明 所有刊发内容均可转载但是需要注明出处. 项目简介 Streamr 致力于为世界实时数据的自由公平交换打造开源平台,并促进全球数据经济的发展.Streamr项目基于区块链技术,并向用户提供数据 ...
- Javascript通过bind()掌控this
Javascript通过bind()掌控this: http://blog.csdn.net/rznice/article/details/26134201 bind能为我们做些什么,同时它的好处在哪 ...
- TED:如何掌控你的自由时间以及让自己变得更好,这样就能看到爱情应有的样子
TED:如何掌控你的自由时间以及让自己变得更好,这样就能看到爱情应有的样子 一.<如何掌控你的自由时间> (1)时间管理的传统思维:守时和节省零散的时间.演讲者认为这个观点已经彻底落后. ...
随机推荐
- _string 灵活查询
$process = (int)$_POST['process']; switch ($process) { case 0: // 全部 $where['_string'] = ' (`sale_wa ...
- [转帖]Hadoop、Hive、Spark 之间关系
Hadoop.Hive.Spark 之间关系 https://www.cnblogs.com/jins-note/p/9513426.html 很的很诙谐有趣. 作者:Xiaoyu Ma ,大数据工程 ...
- [WinForm] - "更新 DataSet 应用程序集对象失败,Visual Studio 自动重启" 之解决
背景 在 WinForm 解决方案中,更新 DataSet 应用程序集对象失败,Visual Studio 自动重启. 试一试 1. 更新 .xsd 时打开对应的 .Designer.cs.2. 如果 ...
- Ribbon【自定义客户端】
Ribbon的加载策略是懒加载,即第一次请求的时候才加载对应上下文,正是这个原因,很多时候第一次调用显得很慢,甚至会超时,所以,可以通过指定ribbon具体服务名称来开启饿加载,即在工程启动的时候,加 ...
- Windows10下Anaconda+Tensorflow+Keras环境配置
注意!注意!!注意!!! (重要的事情说三遍) 安装前检查: 1.Tensorflow不支持Anaconda2,Tensorflow也不支持python2.7和python3.7(满满的辛酸泪!) 2 ...
- go 食用指南
Golang高效食用秘籍 一.关于构建 1.1 go环境变量 $ go env // 查看go 的环境变量 其中 GOROOT 是golang 的安装路径 GOPATH 是go命令依赖的一个环境变量 ...
- Windows环境下Python3安装Pyspider
执行命令: pip3 install pyspider Windows 下可能会出现这样的错误提示:Command "python setup.py egg_info" fai ...
- MySQL8.0新特性实验1
Server层,选项持久化 mysql> show variables like '%max_connections%';+------------------------+-------+| ...
- dotnet Core学习之旅(序)
.NET Core 新玩具,新工具,新生产力 我将在博客园我从0.1开始探索.NET Core 的过程. 为什么是从0.1开始而不是从0开始 我在微软刚宣布开源的时候便接触到了.NET Core 1. ...
- Echarts设置y轴值间隔 以及设置 barWidth : 30,//柱图宽度
需求:如图,y轴之间的距离太小,这样就太过于拥挤了,现在要修改echarts里面的属性,设置y轴值间隔让图表看上去舒服一些. 其实很多问题,真的只是因为自己没有好好的看文档,很多文档上面都写的 ...