全部博文(168)
分类: BSD
2007-02-08 11:27:55
摘自《FreeBSD内核设计与实现》
BSD系统的历史和目标
1.1 UNIX系统的历史
# 30多年以来,UNIX操作系统得到了广泛应用,它帮助我们开拓出了计算机技术方面的许多领域,尽管从过去到现在,始终都有不计其数的个人和机构在为UNIX系统的发展做出贡献,但本书主要还是集中探讨BSD系统的发展历程:
= > 贝尔实验室(Bell Laboratories)阶段,该实验室发明了UNIX;
= > 加州大学伯克利分校(University of California at Berkeley,以下简称UC Berkeley)的计算机系统研究小组(Computer System Research Group,以下简称CSRG)阶段,CSRG赋予了UNIX系统虚拟内存机制和TCP/IP参考实现;
= > FreeBSD项目组、NetBSD项目组和OpenBSD项目组阶段,这几个项目组继承了CSRG所开创的工作;
= > 作为Apple公司OS X系统核心的Darwin操作系统阶段,这个操作系统是以FreeBSD为基础开发出来的。
1.1.1 UNIX系统的起源
# UNIX系统的第一个版本诞生于1969年的贝尔实验室。这个版本的UNIX是作为Ken Thompson的个人研究项目,由他在一台闲置的PDP-7上开发出来的。不久以后,Dennis Ritchie也加入了进来,他不但为设计和实现系统做出了许多贡献,而且还发明了C语言。UNIX系统后来用C语言进行了重写,只留下很少一点汇编语言程序。UNIX系统与生俱来的精巧设计[Ritchie, 1978]加上随后15年里的不断完善和发展[Ritchie, 1984a; Compton, 1985],使之成为一种功能强大的重要操作系统[Ritchie, 1987]。
# Ritchie、Thompson和贝尔实验室里其他早期的UNIX开发者们以前曾经在一个名为Multics的研究项目[Peirce, 1985; Organick, 1975]中一起开展过工作,这个项目对后来的操作系统发展起到了不可磨灭的作用。UNIX这个名字就是关于Multics的双关语;顾名思义,Multics系统试图做得多而全,而UNIX却只是设法做好一件事。UNIX文件系统的基本构成、采用一个用户进程作为命令行解释器的思想、文件系统接口的通用结构,以及许多别的系统特性都直接源于Multics。
# UNIX还融入了许多其他操作系统的思想,比如MIT(Massachusetts Institute of Technology, 麻省理工学院)的CTSS系统。UNIX里创建进程的fork操作则源于伯克利的GENIE操作系统(SDSS-940, 后来的XDS-940)。UNIX让用户不用花费多大开销就能创建进程,于是每条命令就是一个进程,而不会要命令作为过程调用来执行,这和Multics里采取的方式一样。
1.1.2 Research小组的UNIX系统
# UNIX的第一批重要版本是贝尔实验室Research小组开发的系统。这其中除了UNIX系统最早的那些版本之外,还包括1976年的UNIX分时系统第六版(UNIX Time-Sharing System, Sixth Edition),通常也叫做V6,它是在贝尔实验室之外被广泛使用的第一个版本。这些系统的版本是以系统发布时UNIX Programmer’s Manual的版本号来加以区分的。
# UNIX系统和当时的其他操作系统在以下3个方面有着重要区别:
= 1. UNIX采用高级语言(C语言)编写。
= 2. UNIX以源代码的形式发布。
= 3. UNIX系统有很强大的原语(primitive),它们往往只会在那些依托更为昂贵的硬件设备才能运行的操作系统中才看得到。
# UNIX的源代码绝大多数是用C语言而不是用汇编语言写成的。在当时有一种占主导地位的思想,即操作系统一定要用汇编语言编写,这样才能保证它对硬件的有效访问及其执行效率。C语言本身是一种相当高级的语言,这可以让它易于在种类繁多的计算机硬件上进行编译。使用C语言,系统程序员不必求助汇编语言,就可以获得满足要求的效率或功能,这样就没那么复杂或者那么受限制。在访问硬件时需要用到系统中仅有的那么一点汇编语言,UNIX中只有3%的操作系统功能----比如上下文切换(context switching)----需要用到它们。虽然UNIX的成功不仅仅因为它是用一种高级语言写成的,但使用C语言的确为它的成功迈出第一步[Kernighan & Ritchie,1978; Kernighan & Ritchie,1989; Ritchie et al., 1978]。Ritchie的C语言是对Thompson所创造的B语言的延续和发展[Rosler, 1984],而B语言又起源于BCPL语言[Richards & Whitby-Strevens, 1980]。C语言自身也处在不断的发展演变之中[Tuthill, 198; ISO, 1999]。
# UNIX的第二个重要特点是,它已开始就以源代码的形式从贝尔实验室提供给其他研究机构。通过提供源代码,UNIX系统的创造者们做到了一点,即让其他研究机构不仅可以使用这个系统,还可以深入研究和修改该系统的内部机制。这种能让系统很容易吸收新思想的做法是系统能不断发生的关键所在。一旦当某个新系统试图在某方面超越已抢眼的UINX时总会有人开始研究这种新系统的特性,并把它的核心思想融入到UNIX中。UNIX有着小巧而且易于理解的设计,它采用高级语言编写,并且总是能得到最新思想和技术的补充,这种独一无二的能力让它在不断发展演化中远远超越了它的最初设计版本。虽然要得到源代码必须获得许可证,但是发给大学的许可证很便宜,因此,许多人开始精通UINX的工作原理,这为后来的开放源代码时代拉开了帷幕。
# UNIX的第三个重要特点是它赋予个人用户一种能力,即可以开发运行多个进程,并将这些进程关联起来构成命令管道线(pipeline)。在当时的情况下,一般只有在价格昂贵的的大型机器上运行的操作系统才能运行多个进程,而且并发进程的数量往往紧紧控制在系统管理员一个人手中。
# 大多数早期的UNIX系统都在PDP-11上运行,这种机器在当时来说称得上是物美价廉的机型。尽管如此,V6 UNIX至少还有一个被移植到不同的体系结构----Interdata7/32[Miller, 1987]上的早期版本。PDP-11的寻址空间太小,用起来不方便。随着具有32位寻址空间的机器,特别是VAX-11/780的出现,为UNIX创造了一个拓展功能的机会,从而可以把虚拟内存机制和网络支持包括到系统中来。早些时候,Research小组曾经试验过在不同体系结构的机器上实现一些与UNIX类似的功能,试验结果证明,整体移植操作系统和在另一操作系统下复制UNIX的服务一样容易。以可移植性为特定目标的第一个UNIX系统第UNIX分时系统第七版(UNIX Time-Sharing System, Seventh Edition, V7)。它可以在PDP-11和Interdata8/32上运行,并且在VAX机器上有一个变种系统:UNIX/32V分时系统1.0版(UNIX/32V Time-Sharing System Version1.0, 32V)。贝尔实验室的Research小组又相继研制出UNIX分时系统的第八、第九和第十版(V8, V9, V10)。该系统在1996年开发出的系统叫Plan9。
1.1.3 AT&T UNIX System III和System V
# 在1978年发布UNIX系统第七版后,Research小组将对外发布权转交给USG(UNIX Suppot Group, UNIX支持小组)。USG以前对内发布过像UNIX PWB(UNIX Programmer’sWorkBench, UNIX程序员工作平台)这样的系统,而这些系统有时也曾对外发布过[Mohr, 1985]。
# 在第七版之后,USG的第一个对外发布版本是1982年的UNIX System III(System III)。该系统融合了第七版、32V以及Research小组以外其他机构所开发的UNIX系统的特点。UNIX/RT(一种实时UNIX系统)与PWB原先的许多特性都被包含进来。USG随后于1983年发布了UNIX System V,这个系统基本上由System III发展而来。后来,虽然法院裁决把把贝尔公司从AT&T中拆分,不过仍然允许AT&T在市场上大力销售System V[Bach, 1986; Wilson, 1985]。
# USG演变成为USDL(UNIX System Develepment Laboratory, UINX系统开发实验室),并且在1984年发布了UNIX SVR2(UNIX System V, Release2)。UNIX SVR2的第四版(UNIX System V, Release2, Version4)向System V引入了调页机制(paging)[Jung, 1985; Miller, 1984],这种机制包括写时复制(copy-on-write)和共享内存(shared memory)技术。但在System V上,调页机制的实现却并不是以伯克利的调页系统为基础的。ATTIS(AT&T Information Systems, AT&T 信息系统)接替了USDL,它在1987年发布了UNIX SVR3(UNIX System V, Release3)。这个版本包括了流机制(STREAMS)----一种从V8借鉴而来的IPC机制[Presotto & Ritchie, 1985]。USL(UNIX System Laboratories, UNIX系统实验室)又接替了ATTIS,USL在1993年被出售给Novell公司。Novell公司将UNIX商标转让给X/OPEN组织,后者成为唯一有权为UINX在产品上冠名建立认证标准的机构。两年后,Novell将UNIX这一名称卖给SCO(Santa Cruz Operation)公司。
1.1.4 伯克利软件发布(BSD)
# 除了贝尔实验室和AT&T UNIX开发小组之外,最具影响力的研究机构就要算加州大学伯克利分校了[DiBona et al., 1999]。伯克利的软件叫做BSD(Berkeley Software Distributions,伯克利软件发布),例如4.4BSD。BSD这个名字就源于伯克利的英文Berkeley。伯克利的发布版本第一次确立了BSD操作系统的出现。伯克利VAX UNIX的第一项工作是在32V版本上增加了虚拟内存(virtual memory)、请求调页机制(demand paging)和页面替换技术(pagereplacement),这项工作是由William Joy和Ozalp Babaoglu于1979年为开发3BSD而完成的[Babaoglu & Joy, 1981]。当时人们已经开发出了规模很大的程序,如伯克利的Franz LISP,因此才会要求3BSD具有较大的虚拟内存空间。由于开发内存管理技术的工作取得了成绩,DARPA(Defense Advanced Research Project Agency, 高防部高级研究计划署)决定签订合同资助伯克利的开发小组,令其完成随后标准版本(4BSD)的开发工作,并提供该DARPA使用。
# 4BSD研发项目的一个目标是为DARPA的Internet网络协议TCP/IP[Comer, 2000]提供支持。这种网络实现的通用性很强,能够满足从局域网(如以太网和令牌环网)到广域网(如DARPA的ARPANET)在内的各种联网方式互联互通的需要。
# 虽然3BSD之后实际上存在好几个版本:4.0BSD、4.1BSD、4.2BSD、4.3BSD、4.3BSD Tahoe以及4.3BSD Reno,但我们还是把3BSD之后的所有伯克利VAX UNIX系统都成为4BSD。从1977年刚刚有AVX开始,4BSD就一直被选作VAX机器的UNIX操作系统,这种情况一直延续的1983年AT&T发布了System V才结束。许多机构一边购买32V的许可证,一边又从伯克利定购4BSD。在Bell System公司里的许多机器运行的都是4.1BSD(在有了4.3BSD之后又换成4.3BSD)。4.4BSD在发布时提供一种新的虚拟内存系统。VAX此时已经接近寿终正寝,所以4.4BSD没有被移植到这种机器上,而是让它可以运行在像68000、SPARC、MIPS以及Intel PC这类更新的体系结构上。
# 为DARPA研发4BSD的工作是在一个由产业界和学术界的知名人士组成的执行委员会的指导下进行的。伯克利原先的DARPA UNIX项目发展到顶峰时,就在1983年发布了4.2BSD;随着进一步的深入研究,伯克利在1986年年中推出了4.3BSD。接下来的版本包括1988年6月发布的4.3BSD Tahoe和1990年6月发布的4.3BSD Reno。这些版本首先被移植到CCI公司(Computer Consoles Incorporated)的硬件平台上。穿插在这两个版本间的还有两个不受许可证限制的网络版本:1989年3月的4.3BSD NET1和1991年6月的4.3BSD NET2。这两个版本选出了4.3BSD中不受许可证限制的代码;它们能以源代码和二进制代码的形式向没有UNIX源代码许可证的公司和个人自由地重新发布。CSRG发布的最后一个需要AT&T源代码许可证的版本是1993年6月的4.4BSD。经过一年的法律诉讼之后(参见1.3节),可以自由地重新发布的4.4BSD-Lite在1994年4月公布。1995年6月,CSRG发布了最后一个版本4.4BSD-Lite Release 2。
1.1.5 UNIX无处不在
# UNIX系统在学术界也是一个收获颇丰的领域。Thompson和Ritchie因为设计了UNIX系统而获得了ACM图灵奖[Ritchie,1984b]。UNIX及其相关系统,特别是专门为教学而设计的系统----例如Tunis[Ewens et al,1985;Holt,1983]、XINU[Comer,1984]和MINIX[Tanenbaum,1987]----都已广泛用于操作系统课程的教学中。Linus Torvalds在他的自由软件Linux中重新实现了UNIX的接口。UNIX系统遍布于全世界的大学和研究机构,而它在工业界和商业界也获得了更为广泛的应用。