008 | linux发展历史-04
本文为《跟马哥学Linux》系列文章的第八篇,上一篇文章为《 Linux发展历史-03》。
最早期的时候pdp-7上面跑的unix就已经具备了今天很多操作系统当中的核心特性,实际上unix从最早设计开始从那么小那么简陋,虽然说是上个世纪六十年代末,大概这个时间是1969年前后设计大产品,但已今天的眼光来看unix仍然是设计上没有硬伤的一款产品,那就意味着这款产品设计是非常好的非常精良的,其实unix的研发也就花了两天的时间在写的时候,而unix真正引起人们关注的或者说给我们生产环境,给我们带来从生产力的是,1971年的时候,bell实验室他需要的为自己的内部一个专利部门提供一个文字处理的程序这个文字处理的程序叫nroff,这个程序的运行需要一个底层的系统,需要开发这么一个系统,而在pdp-12上跑的系统对于nroff来讲并不理想,所以后来Ken几个人就把这个项目给承包下来了,并添加到他的unix上来启动这个程序。
并在写nroff的过程中unix也不断的改进。万幸的是,不久当时管理层还没有意识到,只是觉得nroff这个程序还不错,没有意识到unix在随后到底能够发展出一个这么让人惊奇的东西来,所以呢,这个时候还没有把unix给商业化的想法。而时间走到1972年前后,unix的装机量已经达到10台并且在bell实验室广为流行,。
刚刚说过,最初unix使用汇编语言写成的,而各种应用程序使用解释性语言b语言编写,B语言的特点在于非常小瞧,短小精悍,但是他是一种解释性语言功能还不够强大,后来bell实验室的另一位年轻人Dennis Ritch,这个家伙就把B语言增加了一些像什么数据结构,数据类型,等等进而把B语言升级了称为B+语言,不过后来人们觉得B+不好听就改成了C语言,所以这个作者花了一点时间把B鼓捣鼓捣改进了一番成为C,这个就是到今天为止三四十年来依旧流行的编程语言之一。那个时候从生产出来的工具来看就有那么强悍的生命力我们不得不说这代工程师都是天才级的人物。
这个C语言就是从B语言写过来的。而1973年74年的时候Ken与Dennis Ritch两个人决定联合起来,用C重写整个unix,汇编语言与机器的耦合度非常大,如果我们是给PDP-7写的装到PDP-8上都跑不起来,所以与底层设备的程度太紧密,后来有了C语言以后,C语言其实适合底层的CPU是没有关系的,有关系的其实就是编译器,编译成特定主机上的汇编就可以了。比如说我们现在有多种电脑设备。我们为了以示区别有不同的图形,第一种,第二种,第三种,
现在我们要写一个unix让他在这三种主机上都能跑起来怎么办的,开发一个版本给第一种,在开发一个版本给第二种,在开发一个版本给第三种,他们之间的代码的相同量很有可能就不足30%,剩下70%都得重新编写因为底层不一样,指令也完全不一样思路可以演习,但是实现必须重构这就效率太低了,为了避免这样的情形,我么给他加一个中间层,这就是高级语言。
加了这么一个中间层任何一个语言写的程序都可以在每一种机器上运行但是并不意味着这三种机器就没有区别了,他们的区别依然存在。为什么程序员写的一个程序可以在这么多个系统上运行呢应为有中间层所以程序要写一款程序,这个中间层负责如果要在第一种上运行这个中间层就把他翻译成适用于第一种系统的,如果要在第三种上运行这个中间层就把他翻译成适用于第三种系统的,所以这个家伙是多能的,所以他能为C语言提供各种平台提
供专用版本。
你是说英语的,就把他翻译成英语,你是说德语的,就把他翻译成德语,你是说法语的,就把他翻译成法语,这个加过是一个通晓各种语言的全才的翻译,这就是中间层,而这就是编译器,他能完成这种功能,所以一个高级语言,当你写完程序以后不用担心底层环境不一样只要编译器能够应付那种硬件设备那么就能帮你把你写的程序转换成特定硬件设备能运行的程序,这个家伙就叫做编译器,所以他至关重要,而C语言的编译器的的确确能够支持多种不同的平台,我这么说还不够精确,因为底层上还有操作系统呢从不需要完完整整的考虑到底层硬件设备的比一样的地方,因为我们还有汇编,还有底层系统。
这样说是为了让各位能够更容易的理解问题,有意这么描述的。C与硬件没关系了所以就把unix本来是用个汇编语言写的只能用在PDP主机上改成完全用C写只有其中一小部分代码仍然用汇编写所以是的这个程序将来我们想装在任何系统上,只要编译器支持他就能够支持硬件设备了。所以一下子使unix的适用范围快翻起来。不过这在当时1973年74年这么做使非常冒险的做法,因为,那个时候的计算机的运行性能很差,而语言的越高级,他浪费的资源那也大,计算机运行起来就越慢。所以那个时候地做法,相当于饮鸩止渴但他们就这么坚持做了而且确实冒了很大风险,大概时间走到1979年的时候,据说Dennis Ritch在一篇厂商种说到unix今天的成功就是当年用C语言改写带来的,他们那帮人有魄力在当时完成了将Unix用C语言编写的方式而且双方合起来发飙了一篇论文,当时发表在《美国计算机通信》杂志上,第一次公开展示unix,时间是1974年前后,第一次把unix公之于众,全球人民全知道unix了,第一次走出bell实验室。公之于众后,很多大学和研究机构读到了这篇文章,他们发现bell居然研制了这么一个短小精悍地东西,他们都期望拿来学习和研究使用。
不过,当时的bell实验室属于AT&T美国电报电话公司,当时美国最高人民法院正在反垄断,正在诉讼ATMT,那个时候AT&T被反托拉斯法裁定,不能销售电报电话意外的任何产品,不但不能销售,别人要你还得给,而那个时候很多大学研究机构都想要Unix而他们没有权限去销售还得无偿给。所以当那些人发来邮件给Ken说我想要一份unix,当时ken什么事也不做,没事就没事就弄个磁带机拷贝unix给对刚寄过去。这件事干了很长一段时间,这个时候离个人机出现还有一段时间,个人PC机出现是在80年代了这会还在70年代中期那个时候这些大学和研究机构获得了unix以后都是如获至宝,花很多时间来研究unix,并将他们的研究成果有回馈给bell实验室,使得bell在这一方面unix的发展非常快,而现在unix公认的完整的第一个发行版本是第七版而且unix起的名很独特就叫做system v7这个时候都已经在高校中都已经非常流行了这个时间是在1979年前后。
unix这个产业也开始出入端倪了大概在1978年第一个以商业方式包装发行,有些人研究发现,我如果在这个基础之上提供更好的服务,我去买点前恐怕还是有人买的所以1978年全球第一家包装发行商业版unix的公司诞生了。叫做西雅图数字公司sco开始包装发行unix并且开始出售第一个商用版的c编译器,而且1980年也在美国西雅图一家更为不起眼的公司成立了叫做Microsoft,当时只有两款产品,一个事B编译器,两一个也在卖Unix,叫做XENIX,其实就是unix的变种。另外在unix发展历史当中最早加入进来并且到今天为止对unix发展历史上做出了卓越贡献的是美国加州大学的伯克利分,芭芭拉分校都非常有名,在计算机的历史上都做了很大的贡献。而ken这个家伙,公司都很邪恶,工程师一旦做出巨大贡献以后都会放年假因此,ken大概在1976年年休的时候到了伯克利分校任教,因此伯克利分校在unix研究上更是走在了前列而伯克利分校有个研究生叫Bill joy在unix上花了很长时间,并且他们还成立了BSRG组织就是伯克利操作系统研究小组大概在1977年发布了由BSRG发行的unix并且命名为BSD为什么叫做BSD呢?意思是伯克利系统分发版,所以简称为BSD。
1980年前后已经称为伯克利加州大学校园网的核心系统之所以伯克利走的这么激进主要还是因为Ken在那呆过1年,另外1980年前后美国国防部高级研究计划署叫做DARPA,他需要请人在unix环境下的实现TCP/IP协议栈其实本来DARPA是打算在DEC公司VAX系统上的VMS上来实现的。DEC公司生产的小型机由PDP,还有一种叫做VAX,而且VAX有他自己的操作系统叫做VMS,也是个多任务系统本来DARPA想在VMS上研究TCP/IP协议。
但是他们担心VMS这个商业系统不会把源码给我无法改进,那个时候unix还是开放的,他们可以没有阻碍的拿到unix的源代码,所以他们就把这个项目,就是研究TCP/IP的合同递交给了伯克利的BSRG,因此1983年的时候tcpip正式诞生在了,BSD的unix的系统上所以tcp/ip协议就是在unix上被研发出来的能更好的整合在unix系统上。有tcp/ip之前主机要想互相通信是非常困难的,tcp/ip让整个世界发生了天翻地覆的变化,比如说现在我们构建的各种网络通信都是在tcp/ip协议栈上实现的。这是1980年到1983年之间。