首页 > 其他分享 >一个故事看懂计算机操作系统的进化史

一个故事看懂计算机操作系统的进化史

时间:2023-01-20 11:36:17浏览次数:45  
标签:进化史 操作系统 程序 控制程序 优先级 执行 CPU 计算机



计算机

很久很久以前,有一台机器,体型巨大,每秒钟可以进行几千次的加法运算,名震一时,人类给它取了个名字:计算机

除了加法,它还能计算平方、立方、正弦、余弦,比人类的大脑算得快多了。


一个故事看懂计算机操作系统的进化史_输入输出

一个故事看懂计算机操作系统的进化史_优先级_02

许多程序慕名而来,想在它上面运行一下,体会这飞一般的感觉。

“来来来,排好队,一个一个来”,计算机的管理员说到。

众程序挨个排好队,等待管理员传唤。

执行完一个,管理员再将其取出,换上下一个开始执行。

久而久之,程序们纷纷抱怨:排队十分钟,执行三秒钟。人类管理员太慢了,时间都用在排队上了,能不能让计算机自动完成程序切换,不要手动切换?


一个故事看懂计算机操作系统的进化史_优先级_03

一个故事看懂计算机操作系统的进化史_计算机原理_04

人工操作的速度比起计算机实在是慢太多了,人机矛盾日益凸显,人类决定对机器重新进行设计,并且开发了一个控制程序,在它的指挥下,可以批量执行程序,自动实现切换,不用再需要人工介入了,效果提高了不少。

多道程序处理

慕名而来的程序越来越多了,等待执行的队伍排的越来越长。

有些程序等的不耐烦了,询问控制程序:“大哥,你看前面那家伙在做输入输出,CPU给空出来了,一时半会儿用不上,这不是浪费吗,要不叫下一个上去执行吧”

控制程序皱着眉头说到:“那怎么行,前面程序执行的数据都在内存里放着了,再放程序进去,要是弄坏了谁负责?再说CPU只有一个,前面的程序忙完输入输出回来了又该如何处理?”

大家一时语塞,谁也给不出主意,纷纷叹气,只好作罢,继续等待。

不过聪明的人类倒是发现了这问题:让一个程序独占计算机确实浪费资源,执行输入输出的时候,CPU就空着了,执行计算操作的时候,输入输出设备又闲着了,总有一个闲着。

于是人类又重新设计了计算机,并开发了新版的控制程序,这一次,允许多个程序同时进入计算机执行了。

如果程序A执行输入输出,就把CPU空出来让给另一个程序B执行,一会儿B再执行输入输出,再把CPU分给A执行,彼此交替,这样一来就不会浪费了!

时间分片

不过没多久,又出现了新的问题。

这一天,其他程序都在排队等待控制程序翻牌子,可左等右等也不见传唤,众程序急了,质问控制程序,控制程序大倒苦水:“前面那个家伙写了个死循环,死活结束不了啊!”

听他这么一说,众程序都怒了。

“怎么能这样,这也太自私了”

“你这控制程序也不管管,要你有何用?”

“赶紧想办法啊!”

“我也没办法,他不执行输入输出,我也拿不到CPU的控制权,拿他没有办法啊”,控制程序叹气说到。

众程序七嘴八舌,吵的是不可开交。

敏感的人类又一次发现了这个问题,好一通研究,搞了一个叫“中断”的技术出来:可以给CPU发送中断信号,CPU收到信号后,就得停下手头的工作,转而执行控制程序处理中断信号,这样控制程序就有办法获得控制权了!


一个故事看懂计算机操作系统的进化史_时间片_05

一个故事看懂计算机操作系统的进化史_输入输出_06

为了能够让控制程序及时获得控制权,人类搞了一个中断源,周期性的给CPU发送中断信号,并把这叫做时钟中断

升级后的控制程序又上岗开始工作了,众程序闻风而来。

“大哥,听说你又升级了,这一次改了啥,可以搞定死循环的程序吗?”,一个程序问道。

“大家排好队,听好了,现在按照时间片来划分了,每个程序一次只有一小段时间,时间一用完我就得请他出来,让别的程序来了”


一个故事看懂计算机操作系统的进化史_计算机原理_07

一个故事看懂计算机操作系统的进化史_计算机原理_08

“那要是时间到了,我还没执行完可咋办呢?”

“大家不用担心,都是轮着来的,等下一轮又有机会执行了”,控制程序解释道。

“我们这么多程序,轮到下一轮,那不得等好久”

“这台计算机从里到外都升级过了,别看它个头变小了,里面都是大规模集成电路了,执行速度可比之前的大块头快了不少,每秒能执行几十万次运算呢~你们还没感觉到就转了一圈回来了”


一个故事看懂计算机操作系统的进化史_时间片_09

一个故事看懂计算机操作系统的进化史_输入输出_10

众程序听后一片哗然,“几十万,我的乖乖!这也太快了,快让我们体验一下”

说完,大家都摩拳擦掌排好队,准备登上这台升级后的计算机运行。

果不其然,这升级后的计算机跑起来那叫一个快,有了时钟中断,控制程序总能按时获得CPU的控制权,在背后默默控制着程序们的运行,众程序丝毫感觉不到自己曾经停止过。

状态

不过,计算机速度虽然变快了,但慕名而来的程序也更多了,这些程序的功能也越来越复杂。

渐渐的,程序们不再满足于现状,开始出现了新的问题。

有些程序在sleep,有些程序在同步等待,白白浪费了时间片,大伙向控制程序提出了抗议,控制程序却说对待所有程序要一视同仁,要讲公平,大伙当面不敢说,背后却骂他不作为。

