游戏迷提供最新游戏下载和手游攻略!

Unix的传奇历史操作系统发展阶段

发布时间:2024-07-17浏览:4

如今市面上常见的操作系统有Windows、macOS、Linux,这三种操作系统形成三足鼎立的局面,各自在自己的专业领域里闪闪发光,引领着整个时代的进步。

如果要了解操作系统的发展历史,有一个神一般的存在绕不开——UNIX。它是盘古——开天辟地之神。它是虚无——道生一,一生二,二生三,三生万物。

Unix 编年史

你可能会想:UNIX 在整个操作系统发展史上到底是一个什么样的存在?它为什么如此受人尊敬?为什么如今听说过它的人这么少?

如果你和我一样对这些问题感到好奇,就请关注我来一探究竟。

1.贝尔实验室

AT&T(美国电话电报公司)是由遍布全美的多家电话公司组成,在发展初期,AT&T意识到需要一个研究机构来系统地解决建设全国电话系统所遇到的科学和工程问题。

1925 年,AT&T 成立了贝尔电话实验室,这是一家研发子公司,通常被称为贝尔实验室,以应对这些挑战。贝尔实验室最初位于纽约市西街 463 号,后来迁至默里山。

20世纪60年代,贝尔实验室拥有员工3000人,其中1000人拥有物理学、化学、数学和各种工程学领域的博士学位。早期的贝尔实验室研究和设计物理、化学、材料科学和通信系统等,研究人员根据自己的兴趣爱好,在各个领域进行探索,不仅培养了大批诺贝尔奖获得者,而且取得了大量改变世界的科技成果,其中最早的就是晶体管。晶体管的诞生推动了半导体工业的发展,而半导体工业又为大规模集成电路奠定了基础,大规模集成电路的出现又推动了计算机产业的快速发展。

不得不说,早期的贝尔实验室是科研人员的天堂,那里是自由、进步、民主的地方,肯·汤普森、丹尼斯·里奇、布莱恩·科尼汉、罗布·派克等计算机领域著名的专家都曾在此工作过。

贝尔实验室

2.Unix的原型

20 世纪 60 年代,MIT 推出了兼容的分时系统(系统可以在用户之间快速切换,让每个用户感觉整台计算机都在自己手中)——CTSS。在那个大多数系统都使用“批处理”技术的时代,分时系统已经是一个巨大的进步。看到 CTSS 的效率,MIT 的研究人员决定做一个更好的版本。他们想制作一套信息处理工具,向公众提供计算服务。

1965年,他们开始设计Multics系统(多路复用信息和计算服务),MIT邀请了两家公司帮忙。美国通用电气(GE)——负责设计和生产具有新硬件特性的新型计算机,可以更好地支持分时和多用户。贝尔实验室——由于它在1950年代设计了自己的操作系统,经验丰富,所以在这个项目里帮忙做了操作系统。其中就有Ken Thompson和Dennis Ritchie。

Multics本应是一个很有前途、领先的操作系统,但是由于期望过高,加入了太多的新特性,导致系统过于复杂,塞进了太多的东西。在贝尔实验室看来,作为一套信息处理工具,它已经无法达到以合理的成本为实验室提供计算服务的目标,价格过于昂贵。

于是他们于 1969 年 4 月退出了该项目,让麻省理工学院和通用电气继续奋斗。肯·汤普森在 2019 年的一次采访中将他在 Multics 上的工作描述为“车轮上的凹槽,它生产出的东西我甚至不想自己使用。”虽然 Multics 最终完成了,但它并没有被广泛接受,在某些方面是一个失败。

由于退出了 Multics 项目,参与该项目的贝尔实验室成员不得不另寻他事。此时的 Ken Thompson 仍想制作一个操作系统,但由于 Multics 伤透了贝尔实验室管理层的心,他们不愿为操作系统购买硬件。Ken 和其他同事只能在纸上谈兵,设计各种操作系统组件,却无法开展实际工作。后来,Ken Thompson 找到了一台 DEC PDP-7 计算机,不仅在上面编写了一个太空旅行游戏,还花了三个星期(神级程序员的世界里没人能胜过他)为它编写了一个操作系统。

