📄 00000001.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: raner (lilo), 信区: Linux <BR>标 题: UNIX演义(1-3) <BR>发信站: BBS 水木调试站 (Thu Jun 4 16:59:56 1998) <BR> <BR> <BR>本文译自"Life with UNIX(R) -- A Guide for Everyone" <BR>译者向次书的两位作者Don Libes, Sandy Ressler表示衷心的感谢,他们为人们更好地 <BR>了解UNIX作出了贡献。 <BR> <BR>中文翻译 BlueOcean ( <A HREF="mailto:para@cs.sebuaa.ac.cn">para@cs.sebuaa.ac.cn</A> ) <BR> <BR>我们希望这些文件中的资讯能对你有所帮助,但是并不保证是正确的,若发生损害请 <BR>自行负责 <BR> <BR>----------------------------------------------------------------------------- <BR> <BR>UNIX演义(一) <BR>"One half of the world must sweat and goarn that <BR> the other half may dream." <BR> ----Henry Wadworth Longfellow <BR> <BR>UNIX的历史展现了许多关于UNIX哲学的内容。从她为什么流行至今,到她为什么有 <BR>如此古怪的许可证制度,我们沿着UNIX走向成熟的道路讲述这段历史,研究UNIX <BR>哲学及其演变过程。 <BR> <BR>1.1 创世之初 <BR>我们先谈谈UNIX的创世之初,有两点需要牢牢把握: <BR>1) 虽然UNIX的许多部分和其实现过程是创造性的,但其几个重要的思想都可以追溯 <BR>到早期的操作系统发展,并且 <BR>2) 如果不是Ken Thompson,如果不是他心灵手巧,擅长摆弄当时那些身边触手可及 <BR>的工具,UNIX是不可能被写出来的。 <BR>那是1968年,Ken Thompson和同在贝尔实验室计算机研究小组的同事们一起进行关 <BR>于MULTICS项目的研究工作。MULTICS是一个误入歧途而又辉煌灿烂的计算系统。她提 <BR>供了非常复杂的功能,同时消耗大量的计算资源。她太大而且太慢,研究人员们不 <BR>得不一开始就缩减其初始设,进行简化实现。 <BR>尽管如此,几个可工作的MULTICS实现还是完成了,提供了非常好的计算环境。在贝 <BR>尔实验室的那个是在一台模拟GE635的GE645上完成的。系统提供分时服务,但她主 <BR>要是面向批处理的,其环境笨拙且不友好。Ken和他的伙伴们(特别是Dennis Ritchie <BR>和Joseph Ossanna)不想放弃MULTICS提供的舒适环境,于是他们开始向AT&T的管理 <BR>部门游说,希望能获得一个交互式平台,诸如DEC-10,并在其上建造他们自己的操 <BR>作系统。 <BR>DEC-10是DEC公司(Digtal Equipment Corp.)推出的一系列机种的一种。该机有一个 <BR>非常灵活的交互式分时系统。很不幸,与那个时代的许多分时平台一样,DEC-10非 <BR>常昂贵。 <BR>我们应该庆幸,Ken的请求被拒绝了。这样的情性又发生了几次,这对Ken来说是太 <BR>不幸了。由于MULTICS的失败,AT&T管理当局被Ken的计划打动,他们也没有兴趣来 <BR>投资另一个仅仅是在不同的硬件上设计一个看起来与MULTICS一样的操作系统。 <BR>与此同时,Ken对一个成为星际旅行的游戏非常有兴趣。该程序模拟太阳系的几个主 <BR>要的星体和一艘可在不同对方着陆的飞船。Ken将其安装在GE系统上,GE系统忽快忽 <BR>慢的响应时间是Ken大为失望。而且根据后来Dennis的说法,在GE系统上运行一次该 <BR>游戏需要75美元,太贵了。Ken和Dennis后来找到了现在非常有名的"little-used <BR>PDP-7 sitting in a corner",他们用GE系统生成了可在该机器运行的程序代码。 <BR> <BR>----------------------------------------------------------------------------- <BR>UNIX演义(二) <BR> <BR>1.2 创世 <BR>有了星际旅行,Ken有了正当的理由去实现他曾在MULTICS计划中设计和模拟的理论 <BR>上的文件系统。很自然,一台有用的机器需要的不仅仅是一个文件系统。Ken和他 <BR>的朋友还完成了第一个命令解释器(或Shell)和一些简单的文件处理工具。开始时, <BR>他们用GE系统来为PDP-7进行交叉编译。很快,他们写好了汇编器(assembler),系 <BR>统已经开始自支持了。 <BR>这时的系统已经有了象UNIX了(如用fork()来支持多任务)。文件系统与现在的文件 <BR>系统相对相似。它使用i-节点,而且有特殊的文件类型来支持目录和设备。那台 <BR>PDP-7可同时支持二个用户。 <BR>MULTICS其实是代表"MULTiplexed Information and Computing System"。1970年, <BR>Brian Kernighan开玩笑称Ken的系统为"UNICS",代表"UNiplexed Information <BR>and Computinig System",毕竟与Ken的系统相比,MULTICS过于庞大了。(某些人 <BR>称MULTICS代表"Many Unnecessarily Large Tables In Core Simultaneously" <BR>而UNIX则是裁剪了的MULTICS。:)不久,UNICS变成了UNIX而且被流传下来。 <BR>计算机研究小组并不对PDP-7十分满意。其一是它是借来的一台机器,更主要的是它 <BR>能力有限,不太可能提供计算服务。于是小组再次提交申请,这回是一台PDP-11/20 <BR>来研究文字处理。该申请与前一次的显著的区别是PDP-10的价格只是DEC-10的凤毛 <BR>麟角。由于这次的申请十分具体,一个文字处理系统,AT&T的管理当局宽宏大量为他 <BR>们购买了PDP-11。 <BR>1970年UNIX被移植到PDP-11/20上。那可不是一件轻而易举的事,整个系统全是用 <BR>汇编写的啊!小组又将汇编写的roff(又称为runoff,troff的前身)从PDP-7移植到 <BR>PDP-11上。再加上一个编辑器就足以称为一个文字处理系统了。 <BR>与此同时,贝尔实验室的专利局正在寻找一个文字处理系统。他们选择了计算机研究 <BR>小组的基于UNIX系统的PDP-11/20。贝尔实验室专利局成了UNIX的首家商业用户。 <BR>这第一个系统有几点是很值得注意的。跑UNIX的PDP-11/20没有存储保护。它仅有 <BR>一个0.5Mb的磁盘。它支持同时三个用户,分别完成编辑,排版,再加上计算机研究 <BR>小组进行进一步的UNIX开发。该系统的手册被标为"First Edition",日期为1971年 <BR>11月。 <BR>现在都习惯在手册的版本后注明发行号。这样可能更清楚些,editions也可称为 <BR>versions,他们是一个意思。例如,Version 7和7th Edition是一回事。 <BR>第二版于1972年发行,增添了管道的功能。该版本还加上了除汇编之外的编程语言支 <BR>持。特别值得一提的是Ken曾试图用NB语言来重写核心。 <BR>NB是由B语言(由Ken和Dennis设计)修改而来的。B语言的前身是BCPL,BCPL(Basic <BR>CPL)是Martin Richards于1967年在剑桥设计的。CPL(Combined Programming <BR>Language)则是1963年伦敦大学和剑桥大学的合作项目。而CPL则颇受Algol60(1960 <BR>设计)的设计思想影响。 <BR>所有这些语言在控制结构上都和C语言相似,不过B和BCPL都是"无类型"的语言(尽管 <BR>有点用词不当),它们只支持按"字"来访问内存。NB演化为C,而C则很快称为新的 <BR>工具和应用的首选语言。 <BR>参与MULTICS(MULTICS用PL/I书写)的经验告诉Ken和Dennis,用高级语言来写系统是 <BR>合算的。由此,他们一直试图完成它。1973年,C语言加入了结构和全局变量。与此 <BR>同时,Ken和Dennis成功地用C重写了UNIX核心。Shell也被重写了。这增加系统的鲁 <BR>棒性,也使编程和调试变得容易了很多。 <BR>那时,大约有25个UNIX系统。在贝尔实验室内部成立了UNIX系统小组来进行内部维护 <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -