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

一个,故事,计算机,操作系统,进化史 · 浏览次数 : 0

小编点评

**计算机升级的故事** 计算机从诞生以来,一直是人类文明的重要驱动器。随着科技进步,计算机的性能越来越强大,它开始处理各种任务并超越人类的处理能力。 然而,随着计算机的性能提升,人们逐渐发现排队问题。程序之间需要顺序执行才能执行任务,而当程序数量过多时,排队时间就会持续很长时间。这不仅 waste 了计算机资源,更使人机矛盾加剧。 为了解决这个问题,人们开始研究如何让多个程序并发运行。 control程序是解决这个问题的关键。 **控制程序是如何改进计算机性能的?** * 降低排队时间:控制程序可以根据程序的执行顺序,并分配不同的时间片给不同的程序。 * 提升性能:控制程序可以优化程序之间的执行顺序,并使用抢占技术来提高效率。 * 减少资源消耗:控制程序可以根据程序的类型和优先级,动态调整资源分配。 **控制程序的升级历程** * 第一次升级:所有程序排成一个队来轮转,每个程序只有一次执行的机会。 * 第二次升级:划分了任务状态,只允许高优先级程序进行执行。 * 第三次升级:使用抢占技术,允许低优先级程序在高优先级程序执行完成后被剥夺执行机会。 **结论** 计算机升级的故事告诉我们,即使技术进步很快,我们也要不断探索新的方法来优化计算机性能。控制程序是解决排队问题的重要方法,它可以帮助我们提高计算机的性能并为我们带来更多便利。

正文

https://www.cnblogs.com/xuanyuan/p/14749838.html

 

 

计算机

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

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

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

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

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

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

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

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

多道程序处理

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

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

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

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

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

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

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

时间分片

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

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

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

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

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

“赶紧想办法啊!”

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

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

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

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

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

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

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

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

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

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

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

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

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

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

状态

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

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

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

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

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

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

优先级

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

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

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

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

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

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

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

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

多核时代

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

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

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

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

【完】

PS:故事归故事,操作系统这个名字可不是多核以后才出现的哦。

另外,现代操作系统更加复杂,状态、抢占、优先级、动态优先级、动态时间片、亲和性各种因素交织在一起,综合调度,还有多种调度算法并存。

与[转帖]一个故事看懂计算机操作系统的进化史相似的内容:

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

https://www.cnblogs.com/xuanyuan/p/14749838.html 计算机 很久很久以前,有一台机器,体型巨大,每秒钟可以进行几千次的加法运算,名震一时,人类给它取了个名字:计算机。 除了加法,它还能计算平方、立方、正弦、余弦,比人类的大脑算得快多了。 许多程序慕名而来

[转帖]一个故事看懂CPU的TLB

https://www.cnblogs.com/xuanyuan/p/15347054.html Hi,我是CPU一号车间的阿Q,还记得我吗,真是好久不见了~ 我所在的CPU是一个八核CPU,就有八个工作车间,那运行起来速度杠杆的~ 虚拟地址翻译 一大早,我们一号车间MMU(内存管理单元)部门的小黑

[转帖]一个故事看懂CPU的SIMD技术

https://www.cnblogs.com/xuanyuan/p/16048303.html 好久不见,我叫阿Q,是CPU一号车间的员工。我所在的CPU有8个车间,也就是8个核心,咱们每个核心都可以同时执行两个线程,就是8核16线程,那速度杠杠滴。 我所在的一号车间,除了负责执行指令的我,还有负

[转帖]一口气看完45个寄存器,CPU核心技术大揭秘

https://www.cnblogs.com/xuanyuan/p/13850548.html 序言 前段时间,我连续写了十来篇CPU底层系列技术故事文章,有不少读者私信我让我写一下CPU的寄存器。 寄存器这个太多太复杂,不适合写故事,拖了很久,总算是写完了,这篇文章就来详细聊聊x86/x64架构

[转帖]Kafka故障之磁盘打满

https://www.jianshu.com/p/095e820361ae 问:磁盘打满扩容后能正常重启吗?答:不一定 要看文件格式是否损坏(log、index等)。如果损坏会报错:index file due to requirement failed: Corrupt index found,

[转帖]性能优化 YYDS - Brendan Gregg 与 Intel.com 的故事

https://www.modb.pro/db/421309 译者序 金庸笔下的《鹿鼎记》有: !! 平生不识陈近南,便称英雄也枉然 现代的认真搞技术的后端程序员,应该也有一句: !! 平生不识 Brendan Gregg,便呆 BAT 也 SoSo 从 2016 年开始,做一个 JVM 调优开始,

【转帖】GPT4All开源的聊天机器人

GPT4All是一个开源的聊天机器人,它基于LLaMA的大型语言模型训练而成,使用了大量的干净的助手数据,包括代码、故事和对话。它可以在本地运行,不需要云服务或登录,也可以通过Python或Typescript的绑定来使用。它的目标是提供一个类似于GPT-3或GPT-4的语言模型,但是更轻量化和易于

[转帖]BPF 拓荒者 —— Brendan Gregg 与 Netflix 的故事

https://www.modb.pro/db/421308 译者写在开头 在我的上一篇文章:Brendan@Intel.com[1] 中,我翻译了他与 Intel 的故事。这次,我们时光倒流一下,说说前传:Brendan Gregg 与 Netflix 的故事。 我写博客的出发点是想把自己所学所思

[转帖]从性能问题定位,扯到性能模型,再到 TCP - 都微服务云原生了,还学 TCP 干嘛系列 Part 1

https://blog.mygraphql.com/zh/posts/low-tec/network/tcp-flow-control-part1/ 引 本来想直接写理论、和实践分析的,但为了不 “赶客出門” 和不 TL;DR,还是以故事形式展开吧。语言要生动活泼。 故事的开始 话说,一次性能测试

[转帖]线上一个隐匿 Bug 的复盘

前言 之前负责的一个项目上线好久了,最近突然爆出一 Bug,最后评估影响范围将 Bug 升级成了故障,只因为影响的数据量有 10000 条左右,对业务方造成了一定的影响。 但因为不涉及到资金损失,Bug 修复后对数据进行修补,所以最终级别也是较低的。 今天和大家分享这个线上隐匿的 Bug,也好在工作