技术博客
很久很久以前,有一台神奇的机器・・・
admin2022-11-21 05:30
223人已围观
简介很久很久以前,有一台神奇的机器・・・
本文来自微信公众号:编程技术宇宙 (ID:xuanyuancoding),作者:轩辕之风 O
计算机
很久很久以前,有一台机器,体型巨大,每秒钟可以进行几千次的加法运算,名震一时,人类给它取了个名字:计算机。
除了加法,它还能计算平方、立方、正弦、余弦,比人类的大脑算得快多了。
许多程序慕名而来,想在它上面运行一下,体会这飞一般的感觉。
“来来来,排好队,一个一个来”,计算机的管理员说到。
众程序挨个排好队,等待管理员传唤。
执行完一个,管理员再将其取出,换上下一个开始执行。
久而久之,程序们纷纷抱怨:排队十分钟,执行三秒钟。人类管理员太慢了,时间都用在排队上了,能不能让计算机自动完成程序切换,不要手动切换?
人工操作的速度比起计算机实在是慢太多了,人机矛盾日益凸显,人类决定对机器重新进行设计,并且开发了一个控制程序,在它的指挥下,可以批量执行程序,自动实现切换,不用再需要人工介入了,效率提高了不少。
多道程序处理
慕名而来的程序越来越多了,等待执行的队伍排的越来越长。
有些程序等的不耐烦了,询问控制程序:“大哥,你看前面那家伙在做输入输出,CPU 给空出来了,一时半会儿用不上,这不是浪费吗,要不叫下一个上去执行吧”
控制程序皱着眉头说到:“那怎么行,前面程序执行的数据都在内存里放着了,再放程序进去,要是弄坏了谁负责?再说 CPU 只有一个,前面的程序忙完输入输出回来了又该如何处理?”
大家一时语塞,谁也给不出主意,纷纷叹气,只好作罢,继续等待。
不过聪明的人类倒是发现了这问题:让一个程序独占计算机确实浪费资源,执行输入输出的时候,CPU 就空着了,执行计算操作的时候,输入输出设备又闲着了,总有一个闲着。
于是人类又重新设计了计算机,并开发了新版的控制程序,这一次,允许多个程序同时进入计算机执行了。
如果程序 A 执行输入输出,就把 CPU 空出来让给另一个程序 B 执行,一会儿 B 再执行输入输出,再把 CPU 分给 A 执行,彼此交替,这样一来就不会浪费了!
时间分片
不过没多久,又出现了新的问题。
这一天,其他程序都在排队等待控制程序翻牌子,可左等右等也不见传唤,众程序急了,质问控制程序,控制程序大倒苦水:“前面那个家伙写了个死循环,死活结束不了啊!”
听他这么一说,众程序都怒了。
“怎么能这样,这也太自私了”
“你这控制程序也不管管,要你有何用?”
“赶紧想办法啊!”
“我也没办法,他不执行输入输出,我也拿不到 CPU 的控制权,拿他没有办法啊”,控制程序叹气说到。
众程序七嘴八舌,吵的是不可开交。
敏感的人类又一次发现了这个问题,好一通研究,搞了一个叫“中断”的技术出来:可以给 CPU 发送中断信号,CPU 收到信号后,就得停下手头的工作,转而执行控制程序处理中断信号,这样控制程序就有办法获得控制权了!
为了能够让控制程序及时获得控制权,人类搞了一个中断源,周期性的给 CPU 发送中断信号,并把这叫做时钟中断。
升级后的控制程序又上岗开始工作了,众程序闻风而来。
“大哥,听说你又升级了,这一次改了啥,可以搞定死循环的程序吗?”,一个程序问道。
“大家排好队,听好了,现在按照时间片来划分了,每个程序一次只有一小段时间,时间一用完我就得请他出来,让别的程序来了”
“那要是时间到了,我还没执行完可咋办呢?”
“大家不用担心,都是轮着来的,等下一轮又有机会执行了”,控制程序解释道。
“我们这么多程序,轮到下一轮,那不得等好久”
“这台计算机从里到外都升级过了,别看它个头变小了,里面都是大规模集成电路了,执行速度可比之前的大块头快了不少,每秒能执行几十万次运算呢~你们还没感觉到就转了一圈回来了”
众程序听后一片哗然,“几十万,我的乖乖!这也太快了,快让我们体验一下”
说完,大家都摩拳擦掌排好队,准备登上这台升级后的计算机运行。
果不其然,这升级后的计算机跑起来那叫一个快,有了时钟中断,控制程序总能按时获得 CPU 的控制权,在背后默默控制着程序们的运行,众程序丝毫感觉不到自己曾经停止过。
状态
不过,计算机速度虽然变快了,但慕名而来的程序也更多了,这些程序的功能也越来越复杂。
渐渐的,程序们不再满足于现状,开始出现了新的问题。
有些程序在 sleep,有些程序在同步等待,白白浪费了时间片,大伙向控制程序提出了抗议,控制程序却说对待所有程序要一视同仁,要讲公平,大伙当面不敢说,背后却骂他不作为。
控制程序把这个问题反馈给了人类,聪明的工程师又开始琢磨:所有程序都排成一个队来轮转确实有些欠妥,得给这些程序划分成不同的状态,只有准备就绪的程序才有资格执行。
人类一口气搞了好些个任务状态出来,创建、就绪、运行、阻塞、终止・・・
控制程序一下变得复杂起来,原来只要挨个传唤执行就行,现在还得记录他们的状态,选择合适状态的程序来运行,工作量增加了不少。
优先级
本以为这么一改,大家就会满意了,没想到有几个老油条私下找到控制程序:“老哥,咱们几个程序对实时性要求比较高,能不能给咱们整个 VIP 队列,别跟他们一起排,优先执行我们?”
控制程序一听脸都绿了,断然拒绝。
其中有一个家伙说到:“我们几个程序可是非常重要的,要是延误了时间,你能担待的起吗?”
没办法,控制程序只能再次反馈给人类。工程师一想,倒也是,所有程序都是同样的优先级,确实太草率了。
工程师再一次升级了控制程序,这一次,不仅划分了任务状态,还设定了不同的优先级,划分了不同的队伍,让程序们去各自优先级所在的队伍排队,优先执行高优先级的程序。
不仅如此,如果有高优先级的程序出现,即使低优先级程序的时间片还没用完,也会被剥夺执行机会,工程师把这叫做抢占。
不过,这一次的改动,控制程序把大家伙都蒙在了鼓里,要是知道他们还被划分了三六九等,估计得闹翻天。
经过这一轮改动,大家总算过了一段清静日子。
多核时代
硬件技术发展的太快了,有一天,人类激动的告诉控制程序:现在 CPU 里面有多个核心了,可以真正同时执行多个程序了,我们决定再次对你升级!
可对于控制程序来说,这可不是什么好消息,本来一个核的程序调度管理已经让他够忙活的了,现在来了多个核,这调度管理任务就更复杂了。原来只是多个优先级的队列,现在每个核都得搞一套,真是想想都头大了。
人类开始对控制程序大动手术,把它变得越来越复杂,功能也越来越强大。
最后,还给他取了一个新的名字:操作系统。
PS:故事归故事,操作系统这个名字可不是多核以后才出现的哦。
另外,现代操作系统更加复杂,状态、抢占、优先级、动态优先级、动态时间片、亲和性各种因素交织在一起,综合调度,还有多种调度算法并存。

