Linux的前世今生

一、Multics计划

上世纪六十年代,人们还在用批处理计算机,也就是一次性给一批任务到计算机,然后等待结果,中途不能和计算机进行交互,而且准备作业需要耗费大量时间。于是1965年,贝尔实验室(Bell),麻省理工学院(MIT)和通用电气(GE)准备联手开发“分时多任务处理系统”,即300台以上终端机可以同时连接一台大型计算机进行作业,并取名为Multics(Multiplexed Information and Computing System,多路信息计算系统)。但由于项目进度落后,资金短缺,1969年,贝尔实验室放弃了这个项目,决定退出(后来Multics成功开发完成,尽管没有再被重视)。

二、Unix的诞生与打飞机游戏

调回到贝尔实验室的工程师看到费时的批处理机器,十分怀念先进的Multics。一位工程师Ken Thompson在研发Multics的时候,写了一个叫太空大战(SpaceTravel),是飞机发射子弹那种类型的游戏,然而这个游戏只能运行在Multics上面,他很想要移植这个游戏继续玩。1969年8月,Thompson在库房发现了一台闲置的PDP-7,刚好此时休假并且妻儿都去加利福尼亚探亲度假去了,经过四个星期的努力,用BCPL(Basic Combined Programming Language,基本组合编程语言)汇编语言编写了一组内核程序,还包括内核工具程序,以及一个小的文件系统。

完成之后,Thompson激动地把身边的同时叫过来,让他们来玩他的游戏。由于这个系统是由Multics简化而来,同事们就戏称”UNiplexed Information and Computing Service”,这个系统为即没路信息计算系统,缩写为Unics,取其谐音Unix。这时已经是1970年了,于是就将1970年定为Unix元年,现代计算机的计时也就是这个时候开始的(比如mysql数据库的TIMESTAMP)。

三、Unix的发展

Unix实在太好用了,这套系统在Bell实验室广为流传。但Unix是用汇编语言写的,高度依赖硬件,于是Thompson和Dennis Ritchie合作准备用更高级的语言改写,提高可移植性。Thompson改进了BCPL,称为了B语言,然而这套语言在内存方面有限制,一筹莫展。又和Ritchie尝试了Pascal,发现编译出来的内核性能并不好。最终Ritchie决定再对B语言进行改进,成为了大名鼎鼎的C语言,重新改写了Unix。

1974年7月,Bell实验室公开了Unix,引起了学术界的广泛讨论,并大量应用于教育目的。1978年学术界老大伯克利大学,推出了以Unix第六版为基础并加入改进的新Unix,并命名为BSD(Berkeley Software Distribution伯克利分发版),于是Unix的分支BSD系列就诞生了。由于Unix的高度可移植性与强大的性能,加上当时并没有版权的纠纷,所以让很多商业公司开始了Unix操作系统的开发。

然而当时Bell属于AT&T,AT&T被《谢尔曼反托拉斯法》规定了不能销售除了电话机电报机等之外的商品,后来随着AT&T的分解,Bell可以卖出Unix了,第七版Unix明确提出“不可对学生提供源码”,Unix走向了商业化。高昂的授权费导致很多大学停止了对Unix的研究。

四、Minix操作系统

Unix进行了商业化,教师们都用不起了,1987年,身为ACM和IEEE两会资深会员的荷兰数学与计算机科学系统教授Andrew S. Tanenbaum开发了Minix操作系统,是Unix的缩小版,用于学生学习操作系统原理,很多技术大牛希望改进Minix,但遭到了AST教授的丑拒,他认为Minix就是为了教学,让学生一学期学完,并不想被加入杂乱的东西。

五、GNU计划

Richard M.Stallman 看不惯版权收费,于1984年创立自由软件体系GNU(Gun is Not Unix),拟定了普遍公用版权协议(General Public License,GPL),所有GPL协议下的自由软件都遵循着Copyleft(非版权)原则:自由软件允许用户自由拷贝、修改和销售,但是对其源代码的任何修改都必须向所有用户公开 。GNU希望开发一个类似UNIX并且是自由软件的完整操作系统——GNU系统。到90年代初,GNU项目开发出许多高质量的免费软件,包括emacs编辑器(已经在博哥的带领下中毒……)、bash shell程序、gcc系列编译程序、gdb调试程序。

六、POSIX标准

POSIX(Portable Operating System Interface for Computing Systems)是由IEEE 和ISO/IEC 开发的一簇标准,该标准是基于现有的UNIX 实践和经验,描述了操作系统的调用服务接口,用于保证编制的应用程序可以在源代码一级上在多种操作系统上移植和运行。

七、Linux终于诞生了

此时,IBM公司开发的MS-DOS操作系统、Apple公司开发的Mac操作系统,Unix操作系统,Minix操作系统全都要收费。GNU尽管已经开发出最受期盼的GNU C编译器,开发的操作系统HURD却进度缓慢,渴求一款自由软件操作系统诞生来证明自己存在的价值。与此同时,Linus利用圣诞的压岁钱和贷款购买了一台386兼容电脑,并从美国邮购了一套Minix系统软件,在等待邮寄到达的期间,Linus认真学习了有关Intel 80386的硬件知识。为了能通过Modem拨号连接到学校的主机上,他使用汇编语言并利用80386CPU的多任务特性编制出了相关程序。甚至为了将老式电脑的软件复制到新电脑上,为一些硬件编写了驱动程序。Linus逐渐认识到了Minix的诸多限制,产生了自己编写一个新的操作系统的想法。1991年4月,Linus花费了全部时间研究Minix-386系统,并尝试移植GNU的gcc、bash、gdb到新系统上。1991年4月13日,Linus在comp.os.minix上发布信息说自己成功将bash移植到了Minix上,而且已经爱不释手,离不开这个shell软件了。1991年7月3日,Linus在comp.os.minix上透露了正在进行Linux系统的开发,并已经开始考虑POSIX的兼容了。

1991年8月25日,Linus在comp.os.minix上发布了“What would you like to see in minix?”,透露出正在开发一个免费的386操作系统,新开发的系统会移植bash和gcc,并且声明他开发的操作系统没有用一行Minix的源代码。1991年10月5日,Linus在comp.os.minix上发布消息,正式向外宣布Linux内核诞生(Free minix-like kernel sources for 386-AT)。Linux遵循GPL协议,也给GNU运动送上了一份最好的礼物。Linux提供内核,GNU提供外围软件,GNU/Linux就成了密不可分的体系。

posted @ 2021-01-12 12:23  Max_hhg  阅读(369)  评论(0编辑  收藏  举报