PDP-7操作系统诞生后,并没有名字。据说在Bucken Thompson、Dennis Ritchie、Brian Kernighan等同事聊天的时候,Brian Kernighan说:“从拉丁语来看,Multics意在包罗万象,而新的操作系统只能选择一个。我们应该把Multi换成uni,叫它UNICS。”因为UNICS发音类似于太监(意思是太监,Dennis Ritchie后来形容这个名字击中了Multics的关键点),后来就成了UNIX。

肯·汤普森

肯·汤普森生平简介:1943 年出生,父亲在美国海军服役,小时候随海军生活过全球很多地方,小时候喜欢摆弄电器,在加州大学伯克利分校学习电子工程,后来对计算机着迷,1966 年获得伯克利硕士学位,同年加入贝尔实验室。

Ken 不仅发明了 Unix 系统,还发明了 B 语言、Go 语言和 Unicode 编码。他还是一名国际象棋大师和飞行员(1992 年 12 月在莫斯科驾驶过米格 29 战斗机)。2006 年加入 Google,一直致力于 Go 语言的开发等相关工作。

说到肯·汤普森的人生经历,我只能用“艰难”这个词来形容。

3.第一个Unix

PDP-7 的 Unix 操作系统虽然有趣,但仅限于小型计算机,无法用于探索更大范围的可能性。早期的 Unix 团队提交了购买 DEC PDP-10(36 位内存,申请预算 50 万美元)的申请,但管理层还记得开发 Multics 的痛苦经历,所以没有批准,并表明了“我们不做操作系统”的立场。Unix 团队只好退而求其次,申请购买刚刚发布的、更便宜的 PDP-11(1971 年,PDP-11 约 6.5 万美元,PDP-10 约 50 万美元),但也遭到了拒绝。

当他们的直接购置机器的愿望无法得到满足时,他们发现专利部门的计算机系统无法满足现有阶段撰写专利申请文献的需要,于是便以专利部门需要满足日常需要为由,申请购买专门的硬件。

后来,管理层同意购买一台 PDP-11,Unix 团队需要配合开发配套软件。于是肯和丹尼斯赶紧把 Unix 从 PDP-7 移植过来(PDP-11 的硬件容量非常有限,只有 24KB 的内存空间和半兆的磁盘空间,其中操作系统占用了 16KB 的内存,只留 8KB 给用户使用)。就这样,打字员白天用 PDP-11 处理专利文献,晚上 Unix 团队就开发自己的软件系统。尝到甜头后,专利部门又为 Unix 团队申请了一台 PDP-11,这样团队成员白天就可以整天忙于开发,这个版本的 Unix 就成了第一个版本。

肯、丹尼斯和 PDP-11

4.C语言

C语言的起源可以追溯到20世纪70年代初,当时丹尼斯和肯恩参与了Multics操作系统的开发,在此期间积累了大量的经验。退出项目后,与肯恩一起开发Unix操作系统。在Unix的开发过程中,肯恩想用高级语言来编写系统。但鉴于硬件资源的匮乏(主要是计算机内存太小),BCPL语言被改造为B语言。由于B语言本身的一些特点,它不能用于大型系统级软件的开发,只能作为一种简单的脚本语言。后来,丹尼斯在B语言中加入了新的特性(据丹尼斯说,它是带类型的B语言),并为其编写了一个编译器。当时,这种语言被称为“NB”(New B),后来发展成为C语言。

B 和 C 之间的主要区别之一是 B 无类型,而 C 支持数据类型和数据类型指针上的算术运算。C 是将 Unix 从汇编语言转换为高级语言的唯一选择。

后来丹尼斯在 C 语言中加入了 struct,使其具有足够的表现力来编写操作系统代码。肯在 1973 年用 C 语言改造了 Unix,Unix 成为了一个主要用 C 语言编写的大型软件。在 ​​Unix 的第 6 版中,大约有 9000 行 C 语言代码和 700 多行汇编语言代码。