控制程序把这个问题反馈给了人类,聪明的工程师又开始琢磨:所有程序都排成一个队来轮转确实有些欠妥,得给这些程序划分成不同的状态,只有准备就绪的程序才有资格执行。

人类一口气搞了好些个任务状态出来,创建、就绪、运行、阻塞、终止···


一个故事看懂计算机操作系统的进化史_时间片_11

一个故事看懂计算机操作系统的进化史_优先级_12

控制程序一下变得复杂起来,原来只要挨个传唤执行就行,现在还得记录他们的状态,选择合适状态的程序来运行,工作量增加了不少。

优先级

本以为这么一改,大家就会满意了,没想到有几个老油条私下找到控制程序:“老哥,咱们几个程序对实时性要求比较高,能不能给咱们整个VIP队列,别跟他们一起排,优先执行我们?”

控制程序一听脸都绿了,断然拒绝。

其中有一个家伙说到:“我们几个程序可是非常重要的,要是延误了时间,你能担待的起吗?”

没办法,控制程序只能再次反馈给人类。工程师一想,倒也是,所有程序都是同样的优先级,确实太草率了。

工程师再一次升级了控制程序,这一次,不仅划分了任务状态,还设定了不同的优先级,划分了不同的队伍,让程序们去各自优先级所在的队伍排队,优先执行高优先级的程序。


一个故事看懂计算机操作系统的进化史_时间片_13

一个故事看懂计算机操作系统的进化史_计算机原理_14

不仅如此,如果有高优先级的程序出现,即使低优先级程序的时间片还没用完,也会被剥夺执行机会,工程师把这叫做抢占

不过,这一次的改动,控制程序把大家伙都蒙在了鼓里,要是知道他们还被划分了三六九等,估计得闹翻天。

经过这一轮改动,大家总算过了一段清静日子。

多核时代

硬件技术发展的太快了,有一天,人类激动的告诉控制程序:现在CPU里面有多个核心了,可以真正同时执行多个程序了,我们决定再次对你升级!

可对于控制程序来说,这可不是什么好消息,本来一个核的程序调度管理已经让他够忙活的了,现在来了多个核,这调度管理任务就更复杂了。原来只是多个优先级的队列,现在每个核都得搞一套,真是想想都头大了。

人类开始对控制程序大动手术,把它变得越来越复杂,功能也越来越强大。

最后,还给他取了一个新的名字:操作系统

【完】

PS:故事归故事,操作系统这个名字可不是多核以后才出现的哦。
另外,现代操作系统更加复杂,状态、抢占、优先级、动态优先级、动态时间片、亲和性各种因素交织在一起,综合调度,还有多种调度算法并存。


标签:进化史,操作系统,程序,控制程序,优先级,执行,CPU,计算机
From: https://blog.51cto.com/u_15202985/6020572

相关文章

  • 02 | 给你一张知识地图,计算机组成原理应该这么学
    了解了现代计算机的基本硬件组成和背后最基本的冯·诺依曼体系结构,我们就可以正式进入计算机组成原理的学习了。在学习一个一个零散的知识点之前,我整理了一份学习地图,好......
  • 计算机中查看声卡信息
     在没有安装声卡驱动之前,使用第三方软件001、鲁大师(没有检测出声卡信息)  002、驱动精灵硬件检测  003、通过设备管理器并不能检测到声卡信息 ......
  • 计算机语言发展史
    第一代语言机器语言计算机的基本计算方式都是基于二进制二进制:010101011010101111001010001直接输入计算机使用,不经过任何的转换 第二代语言汇编语言解决人类......
  • 【操作系统】操作系统的进程调度算法
    【操作系统】操作系统的进程调度算法什么是进程调度Linux是一个多任务操作系统,支持的任务同时运行的数量远大于CPU的数量进程调度就是指【怎样安排】某一时刻CPU运行【哪个......
  • 【操作系统】操作系统硬件组成和进程
    硬件组成体系结构1.为什么要学操作系统从操作系统-网络-应用程序-存储等多方面诊断和优化。比如:接口突然响应慢、服务器内存、CPU占用率高、Redis、MySQL查询慢,怎末排查问题......
  • 【操作系统】CPU平均负载和使用率
    1.CPU的平均负载(1)什么是CPU的平均负载单位时间内系统处于【可运行状态】和【不可中断状态】的平均进程数,就是平均活跃进程数,和CPU使用率并没有直接关系可运行状态正在使......
  • 【操作系统】Linux性能优化诊断pidstat+mpstat详解
    文章目录​​1.CPU压测环境准备​​​​2.pidstat+mpstat命令详解​​​​3.CPU密集型应用案例实战​​​​4.IO密集型应用案例实战​​​​5.CPU多进程调度案例实战​​​......
  • 【操作系统】计算机内存管理
    文章目录​​1.内存管理目标rom-ram​​​​2.计算机内存的惰性分配​​​​3.内存管理-分而治之思想​​​​4.内存不够的情况处理​​​​5.内存扩容swap配置实战​​​​......
  • 【操作系统】操作系统的Buffer和Cache
    文章目录​​1.Buffer和Cache的区别​​​​2.磁盘和文件写入操作案例​​​​3.磁盘和文件读取操作案例​​​​4.Cache和Buffer的命中案例​​1.Buffer和Cache的区别(1)什么......
  • 阅文加入 OpenCloudOS 操作系统社区,作为成员单位参与社区共建
    近日,阅文集团宣布加入OpenCloudOS操作系统开源社区。阅文集团成立于2015年3月,是一家以数字阅读为基础,IP培育与开发为核心的综合性文化产业集团,旗下囊括QQ阅读、起......