|
|
|
|
移动端

1.1.2 Linux之前UNIX的历史(1)

《鸟哥的Linux私房菜 基础学习篇(第三版)》第1章Linux是什么,本章介绍为何Linux可以免除专利软件之争,并且了解到Linux为何可以同时在个人计算机与大型主机上面大放光彩。本节为大家介绍Linux之前UNIX的历史。

作者:鸟哥来源:人民邮电出版社|2010-07-15 15:46

1.1.2 Linux之前UNIX的历史(1)

早在Linux出现之前的20年(大约在20世纪70年代),就有一个相当稳定而成熟的操作系统存在了。那就是Linux的老大哥"UNIX"。怎么这么说呢?这两个操作系统有什么关系呀?这里就介绍一下。

众所皆知,Linux的内核是由Linus Torvalds在1991年的时候给开发出来的,并且放到网络上提供大家下载,后来大家觉得它(Linux Kernel)相当小而精巧,所以慢慢就有相当多的朋友投入其研究领域里面!但是为什么它这么棒呢?又为什么大家都可以免费下载它呢?下面说明其中的缘由。

1969年以前:一个伟大的梦想--Bell,MIT与GE的"Multics"系统

早期的计算机并不像现在的个人计算机一样普遍,它可不是一般人碰得起的,除非是军事或者是高科技用途,或者是学术院校的学术研究,否则真的很难接触到。非但如此,早期的计算机架构还很难使用,除了指令周期并不快之外,操作接口也很麻烦。因为那个时候的输入设备只有卡片阅读机,输出设备只有打印机,用户也无法与操作系统互动(多道批处理操作系统)。

在那个时候,编写程序是件非常麻烦的事情,因为程序员必须将程序相关的信息在读卡纸上面打洞,然后再将读卡纸插入卡片阅读机来将信息读入主机中运算。光是这样就很麻烦了,如果程序有个小地方写错,光是重新打卡就很惨,加上主机少,用户众多,仅等待就耗去很多的时间。

在那之后,由于硬件与操作系统的改良,使得后来可以使用键盘来进行信息的输入。不过,在一间学校里面,主机毕竟可能只有一台,如果多人等待使用,那怎么办?大家还是得要等待。好在20世纪60年代初期麻省理工学院(MIT)开发了分时操作系统(Compatible Time-Sharing System, CTSS),它可以让大型主机通过提供多个终端机(Terminal)以连接进入主机,从而利用主机的资源进行运算工作。其架构如图1-2所示。

 
图1-2 早期主机与终端机的相关性图示

这个兼容分时系统可以说是近代操作系统的鼻祖呢!它可以让多个用户在某一段时间内分别使用CPU的资源,感觉上你会觉得大家是同时使用该主机的资源。事实上,是CPU在每个用户的工作之间进行切换,在当时,这可是个划时代的技术!

如此一来,无论主机在哪里,只要在终端机前进行输入输出的作业,就可利用主机提供的功能了。不过,需要注意的是,此时终端机只具有输入/输出的功能,本身完全不具有任何运算或软件安装的能力。而且,比较先进的主机也只能提供30台左右的终端机而已。

为了加强大型主机的功能,以便让主机的资源可以提供更多用户来利用,所以在1965年前后,由贝尔实验室(Bell)、麻省理工学院(MIT)及通用电气公司(GE)共同发起了Multics的项目,Multics项目的目的是想要让大型主机可以同时提供300台以上的终端机连接使用的目标。不过,到了1969年前后,项目进度落后,资金也短缺,所以该项目虽然继续在研究,但贝尔实验室还是退出了该项目的研究工作。(注:Multics有复杂、多数的意思。)

最终Multics还是成功地发展开发出了他们的系统,完整的历史说明可以参考http://www. multicians.org/网站内容。Multics计划项目虽然后来没有受到很大的重视,但是他培养出来的人材人才是相当优秀的。

1969年:Ken Thompson的小型File Server System

在认为Multics项目不可能成功之后,贝尔实验室就退出该项目。不过,原本参与Multics项目的人员中,已经从该项目当中获得一些想法,Ken Thompson就是其中一位。

Thompson因为自己的需要,希望开发一个小的操作系统以提供自己的需求。在开发时,有一部DEC(Digital Equipment Corporation)公司推出的PDP-7刚好没人使用,于是他就准备针对这部主机进行操作系统内核程序的编写。本来Thompson应该是没时间的(有家有小孩的宿命?),凑巧的是,在1969年8月份左右,刚好Thompson的妻儿探亲去了,于是他有了额外的一个月的时间好好待在家将一些构想实现出来!

经过4个星期的奋斗,他终于以汇编语言(Assembler)写出了一组内核程序,同时包括一些内核工具程序,以及一个小的文件系统。该系统就是UNIX的原型。当时Thompson将Multics庞大的复杂系统简化了不少,于是同实验室的朋友都戏称这个系统为Unics(当时尚未有UNIX的名称)。

Thompson的这个文件系统有两个重要的概念,分别是。

所有的程序或系统装置都是文件。

不管构建编辑器还是附属文件,所写的程序只有一个目的,就是要有效地完成目标。

这些概念在后来对于Linux的开发有相当重要的影响。

套一句常听到的广告词:"科技始终来自于人性",当初Thompson会写这套UNIX内核程序,却只是想要移植一套名为"太空旅游"的游戏呢!

1973年:UNIX正式诞生,Ritchie等人以C语言写出第一个正式UNIX内核

由于Thompson写的那个操作系统实在太好用了,所以在贝尔实验室内部广为流传,并且多次经过改版。但是因为Unics本来是以汇编语言写成的,而如第0章计算机概论中谈到的,汇编语言具有专一性,加上当时的计算机机器架构都不太相同,所以每次安装到不同的机器都得要重新编写汇编语言,真不方便!

后来Thompson与Ritchie合作想将Unics改以更高级的程序语言来编写。当时现成的高级程序语言有B语言。但是由B语言所编译出来的内核性能不是很好。后来Dennis Ritchie将B语言重新改写成C语言,再以C语言重新改写与编译Unics的内核,最后发行出UNIX的正式版本!

这群高级黑客实在很厉害!因为自己的需求来开发出这么多好用的工具!C程序语言开发成功后,甚至一直沿用至今呢!你说厉不厉害啊?这个故事也告诉我们,不要小看自己的潜能喔!你想作做的,但是现实生活中没有的,就动手自己搞一个来玩玩吧!

由于贝尔实验室是隶属于美国电信大厂AT&T公司的,只是AT&T当时忙于其他商业活动,对于UNIX并不支持也不排斥。此外,UNIX在这个时期的开发者都是贝尔实验室的工程师,这些工程师对于程序相当有研究,所以,UNIX在此时不容易被一般人所接受。不过对于学术界的学者来说,这个UNIX真是学者们进行研究的福音!因为程序代码可改写并且可作为学术研究之用。

需要特别强调的是,由于UNIX是以较高级的C语言编写的,相对于汇编语言需要与硬件有密切的配合,高级的C语言与硬件的相关性就没有这么大了!所以,这个改变也使得UNIX很容易被移植到不同的机器上。

【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

计算机网络安全

本书从计算机网络安全的概念入手,分析了单机节点、单一网络、互联网络和开放互联网络的基本安全问题,并对计算机网络安全体系架构和安全机...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