我们的故事从上个世纪 60年代的美国开始。
那个时代的计算机是个新鲜玩意,非常笨重,家庭用户是没有的,都是商用或者试验,科学计算用的机器。你说你想买个电脑斗地主?把你卖给地主你也买不起呀。再说那时候的计算机不 是随便一个人就会用的,那时候的计算机使用的时候是由人来输入一条条的linux命令行,来进行各种运算的。他们输入的指令大约相当于现在的 汇编指令,所以这个效率和操作难度有多高就可想而知了。那时候计 算机大都没有什么操作系统,顶多有个批处理系统,可以把要输入的指令记录在某种媒介上(比如纸带)一次性输入进去,让人们省去一 条条重复输入指令的麻烦。后来慢慢有了很简单的操作系统,但并不像现在我们见到的操作系统这样通用。这个时候,卖计算机的厂商要 为每一型号的计算机设计不同的操作系统,一个程序如果在这个型号 的计算机上写好了,拿到其他型号的计算机上是运行不了的,因为这两台机器连操作系统都不一样,怎么可能程序通用呢。
计算机要是老这样肯定是不行啦,否则你今天要玩斗地主,人家游戏公司就得专门派人到你家机器上现写出一个来——因为不同型号 的计算机上的操作系统不同用嘛。这个斗地主的问题,终于还是被那个时代 IT业界的大地主,蓝色的 IBM公司率先着手解决了。1964年 他们公司推出了一个系列的大型机,用途、价位,各不一样,但他们 上面运行的操作系统,都是 System/360。(这 360可不是卖鞋的,也不是跟 QQ打架的那个。)这一下获得了很大的成功,因为省去了为每一台电脑单独编写系统的成本嘛。直到今天,IBM的大型机上依然 可以运行这个 360系统,可见其当初设计时充分考虑的兼容性。然而我们要讲的主角不是 360,而是另一个伟大的操作系统。
那时候有个聚集了很多牛人的地方,叫做贝尔实验室,是1925年由 AT&T公司成立的。一帮头脑发达四肢也不一定简单的家伙整天聚在那里,研究新奇的东西,什么任意门啊,竹蜻蜓啊,记忆面包啊——呃……都不是他们发明的(发明这些的人是个日本科学家)。那贝尔实验室那帮人研究什么呢?贝尔实验室的工作可以大致分为三个类别:基础研究,系统工 程和应用开发。在基础研究方面主要从事电信技术的基础理论研究,包括数学、物理学、材 料科学、行为科学和计算机编程理论,反正都是大学听不懂的那几门就对了。系统工程主要 研究构成电信网络的高度复杂系统。开发部门是贝尔实验室最大的部门,负责设计构成贝尔 系统电信网络的设备和软件。具体来说贝尔实验室研究出来过的东西有晶体管、发光二极管、数字交换机、通信卫星、电子数字计算机、蜂窝移动通信、有声电影、立体声录音,等等。(怎么样,不比机器猫那些东西差吧?)通信网的许多重大发明都诞生自这里。
那时候还有个聚集了很多牛人的地方,叫做麻省理工学院(MIT),这是美国的一所综合性私立大学,有“世界理工大学之最”的美名。从这里走出的牛人很多,到 2009年为止, 先后有 76位诺贝尔奖得住,都曾经在麻省理工学院学习或者工作。麻省理工学院的自然及工程科学在世界上享有极佳的盛誉,其管理学、经济学、哲学、政治学、语言学也同样优秀。另外, 麻省理工研发高科技武器和美国最高机密的林肯实验室、领先世界一流的计算机科学及人工智能实验室、世界尖端的媒体实验室、和培养了许多全球顶尖首席执行官斯隆管理学院也都是麻省理工赫赫有名宝贵资 产。有着毋庸置疑的实力, 麻省理工自然非常不差钱, 截止 2008年底麻省理工有 101 亿美元的总资产,因为不差钱,于是该校对家庭年 收入低于75000美元的学生 一律免学费。哎,万恶的资 本主义阿……不提也罢。
那时候,又有个聚集 了很多牛人的地方。(哪那 么多地方阿!)这地方是个公司,叫做通用电气。这公 司可是个大公司,当年是个卖灯泡的,他们的灯泡可非同一般,虽然不节能,虽然寿命不如现在的长,虽然价格比现在贵, 虽然外形也不一定好看,但是——他们是第一家卖灯泡的!因为他们的老大,就是大名鼎鼎 的托马斯 .爱迪生。1876年,发明灯泡的爱迪生同学成立了爱迪生灯泡厂,为节约蜡烛和灯 油做出了突出的贡献,估计那年的五一劳动奖章肯定是他的了。到 1890年,爱迪生同学将灯 泡厂重组,成立的爱迪生通用电气公司,到 1892年又与汤姆森-休斯顿电气公司合并,成立了通用电气公司。
好,时间到了 1965年,这三个聚集着不少牛人的地方有一天忽然想合作一把。于是, 大名鼎鼎的贝尔实验室,大名鼎鼎的麻省理工学院和大名鼎鼎的通用电气公司一起开始了一个制作操作系统的计划。为了结束长期以来计算机上面没有统一的操作系统的混乱局面,他 们决定要创造出一套前无古人后无来者,上得厅堂,下得厨房,念天地之悠悠,独怆然而泣 下的惊世骇俗的操作系统!具体来说吧,这个操作系统应该是一个支持多使用者、多任务、 多层次的操作系统,因为这三多,所以这个操作系统就起名叫做——MULTICS。(难道你以为叫许三多?人家讲的是英语好不好。)然后就有了这三家的强强联合,那开发的结果还用问么?这个 MULTICS操作系统的项目在 1965年成立,到了 1969年就……被取消了。
咳咳,这个……其实编写操作系统也不是一件容易的事儿啦。毕竟道路是曲折滴,研究是辛苦滴,成绩还是有滴,失败捏……也是可 以原谅滴嘛。
项目失败了,大家都很沮丧。在这些沮丧的人中,Kenneth Lane Thompson只是很普通的 一个。Kenneth Lane Thompson是 1943年出生在美国的新奥尔良的,吃着烤翅长大的他,没 有辜负养育他长大的父母和那些没有了翅膀的鸡。1960年,汤普逊考上了加州大学博克莱分 校主修电气工程,顺利取得了电子工程硕士的学位。1966年,他加入了贝尔实验室,参与了 MULTICS 项目。做项目是个很辛苦的事情,在疲劳的揉揉因熬夜而发红的眼睛后,他很想能有个电脑游戏来玩玩。然而那时候别说超级玛丽,连吃豆也没有啊!所以汤普逊同学就自己 编了一个游戏,叫做星际旅行。这个星际旅行跟星际争霸那肯定是没的比的了,不过在那时候已经算是很有吸引力了。这个游戏自然是被设计运行在 MULTICS系统上的,由于 MULTICS系统还不完善,所以游戏运行的也不是很流畅,所以,能够顺畅的玩星际旅行,成为了汤普逊同学努力工作的动力。可是后来项目被干掉了,如果事情就这样结束,那么汤普逊同学就再也不可能流畅的玩他的星际旅行了,这是多么遗憾的事情阿。可是现实是残酷的,项目确实就是取消了,要想顺畅的玩游戏怎么办?毛主席教导我们说:自己动手,丰衣足食。我估计汤普逊没有背过×××语录,但是他用自己的行动证明了这两句话的正确性。他在墙角淘换出一台 PDP-7的机器,并且伙同其同事 Dernis Ritchie,打算将星际旅行移植到这台 PDP-7上。
当然,要想运行这游戏,还是得有个系统。有了固定的系统,那以后再编写别的游戏就更方便了。可是系统从哪里来?MULTICS?已经停工了,并且这系统绝对不是两个人可以搞定的。那怎么办?还得自己动手!于是 Ken Thompson和 Dernis Ritchie再次发扬自己动手的 精神,用汇编语言写出来个系统,这就是最初的,非常简陋的,UNIX的前身。这个系统不像 MULTICS 那么牛,不支持很多的用户,只能支持两个用户,(估计是为了避免做好了之后俩人抢机器玩的局面发生。也可能是为了以后俩人对战?)支持的进程也有限,其他功能也都 没有 MULTICS设计的那么复杂。相对于那个 MULTICS系统——MULTiplexed Information andComputing System,Brian Kernighan 开玩笑地戏称他们的系统其实是:"UNiplexed Information and Computing System",缩写为"UNICS"。后来大家取其谐音,就诞生了UNIX 这个词。这一年,已经是 1970年,史称 Unix元年。直到现在,计算机中都是用 1970年 1月 1日 0点 0分 0秒 为原点来记录时间。(计算机中的时间记录的是自 1970年 1月 1日 0点 0分 0秒开始,到现 在经过的总秒数,再用这个秒数计算出年,月,日)后来,Brian Kernighan觉得用汇编写的系 统不好维护,于是……他发明了C语言(符合大牛一切自己动手的风格),然后用 C语言又 重写了一遍。从此,Unix走上了发展的快车道,并且一直用到现在。许多世界级的大服务器, 用的都是 Unix系统。
而这一切的努力,就是为了玩个游戏。-_-b