微信公众号
很赞哦!(0)
相关文章
文章评论
评论0
站点信息
- 微信公众号:扫描二维码,关注我们

点击排行

标签云
-
php
网页设计
个人博客
JS
个人博客
Html
春节必看: 2020新春红包大战 全攻略
新增详细玩法攻略!
支付宝集五福5亿集分宝招商银行抽现金券抖
抖音 2020 发财中国年 攻略
支付宝集五福5亿集分宝招商银行抽现金券抖
最近购买威尔胜WTB0900复刻版和WT
mysql慢查询和php-fpm慢日志
PSR-2
基础代码规范
Thinkphp
响应式
公司
整站
源码
网络科技网站模板
1024
节日
百度收录
论坛
社区
2020
豆瓣
评分最高
电影
debugger
调试
Python
语法
高德
百度地图
MySQL
追寻
webpack
vue
oracle
服务器搭建
有趣
动物
人体
历史
天文
生活
名人
体育
地理
文化
科学
心理
植物
饮食
自然
图片
JVM
IDEA
Loader
Git
UNIAPP
股票
A股
同花顺
海尔
海天味业
半年报
股市总结
歌尔股份
乐普医疗
涪陵榨菜
餐饮
财报分析
酒店
年报分析
美锦能源
山煤国际
贵州茅台
张坤
腾讯
华鲁恒升
淮北矿业
药明康德
早盘关注
国电电力
北方华创
宝丰能源
TCL中环
兔宝宝
天润乳业
启明星辰
阳光电源
山西汾酒
迈瑞医疗
人福医药
比亚迪
宁德时代
汤臣倍健
伊利股份
通威股份
东鹏饮料
隆基股份
紫金矿业
五粮液
康龙化成
赣锋锂业
爱尔眼科
片仔癀
VR
永新股份
爱美客
美的集团
格力电器
科沃斯
云南白药
同仁堂
洋河股份
白云山
三体
狂飙 原著