华纳云:操作系统的成长之路 – 作者:华纳云Yoke

第一代计算机(1940~1955):真空管和穿孔卡片

第一代计算机的产生背景:

在第一代之前,人类想用机械代替人力。第一代计算机的出现标志着计算机从机械时代进入电子时代。从巴贝奇的失败到第二次世界大战,数字计算机的建设进展甚微,刺激了计算机研究的爆炸性进展。

洛瓦州立大学的约翰·阿塔纳索夫教授和他的学生克利福德·贝里制造了被认为是第一台工作的数字计算机。这台机器使用300根真空管。大约与此同时,康拉德·楚泽在柏林建造了带继电器的Z3电脑,英国布莱切利公园的一个团队在1944年建造了巨像,霍华德·艾肯在哈佛大学建造了马克1,宾夕法尼亚大学的威廉·莫克利和他的学生J·普雷斯珀·埃克特建造了埃尼亚克。这些机器有的是二进制的,有的用真空管,有的是可编程的,但都很原始。完成最简单的操作需要几秒钟。

这期间同一组的工程师设计、建造、编程、操作、维护同一台机器,所有的编程都是用纯机器语言写的,甚至更糟糕,还要把几千根电缆连到插板上形成电路来控制机器的基本功能。没有编程语言(也没有汇编),也没听说过操作系统。使用机器的过程更加原始。详见下文“工作流程”

特点:
没有操作系统的概念的所有程序设计都是直接操作硬件的工作过程:程序员在墙上的时间表预约一段时间,程序员把他的插件版带到机房,在自己的插件板街上的电脑上,这几个小时内他独占了整个电脑资源,后面的人都要等

后来出现了穿孔卡片,可以在卡片上写程序,然后读入机器,而不是插入式板卡。优点:程序员可以在应用期享受全部资源,可以立即调试自己的程序(bug可以立即处理)。缺点:电脑资源浪费,一段时间只能一个人使用。注意:同时内存中只有一个程序,由cpu调用执行。比如10个程序的执行是第二代串行计算机(1955~1965):晶体管和批处理系统。

二代电脑的背景:因为当时电脑很贵,所以我觉得想办法减少机器时间的浪费是很自然的。常用的方法是批处理系统。特点:设计师、制作人员、操作人员、程序员、维护人员直接分工明确。电脑锁在专门的空调房里,由专业的操作人员运行,这就是所谓的‘主机’。有了操作系统的概念,就有了一种编程语言:FORTRAN语言或者汇编语言,写在纸上,然后打孔成卡,然后把卡盒拿到输入室,交给操作员,然后用咖啡等着输出界面。

第二代如何解决第一代的问题/缺点:

1、把一堆人的投入攒成一大波投入,

2、然后按顺序计算(这个有问题,但是二代计算没有解决)

3、把一堆人的输出存成一个大浪输出现代操作系统的前身:(见图)优点:批量处理,

节省机器时间缺点:

1、整个过程需要人参与控制,

2、带磁带。

3、程序员原来独享一段时间的计算机,现在必须被统一规划到一批作业中,等待结果和重新调试的过程都需要等同批次的其他程序都运作完才可以(这极大的影响了程序的开发效率,无法及时调试程序)

第三代计算机(1965~1980):集成电路芯片和多道程序设计

第三代计算机的产生背景:

20世纪60年代初,大多数计算机制造商有两条完全不兼容的生产线。一种是面向词:大型科学计算机,如IBM 7094,主要用于科学计算和工程计算;另一种是面向字符的:商业计算机,如IBM 1401,主要用于银行和保险公司开发和维护磁带存档和打印服务。不同的产品价格昂贵,不同的用户对电脑有不同的用途。IBM通过引入system/360系列,试图同时满足科学计算和商业计算。360系列的低端机相当于1401,高端机比7094强大很多。不同的表演卖不同的价格。

360是第一个采用了(小规模)芯片(集成电路)的主流机型,与采用晶体管的第二代计算机相比,性价比有了很大的提高。这些计算机的后代仍在大型的计算机中心里使用,此乃现在服务器的前身,这些服务器每秒处理不小于千次的请求。