正是因为C语言的出现,为操作系统的可移植性奠定了坚实的基础(以前的操作系统都是用汇编语言编写的,不同硬件厂商之间互不兼容,可想而知操作系统的移植难度有多大,不亚于重写操作系统)。

1978年,Brian Kernighan与Dennis Ritchie合作撰写了C语言圣经《C语言程序设计》,对C语言的推广起到了重要作用。

丹尼斯·里奇

丹尼斯·里奇生平简介:丹尼斯出生于1941年,父亲是阿利斯泰尔·里奇,曾在Murray Hill的贝尔实验室工作多年。丹尼斯在哈佛大学完成了物理学本科学位和应用数学研究生学位。后来,他的博士论文通过了审查,但他拒绝按照学校的要求花钱装订,因此没有拿到博士学位(哈哈,伟人的世界不可理喻)。1967年,他正式加入贝尔实验室,成为计算机科学研究中心技术团队的一员。最初几年,他参与了Multics的开发,在这期间积累了大量操作系统和高级语言方面的经验。退出项目后,他与肯等同事共同探索,创建了Unix操作系统和C语言。

5. 对 Unix 做出贡献的先驱者

最初,Unix 只在贝尔实验室内部传播。Unix 出现后,实验室里的同事们纷纷献计献策,不仅为改进操作系统提供了许多好主意,还编写了许多实用的工具和命令。这些工具和命令大部分至今仍在使用,在许多操作系统上都能找到。

操作系统发展历程概述_操作系统发展阶段_操作系统的发展史

一次偶然的机会,我在普林斯顿大学的网站上发现了一份贝尔实验室对Unix做出重要贡献的人员名单,想与大家分享。

Unix 贡献者

如果把Unix操作系统比作汽车的心脏——发动机,那么这些工具和命令就好比汽车的各种外围设备和硬件。正是因为这些工具和命令的存在,才使得整个操作系统丰富多彩、光芒四射,为人们提供了各种场景的解决方案。

6.百花齐放

1973 年,AT&T 开始以象征性的费用向大学发放 Unix 许可证,加州大学伯克利分校是最活跃的许可证获得者之一,该校部分研究生为该系统做出了重大贡献,最终演变为伯克利软件发行版(BSD)。随后,大量基于 BSD 版本的操作系统出现,整个 Unix 生态系统蓬勃发展。

1975 年至 1976 年,肯·汤普森在伯克利度过了一年的休假,为学生教授操作系统课程。

在此期间,一位名叫比尔·乔伊的研究生修改了 Unix 源代码的本地版本,并添加了一些自己的程序,包括著名的 vi 文本编辑器(至今仍是最受欢迎的 Unix 编辑器之一)和 csh(C 语言 shell)。后来,他为 Unix 设计了至今仍在使用的 TCP/IP 网络接口。借助这些接口,网络连接可以使用与文件和设备相同的 read 和 write 系统调用进行读写,从而可以轻松添加网络功能。

几年后,比尔从研究生院退学,与朋友一起创立了著名的工作站先驱 Sun Microsystems 公司,公司的工作站软件基于 Berkeley Unix,其中包括比尔在系统、网络和工具方面的研发成果(Sun 公司后来催化了 Java 语言的发展)。

比尔·乔伊

1974年,第一次Unix用户组会议在纽约举行。

1977 年,悉尼新南威尔士大学计算机科学教授约翰·里昂斯 (John Lyons) 为几年后出版的第六版 Unix 源代码撰写了逐行注释。

此时Unix在实验室之外也得到了迅速发展。

7.Unix 战争

20 世纪 80 年代末,许多 Unix 系统供应商开始使用 Unix 品牌并销售基于系统 7 版本的软件。然而,AT&T 的 System V 与 Berkeley 发行版之间存在不兼容性。此时迫切需要一个共同的标准。

因此,1984年成立的业界联盟X/Open,希望建立一个标准的代码环境,使得程序无须修改便可以在任何Unix系统上运行。

然而,AT&T 和一些盟友组建了自己的 Unix 国际组织,以与开放软件基金会制定的标准进行竞争,从而产生了两个相互竞争的“开放”标准:针对基本库函数的 POSIX 标准和由 X/Open 管理的“单一 Unix 规范”,它为各种 Unix 版本的库、系统调用和大量通用命令指定了统一的标准。

