计算机
从前,有一台机器,体积巨大,每秒钟可以完成数千次加法运算当它出名后,人们给它起了个名字:计算机
除了加法,它还能算平方,立方,正弦,余弦,比人脑快多了。
很多程序来到这里,想在上面运行,感受飞翔的感觉。
来,来,排队,一个接一个,电脑管理员说。
程序一个接一个地排好队,等待管理员召唤。
执行完一个,管理员会拿出来换成下一个开始执行。
伴随着时间的推移,程序抱怨:排队等待十分钟,执行三秒钟管理员太慢了,他们把所有的时间都花在排队上能不能让电脑自动切换程序而不是手动
人工操作的速度比计算机慢得多,人机矛盾日益突出人类决定重新设计机器,开发出控制程序在它的命令下,程序可以批量执行,自动实现切换不需要人工干预,效率提高了很多
多道程序设计
来这里的程序越来越多,等待执行的队列也越来越长。
有的程序不耐烦了,问控制程序:大哥,你看前面那个家伙在做输入输出,CPU空着,暂时不用了这不是浪费吗为什么不叫下一个来执行
控制程序皱着眉头说:这怎么可能呢前一个程序执行的所有数据都存储在内存中,然后再放入程序如果坏了,谁来负责而且,CPU只有一个前一个程序完成输入输出后该怎么办
大家都无言以对,谁也拿不出主意众人纷纷叹息,只好作罢,继续等待
但是,聪明的人类发现了这个问题:让一个程序独占电脑,是一种资源浪费当执行I/O时,CPU是空闲的,当执行I/O时,总是有一个空闲的输入/输出设备
于是人类重新设计了计算机,开发了新版本的控制程序这次允许多个程序同时进入电脑执行
如果程序A执行I/O,就把CPU释放出来给另一个程序B执行,然后B执行I/O一段时间,再把CPU分配给A执行,相互交替,这样就不会浪费了!
时间分片
可是没过多久,新的问题又出现了。
这一天其他程序都在排队等控制程序翻牌,左等右等都没有传唤所有的程序都很着急,他们质疑控制程序
当他听到这些时,所有的程序都很生气。
这怎么可能呢太自私了
你不关心这个控制程序你有什么用
赶紧想办法!
我没办法他不执行输入输出,我也拿不到CPU的控制权对此我无能为力,控制程序叹息道
节目里各种争论,吵得不可开交。
敏感的人类再次发现了这个问题,经过大量的研究,他们开发了一种叫做中断的技术:他们可以向CPU发送中断信号。CPU收到信号后,不得不停止手头的工作,转而执行控制程序来处理中断信号,这样控制程序才能获得控制权!
为了使控制程序及时获得控制权,人类创造了一个中断源,它周期性地向CPU发送中断信号,这就是所谓的时钟中断。
升级之后,控制程序又开始工作了,很多程序都风闻到了。
大哥哥,听说你又升级了这次你改了什么你能修好无限循环程序吗,一个程序问道
大家排好队,听好了,现在分成时间片每个节目每次只有很短的时间
时间到了,我还没执行完怎么办。
你不用担心,都是依次进行的,下一轮还有机会执行,控制程序解释道。
我们有这么多的程序,这是下一轮,所以我们不能等很长时间
这台电脑已经从里到外升级了虽然变小了,但是里面全是大规模集成电路
听完所有的节目,一片哗然几十万,我的乖乖!这也太快了吧,大家体验一下
说完,大家都整装排队,准备登上升级后的电脑去跑步。
果然,升级后的电脑运行速度很快在时钟中断的情况下,控制程序总能准时获得对CPU的控制权,在背后默默控制程序的运行,所有的程序都不会感觉到自己停了
情况
可是,虽然电脑速度越来越快,但吸引眼球的程序也越来越多,这些程序的功能也越来越复杂。
渐渐地,节目不再满足于现状,新的问题开始出现。
有的程序处于睡眠状态,有的程序同步等待,浪费时间所有人都向控制程序抗议,但控制程序说,所有程序都应该一视同仁,公平对待大家都不敢当面说,背地里却骂他不作为
控制程序把这个问题反馈给了人类,聪明的工程师们开始琢磨:所有程序排队轮换,确实不合适这些程序要分成不同的状态,只有准备好的程序才有资格执行
人类一口气做出了多个任务状态,创建,准备,运行,阻塞,终止。
控制程序变得复杂了本来只需要一个一个调用执行就可以了现在,需要记录它们的状态,并选择具有适当状态的程序来运行,这增加了很多工作量
优先
本以为这样的改变大家都会满意,没想到有几个油嘴滑舌的人私下找到控制程序:兄弟,我们几个程序对实时性要求比较高能不能把整个VIP队列给我们,不要和他们一起排队,优先给我们
控制程序脸色发青,断然拒绝。
其中一个人说,我们的项目非常重要如果时间耽误了,你能承受吗
没办法,控制程序只能再次反馈给人类工程师想想,确实所有程序优先级都一样,真的太草率了
工程师再次升级了控制程序这次不仅划分了任务状态,还设置了不同的优先级,划分了不同的团队,让程序去各自的优先级团队排队,优先处理优先级高的程序
而且,如果有高优先级程序,即使低优先级程序的时间片还没有用完,也会被剥夺执行机会工程师称之为先发制人
可是这一次,控制程序把所有人都蒙在鼓里如果我们知道他们被分成了369等,那将是一场灾难
经过这一轮的变化,大家终于过上了平静的生活。
多核时代
硬件技术发展太快了有一天,人类兴奋地告诉控制程序:现在CPU里有多个核心,真的可以同时执行多个程序了
但是对于控制程序来说,这不是一个好消息本来一核的程序调度管理就已经够他忙的了现在内核多了,调度管理任务就更复杂了最初,它只是一个具有多个优先级的队列现在,每个内核都必须有一个集合这真的是一件值得思考的大事
人类开始对控制程序进行操作,使其变得越来越复杂和强大。
最后给了他一个新名字:操作系统。
PS:故事归故事操作系统这个名字是多核之后才出现的
另外,现代操作系统更加复杂,各种因素交织在一起,状态,抢占,优先级,动态优先级,动态时间片和亲和度,综合调度,多种调度算法并存。
。