如何解决第二代计算机的问题1:
卡拿到机房后,作业可以从卡上快速读取到磁盘上,所以在作业完成的任何时候,操作系统都可以从磁带上读取作业,并将其加载到空的内存区域中运行。这项技术被称为外部设备的同时在线操作:假脱机,也用于输出。采用这种技术后,不再需要IBM1401,也不需要四处搬动磁带(中间两个人不再需要)。

如何解决第二代计算机的问题2:

第三代计算机的操作系统已经广泛使用了第二代计算机的操作系统所不具备的关键技术:多通道技术cpu在执行一个任务的过程中,如果需要操作硬盘,就发送指令操作硬盘。一旦发出指令,硬盘上的机械臂就会滑动,将数据读入内存。在这段时间里,cpu需要等待,时间可能很短,但对cpu来说已经很长了,足够cpu做很多其他任务了。如果让cpu下滑,这就是多通道技术的技术背景。

多道技术:

多频道是指多频道技术中的多个节目。多通道技术的实现是为了解决多个程序竞争或共享同一资源(如cpu)的有序调度问题。解决方案是复用,分为时间复用和空间复用。空间复用:把内存分成几个部分,每个部分放入一个程序中,这样内存中同时有多个程序。

时间复用:当一个程序在等待I/O时,另一个程序可以使用cpu。如果能同时在内存中存储足够多的作业,那么cpu的利用率就能接近100%,类似于我们小学数学学的统筹法。(操作系统采用多通道技术后,可以控制进程的切换,或者在进程间争夺cpu的执行权限。这种切换不仅会在进程遇到io时进行,也会在进程占用cpu时间过长时进行,或者操作系统会拿走cpu的执行权限)

详解
空间复用最大的问题是程序之间的内存必须划分,需要在硬件层面实现,由操作系统控制。如果内存不互相分离,一个程序可以访问另一个程序的内存,首先失去的就是安全性。例如,您的qq程序可以访问操作系统的内存,这意味着您的qq可以获得操作系统的所有权限。

其次丧失的是稳定性,某个程序崩溃时有可能把别的程序的内存也给回收了,比方说把操作系统的内存给回收了,则操作系统崩溃。

第三代电脑的操作系统还是批处理。很多程序员都怀念第一代专属电脑,可以瞬间调试自己的程序。为了满足程序员快速反应的要求,分时操作系统应运而生。

如何解决第二代计算机问题3:分时操作系统:多个在线终端+多通道技术,20个客户端同时加载到内存中,17个在思考,3个在运行,所以cpu采用多通道的方法在内存中处理这三个程序。由于客户提交的指令一般比较短,很少耗费时间,索引电脑可以为很多用户提供快速的交互服务,所有用户都认为自己有自己的电脑资源。

CTTS:麻省理工学院在一台改进的7094计算机上成功开发了一个CTSS兼容的分时系统。

在第三代计算机广泛采用必要的保护硬件(程序之间的内存相互隔离)后,分时系统在麻省理工学院开始流行。在CTTS的成功开发之后,贝尔实验室和通用电气决定开发能够同时支持数百个终端的MULTICS(其设计者专注于构建一台机器来满足波士顿所有用户的计算需求)。显然是真的要上天了。

后来,贝尔实验室的计算机科学家肯·汤普森(Ken Thompson)参与了MULTICS的开发,开发了一个简单的、单用户版本的MULTICS,也就是后来的UNIX系统。在此基础上衍生出很多其他的Unix版本。为了使程序在任何版本的unix上运行,IEEE提出了一个unix标准,即posix(可移植操作系统接口)

后来在1987年,出现了一个UNIX小克隆体minix,用于教学。基于此,芬兰学生Linus Torvalds编制了第四代Linux计算机(1980年至今):个人电脑。

更多关于服务器系统等咨询欢迎咨询QQ: 3008019852。

来源:freebuf.com 2021-02-04 10:12:08 by: 华纳云Yoke

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论