1992 年,AT&T 起诉伯克利侵犯了 Unix 的知识产权,声称伯克利未经许可使用了 AT&T 的代码,对 AT&T 的代码进行了大量修改,并添加了 TCP/IP 和其他代码。伯克利随后删除并重写了 AT&T 的代码,并发布了一个他们认为不包含 AT&T 专利的 Unix 版本。但 AT&T 不同意,诉讼随之而来。

无论从哪个角度看,Unix本该是一个前途光明、风光无限的操作系统,然而经过多年的官司缠身,它逐渐被市场冷落,直到他们突然意识到自己把一手好牌打得这么烂,才幡然悔悟,此时他们发现,又一个新事物出现了。

1993 年,WebSphere 购买了 Unix 的版权。WebSphere 首席执行官 Ray Norda 可能意识到花在律师身上的钱远远大于出售 Unix 所赚的钱,因此决定和解所有诉讼。

8. 新事物

AT&T 试图从软件中赚钱,并对 Unix 施加了越来越多的限制,包括对大学的限制。而 BSD 没有这些限制,它的优点和缺点立刻就显现出来了。同时,AT&T 和 BSD 之间不断的斗争也促使其他人去探索新事物——试图编写自己的类 Unix 系统并创建不受限制的操作系统。

1987 年,阿姆斯特丹自由大学教授 Andy Tanenbaum 编写了一个名为 Minix 的类 Unix 操作系统。Minix 在系统调用层面与 Unix 兼容,但完全重写,并使用不同的内核组织。为了传播它,Andy 编写了一本教科书,还免费提供了源代码。

由于Minix只用于教学,一位21岁的芬兰大学生,对Unix和Minix的现状感到不满,于是他参考Minix,利用GNU提供的各种工具,开发了自己的类Unix系统Linux,这个芬兰大学生就是Linus Torvalds。

1991年8月25日,Linus 将这个项目发布到了网上,正如肯和丹尼斯没想到 Unix 会成功一样,Linus 也没有想到自己为了好玩而制作的一个小玩意儿,日后会在整个互联网上如此流行。

Linus Torvalds

如今,基于Linux内核的各种操作系统构成​​了整个互联网世界,运行在全球95%以上的计算机设备之上,其中包括:数十亿部安卓手机,各种大型计算机,Google、Facebook、Amazon等公司的服务器,IoT(物联网)设备,你我的汽车、电视,各种手持设备等等。

9.Unix 的未来

贝尔实验室在近几十年经历了多次分裂和合并,已经不再是原来的贝尔实验室,也不像以前那么出名了。但是,纵观它的发展历程,其研究人员的辛勤付出和对人类的贡献是有目共睹的。

无论未来贝尔实验室走向何方,其在人类历史上的重要地位是不可否认的。

至于Unix的未来,我想我没有资格去评论,我只知道Unix是整个互联网发展的主要推动力,也正是因为它的存在才使得整个人类步入了更加美好的未来。

10.为什么选择贝尔实验室?

Unix的成功,很大一部分要归功于贝尔实验室的管理和组织结构等非技术因素,概括起来有以下几点:

稳定的环境很重要。资金有保障。充满挑战的环境。聘用优秀人才。优秀的技术管理。员工之间无私的协作。充满乐趣的环境。

正是由于早期贝尔实验室的这些特点,各个领域拥有高超技能的人才得以聚集在一起,构思出改变世界的项目。

11.最后的想法

本文摘自曾在贝尔实验室工作并参与过 Unix 开发的 Brian Kernighan 教授所著的《Unix 传奇》一书。文中大部分内容引用了书中章节。有兴趣的朋友可以购买该书,阅读更详细的 Unix 传奇。

Unix 传奇

笔者之前写过几篇相关文章,包括《我眼中的C语言及其起源》、《那些为Unix做出贡献的前辈们》,有兴趣的可以自行搜索。

最后想说,Unix不只是一个操作系统,更是一个传奇故事,了解它,才能更好地理解互联网未来的发展方向。

热点资讯