红联Linux门户
Linux帮助

FreeBSD的起源

发布时间:2006-10-17 10:11:14来源:红联作者:asiaec
  在计算机领域,Unix一直是作为高端平台而出现的。几年以前,只有在大型机构的专用机房中才能接触到它们,甚至稍小一些的机构也负担不起购买Unix工作站的费用。只有很少的使用者才有机会接触和使用Unix,能管理和维护 Unix系统的计算机专业人员就更少了,这就使得Unix总是披着一层神秘的面纱,在普通使用者面前,Unix属于一种难于使用、十分昂贵的操作系统。然而,当运行在个人电脑上的自由Unix系统出现之后,这种情况已经改变了。
  事实上,今天的Unix已经不能说是一个单一的操作系统,它包括了非常多的种类,有高端的HP、SUN服务器,也有中、低端的运行在Intel平台上的Unix系统。Unix不再是普通使用者可望而不可及的操作系统了,每个喜爱Unix的人都可以在自己的PC机中安装上一套Unix系统,学习它、使用它。而中小企业也可以使用PC服务器来运行Unix系统,充分利用Unix系统的强大处理能力。
  FreeBSD就是一种运行在Intel平台上、可以自由使用的Unix系统,它可以从Internet上免费获得。而它又具备极其优异的性能,使它得到了计算机研究人员和网络专业人士的认可。因此,不但专业科研人员把它用作个人使用的Unix工作站,很多企业,特别是ISP(Internet服务提供商)都使用运行FreeBSD的高档P C服务器来为他们的众多用户提供网络服务。
  
?FreeBSD的起源
  自从1969年AT&T Bell实验室研究人员创造了Unix之后,Unix就不断发展,逐渐成为了主流操作系统。虽然当前Windows系列已经占据了桌面计算机的领域,其中Windows NT服务器也在网络服务器领域得到了部分用户的承认,但在高档工作站和服务器领域,Unix仍然具有无可替代的作用。尤其在用作Inter net服务器方面,Unix的高性能、高可靠性、以及高度可扩展的能力仍然不是其他操作系统所能够代替的。
  虽然Unix由AT&T创造,但它如此流行却并不能完全归功于AT&T自己的功劳。现代Un ix不是一个厂家的单独产品,在它长期的发展过程中形成了多种不同的版本。惟其丰富多样,才使得Unix具有强大的生命力。FreeBSD正是Unix众多分支中相当优秀的一支,它的发展历史也相当悠久,是著名的BSD Unix的一个继承者,因此要了解FreeBSD发展的历史,首先就要了解Unix发展的历程。
  
? Unix的历史发展
  
  Unix操作系统的历史漫长而曲折,它的第一个版本是1969年由Ken Thompson在AT& T贝尔实验室实现的,运行在一台DEC PDP-7计算机上。这个系统非常粗糙,与现代Unix相差很远,它只具有操作系统最基本的一些特性。后来Ken Thompson和Dennis Ritchie使用C语言对整个系统进行了再加工和编写,使得Unix能够很容易的移植到其他硬件的计算机上。从那以后,Unix系统开始了令人瞩目的发展。
  由于此时AT&T还没有把Unix作为它的正式商品,因此研究人员只是在实验室内部使用并完善它。正是由于Unix是被作为研究项目,其他科研机构和大学的计算机研究人员也希望能得到这个系统,以便进行自己的研究。A T&T以分发许可证的方法,对Unix仅仅收取很少的费用,大学和研究机构就能获得Unix的源代码以进行研究。Unix的源代码被散发到各个大学,一方面使得科研人员能够根据需要改进系统,或者将其移植到其他的硬件环境中去,另一方面培养了懂得Unix使用和编程的大量的学生,这使得Unix的普及更为广泛。
  由于操作系统的开发相当困难,只有少数的计算机厂商,如IBM、Digital等大型公司,才拥有自己的操作系统,而其他众多生产计算机的硬件厂商则采用别人开发的操作系统。因为Unix不需要太多的花费,因此很多厂商就选择了Unix作为他们生产的计算机使用的操作系统。他们把Unix移植到自己的硬件环境下,而不必从头开发一个操作系统。
  到了70年代末,在Unix发展到了版本6之后,AT&T认识到了Unix的价值,成立了Unix系统实验室(Unix System Lab,USL)来继续发展Unix。因此AT&T一方面继续发展内部使用的Unix版本7,一方面由USL开发对外正式发行的Unix版本,同时AT&T也宣布对Unix产品拥有所有权。几乎在同时,加州大学伯克利分校计算机系统研究小组(CSRG)使用Unix对操作系统进行研究,因此他们的研究成果就反映在他们使用的Unix中。他们对Unix的改进相当多,增加了很多当时非常先进的特性,包括更好的内存管理,快速且健壮的文件系统等,大部分原有的源代码都被重新写过,以支持这些新特性。很多其他Unix使用者,包括其他大学和商业机构,都希望能得到CSRG改进的Unix系统。因此CSRG中的研究人员把他们的Unix组成一个完整的Unix系统──BSD Unix(Berkeley Software Distribution),向外发行。
  BSD Unix在Unix的历史发展中具有相当大的影响力,被很多商业厂家采用,成为很多商用Unix的基础,而AT&T与其同时存在的Unix版本的影响就小得多。同时很多研究项目也是以BSD Unix为研究系统,例如美国国防部的项目─ARPANET,ARPANET今天发展成为了Internet,而BSD Unix中最先实现了TCP/IP,使Internet和Unix紧密结合在一起。
  而AT&T的Unix系统实验室,同时也在不断改进他们的商用Unix版本,直到他们吸收了BSD Unix中已有的各种先进特性,并结合其本身的特点,推出了Unix System V版本之后,情况才有了改变。从此以后,BSD Unix和Unix System V形成了当今Unix的两大主流,现代的Unix版本大部分都是这两个版本的衍生产品。
  Unix的版本号表示方式比较复杂,各种不同的Unix版本有自己的版本标识方式,如最早AT&T开发的内部Unix使用简单的顺序号来标识版本,从V 1到V 7。
  BSD使用主版本加次版本的方法标识,如4.2BSD,4.3BSD,在原始版本的基础上还有派生版本,这些版本通常有自己的名字,如4.3BSD-Net/1,4.3BSD-Net/2。
  AT&T使用罗马数字来标识他们的对外发布的Unix版本,用Release来表示次版本。如Sys tem V Release 4(简写为SVR4)标识AT&T的Unix System V的第四次发布的版本。
  其他商业公司的Unix使用自己的版本标识,如Sun的Solaris 2.6,IBM的AIX 4.0等。
  虽然AT&T的Unix System V也是非常优秀的Unix版本,但是BSD Unix在Unix领域内的影响更大。AT&T的Unix系统实验室一直关注着BSD的发展,在1992年,Unix系统实验室指控BSDI── 一家发行商业BSD Unix的公司,违反了AT&T的许可权,发布自己的Unix版本,并进一步指控伯克利计算机系统研究组泄漏了Unix的商业机密(此时的4.3BSD中来自AT&T Un ix的代码已经不足10%)。这个官司影响了很多Unix厂商,使他们不得不从BSD Unix转向Unix Sys tem V,以避免法律问题。以至于当今大多数商业Unix版本都是基于Unix System V的。
  这件有关Unix版权的案子直到Unix系统实验室被AT&T卖给了Novell公司后才得以解决, Novell不打算陷入这样的法律纷争中,因此就采用了比较友好的做法。伯克利的CSRG被允许自由发布BSD,但是其中来自于AT&T的代码必须完全删除。因此CSRG就对他们最新的4.4BSD进行了修改,删除了那些来自于AT&T的源代码,发布了4.4 BSD Lite版本(该系统是不完整的,尤其对于英特尔386体系的计算机系统)。由于这个版本不存在法律问题,4.4BSD Lite成为了现代BSD系统的基础版本。
  Novell的比较友善的做法还不止对BSD,他把自己的Unix改名为Unixware, 而将Unix商标赠送给X/Open── 一个由众多Unix厂家组成的联盟,这样这个联盟内的所有成员均可使用Unix商标。从此之后,Unix不再是专有产品了。后来Novell由于自身的经营问题,又将Unixware卖给SCO公司。同时,由于BSD系统已经十分成熟,作为对操作系统进行研究的目标已经达到,伯克利计算机系统研究组(CSRG)在发布了4 .4BSD-lite2之后就解散了,小组的科研人员有些进入了Unix商业公司,有些继续进行其他计算机领域的研究。此时,严格意义上的Unix System V和BSD Unix都不复存在了,存在的只是他们的各种后续版本。
  回顾Unix的发展,可以注意到Unix与其他商业操作系统的不同之处主要在于其开放性。在系统开始设计时就考虑了各种不同使用者的需要,因而Unix被设计为具备很大可扩展性的系统。由于它的源码被分发给大学,从而在教育界和学术界影响很大,进而影响到商业领域中。大学生和研究者为了科研目的或个人兴趣在Unix上进行各种开发,并且不计较金钱利益,将这些源码公开,互相共享,这些行为极大丰富了Unix本身。很多计算机领域的科学家和技术人员遵循这些方式,开发了数以千计的自由软件,包括FreeBSD在内。正因为如此,当今的Internet才如此丰富多采,与其他商业网络不同,才能成为真正的全球网络。开放是Unix的灵魂,也是Internet的灵魂。
  由于Unix的开放性,另一方面就使得存在多个不同的Unix版本。由于不同的Unix使用稍有差别的文件、目录结构,提供略有不同的系统调用,因此对系统管理、以及为Unix开发可移植的应用程序带来一定的困难。例如Sys tem V和BSD的很多系统调用就存在不同。在Unix历史发展中也存在将Unix完全统一的努力,例如POSIX 规范就是各个Unix厂商经过协商,达成的Unix操作系统应该遵循的一套基本系统调用的规定。然而由于存在多个Un ix系统,各个厂商的意见很不统一,因此POSIX规范制定的很宽松,甚至Windows NT中也存在一个POSI X子系统。事实上,只要各个Unix之间协调发展,不故意为了商业目的而人为的制造系统差异,就能够保持各个Unix 之间不致具有太大的差别,保持Unix系统的多样性比只有唯一的一个Unix系统更能够促进技术的进步和发展,企图人为的统一Unix的想法只能是某一个Unix厂商的一厢情愿。
  有时为了避免法律纠纷,表明自己的程序代码是完全重写的,一个软件厂商会故意将一些函数声明的与其他系统的中的同类函数不同,例如使用不同的函数参数或改变函数参数的顺序等。Unix System V中的很多系统调用与BSD Unix不同的部分原因也在于此。这些差异人为造成了不同系统的源程序的差异。
  
? FreeBSD的起源和发展
  Unix的魅力不仅在于其功能的强大性,还在于其优秀的可扩展性,它提供了高级语言C和各种解释语言可用于编写程序。利用这些系统提供的工具,使用者就能按照自己的需要和兴趣对原有系统进行扩展,满足相当一部分计算机研究人员和使用者的需要,这样Unix就具备更强大的能力,完成各种复杂的任务。一旦用熟了Unix,体会到Unix 的强大功能,使用者就会希望一直使用它,而不是仅具备有限能力的其他计算机系统。企业也希望能在其可以承受的条件下,利用Unix系统的强大处理能力。
  由于Unix是多用户操作系统,作为系统的普通使用者只能使用系统提供的有限功能,而只有Unix系统管理员才能充分利用其的全部能力。因而拥有自己的Unix系统也是一个普通Unix使用者的愿望。但是在那些时候,能够满足这些愿望的计算机并不是每个人都能买得起的。昂贵的硬件,以及Unix逐渐商业化趋势,都使得拥有自己的Unix对大多数人只是美好的愿望,而使用Unix的地方主要为一些要求较高的科研和大中型公司机构。
  到80年代,个人计算机的出现,使得硬件的价格能被个人和小企业接受了,给拥有一个Unix系统的愿望带来了一线曙光。但是使用8086芯片的个人计算机能力比较差,在其上不能实现真正正常工作的多用户系统。进入九十年代之后,英特尔公司推出的80386芯片使个人计算机的计算能力大大提高,在个人计算机上构建一个可以真正使用的Unix也成为了可能。
  事实上此时能运行在X86平台上的Unix相当有限,Mircosoft的Xienx是一种(后来发展成为S CO Unix),但不能指望能自由、免费使用这个商用系统。要移植Unix到PC平台上便需要Unix的源代码,而此时受AT&T的许可权的限制,Unix代码还不能被自由获得(但在BSD与AT&T的法律纠纷之后的4.4 BSD Lite不再受这个限制了,可以在BSD许可下自由使用)。很多计算机爱好者为了实现一个可以自由使用的操作系统,不但进行着努力。自由软件基金会的GNU计划的目的就是打算创建一个自由的、与Unix类似的操作系统,为了实现这个目的,GNU开发了很多非常有效的工具、包括编译器和很多系统命令,然而GNU计划中的操作系统内核 ──HURD,却进展缓慢,从而无法构建一个完整的操作系统。很快,就有计算机爱好者开始考虑在个人计算机平台上构建一个Unix内核。芬兰一位计算机研究生Linus Torvalds开始了这个工作,他通过学习Minix──一个用于教学目的的简单Unix系统,在x86平台上构建了Linux内核,这个内核和GNU的系统工具结合起来,取得了相当大的成功,成为当前非常流行的GNU/Linux系统。
  与这些努力相比,BSD方面的研究人员的行动则比较迟缓,一个原因是Unix技术上已经相当成熟,计算机系统研究组的大部分成员已经把注意力转向了其他研究项目,另外AT&T与BSD的法律纷争也使得BSD发展受到了阻碍。但是还是有两个将BSD移植到80386平台的开发工作同时进行,一个是BSD/386小组,他们的研究结果为商业版本的BSD/OS,属于商业公司BSDI。另一个就是386BSD计划,后来发展成为FreeBSD。
  CSRG研究人员的条件比较优越,拥有足够的Unix系统,因此对个人计算机平台上的Unix系统没有太急迫的要求。
  386BSD计划由Bill Jolitz等研究人员发起,将4.3BSD Net/2移植到80386平台上,并使用386BSD的名称发布。但是移植工作是一个复杂的任务,直到386BSD 0.5版本,系统中仍然存在相当多的问题没有解决。于是在1993年,另一些研究者决定加入这个计划,打算和Bill Jolitz一起修正系统中存在的问题。但是这时计划的组织者Bill Jolitz突然决定退出,使得386BSD计划面临停止的危险。Bil l Jolitz作为计划的发起者和负责者并没有对这个计划以后该如何发展给出具体意见,因此386BSD计划是到此为止还是继续发展,就取决于其他开发者的决定。幸运的是,该项目的另三个参与者Nate Williams, Rod Grimes和Jordan K. Hubbard决定继续这项非常有意义的工作,他们采用由David Green man创造的名字FreeBSD作为系统的新名字,从此有了一种任何人都可以自由使用的Unix操作系统 ── FreeBSD。
  
  BSD Unix使用一个神话中的精灵形象作为其吉祥物,这个吉祥物标志被FreeBSD、NetBSD继续使用,但不同BSD系统的精灵略有不同,右图为FreeBSD的BSD精灵形象。当用户浏览Internet时,会在很多与FreeBSD相关的网站上看到这个可爱的精灵标志
  FreeBSD虽然可以自由获得,然而BSD与AT&T的法律纠纷仍然威胁着FreeBSD系统的合法性。就在FreeBSD得到相当多用户欢迎的时候,Unix系统实验室(此时已经卖给了Novell)与伯克利计算机系统研究小组的法律纷争有了结论。虽然最后不必进行赔偿,但是BSD Unix系统中必须去除原来来自AT& ;T的源码。伯克利计算机系统研究小组去除了这些不到10%源码,发布了4.4BSD Lite,其他基于BSD的U nix,包括FreeBSD在内,都被要求立即转换到4.4 BSD Lite上去。
  这对FreeBSD是一次相当严重的打击,虽然4.4 BSD Lite只删除了一小部分代码,但尤其对于英特尔80386平台,缺乏这些代码,系统就不能正常运转。FreeBSD小组必须解决两个任务,首先是将FreeBS D从原本的4.3BSD迁移到4.4BSD上,再将删除的源码完全重写。这些任务相当于将4.4BSD Lite重新移植到80386上,因此这花费了FreeBSD核心小组很大的精力。因此直到1995年1月他们才发布了FreeB SD 2.0,这次就是一个完全的4.4BSD Lite的系统了。但是在大约一年时间之内,FreeBSD不能在原有1.0基础上进行改进并推出新版本,而这个时期正是Internet进一步发展的阶段,FreeBSD错过了一个发展壮大的好时机。而其竞争对手,如Linux,则取得了巨大的成功。
  接下来,FreeBSD加快了开发节奏,2.1、2.2、3.0相继推出,这个系统在Internet上的应用也越来越多,尤其是对于要求高性能、高可靠性的网络服务器系统,FreeBSD提供了一个极具诱惑的选择。
  由于Unix商标属于X/Open组织,而FreeBSD只是一个自由操作系统,从法律角度上看FreeBS D不能被叫作Unix(不能使用Unix做商标)。但是基于Unix本身的历史,FreeBSD可以算最原汁原味的U nix,在有的方面,它更具传统特色──或者说BSD Unix的学院特色。当前,Unix商标其实是只具有象征性的含义,没有人介意到底那些系统是X/Open的成员,可以被称作Unix,那些不是。Unix已经成为一个广泛的概念,只要是按照Unix为模板进行开发,所有的应用程序在C源程序级与其他Unix相互兼容,也同样被所有使用者承认为 Unix系统。因此这里的Unix包括BSD和System V在内的各种系统,也包括像Linux这样的兼容系统。
  
? 当前FreeBSD的版本
  由于FreeBSD十分关心系统的性能和稳定性,同时FreeBSD的开发又非常活跃并十分开放。因此在系统开发中支持几个版本的FreeBSD系统并行发展,一些版本用于提供一个最具稳定性的操作系统,另一些版本逐渐融合进各种新特性,使FreeBSD不断发展。当前主要使用的FreeBSD有三个分支版本:
  FreeBSD2.2.x-stable:这个分支是当前Internet上大部分网络服务器上使用的FreeBSD版本,经过无数实践验证,具有高稳定性的特点。但是由于3.0版本已经正式发布,FreeBSD的开发者已经于1999年1月决定停止对这个版本的开发,这个FreeBSD的分支版本进入维护状态,将仅仅进行修补一些可能存在的系统漏洞等工作。因此除非是现存的FreeBSD系统,或者为了特殊目的要使用一些基于2.2.x开发的特殊软件,新安装的FreeBSD系统应该使用FreeBSD-3.x版本。这个系列中最后一个正式发布的光盘版本为F reeBSD 2.2.8-release。
  FreeBSD3.x-stable:这个版本的第一个正式版本3.0-release,它于199 8年10月正式发布,随后就成为了稳定版本。它与2.2相比增加了对很多新硬件的支持,并进一步提高了性能。对于安装新的FreeBSD系统来讲,应该选用这个版本。当前已经发布了FreeBSD 3.2-release。
  FreeBSD4.0-current:于1999年1月产生,同时FreeBSD 3.x-cur rent分支转变为FreeBSD 3.x-stable分支。当前还没有任何正式发布版本,需要通过Interne t获得源代码进行安装。
  可以看到,FreeBSD的版本使用current或stable后缀进行修饰,其中使用stable修饰的版本是一个稳定的版本,它不是FreeBSD的最新版本,主要关心系统的性能和使用的连续性,同一个stable分支中的下一个版本主要是修订系统问题,因此stable分支得到很多商业用户的欢迎。current表示这个版本是正在开发的版本,还不成熟,它更关心新特性,每种可能的特性都被开发者尝试加入进FreeBSD中,但并不保证以后的正式发布版本会支持所有的特性,一些特性会因为不成熟或对大部分用户无益,即使曾经加入也可能从正式版本中去除。通常Fr eeBSD的爱好者和开发者使用这个分支,或者一些需要某些FreeBSD的新特性的用户,就必须使用这个分支。
  FreeBSD选用current和stable来修饰FreeBSD不但是因为FreeBSD是一个不断发展、更新的系统,而且FreeBSD还是一个由Internet上的用户参与开发、使用Internet交流开发工作的系统。这与商业软件不同,商业软件的开发工作在公司内部,外界不能访问正在开发的版本,不能对要开发的软件发表意见和提出建议。而FreeBSD则相反,任何人只要通过Internet,都可以访问到FreeBSD的源码,并且Fr eeBSD开发者鼓励别人访问当前正在开发的源程序,鼓励提建议和进行自己的FreeBSD开发计划,如果这个计划的确不错,那么这个开发者就能被邀请进入FreeBSD开发组,他的计划就能被合并到正式的FreeBSD开发中去。但是,如果一个系统老是处于不断开发的过程,没有一个稳定的版本,显然得不利于希望将FreeBSD用在日常业务处理任务的普通用户。因此FreeBSD并存着两个同时发展的版本,stable版本为稳定版本,相当于商业软件中的对外发行的版本,current版本为正在开发的版本。当一个current版本已经足够稳定,这个版本就转变为stabl e版本,而FreeBSD开发组将转入下一个current版本的开发工作。
  除了current和stable之外,还有另外两个后缀用来修饰FreeBSD的二进制发行版本。一个是r elease,如FreeBSD 3.0-release,表示这是一个正式发行的FreeBSD版本,但这个版本可以处于current分支或stable分支。但如果一个FreeBSD的current分支发布了release版本,这将表示它离进入stable状态不远了,此后该版本实际上不会再作太大的改动,已经是一个完全可用、足够稳定的 FreeBSD版本了。另一个后缀是snapshot,如FreeBSD 4.0-snapshot,表示这是一个预览版本,用于FreeBSD爱好者提前查看current分支当前的开发状态,尝试新特性用的。FreeBSD的光盘发行版本常常使用这两个词进行修饰。
  因此对于FreeBSD用户,需要根据情况选择使用不同的版本。对于正式使用,应该选择stable版本,而对于进行学习、研究、开发FreeBSD,可以考虑使用current版本。
FreeBSD的功能特点
  FreeBSD的运行环境是使用英特尔x86系列处理器的个人计算机,当然在AMD和Cyrix等公司的兼容芯片上运行也毫无问题(FreeBSD也被移植到使用sparc和alpha芯片上的RISC工作站环境上,然而这些平台不是FreeBSD的主要运行平台,相应的移植版本也不太完善)。
  从FreeBSD的起源和发展过程可以看出,FreeBSD是一种自由Unix系统,它是由计算机科学家、软件工程师等志愿者通过Internet合作开发的,目的是为所有的使用者提供没有任何附加条件的自由Unix操作系统。初次接触自由软件的人,也许会怀疑软件的应用功能、性能等问题。但免费获得的方式和使用个人计算机硬件环境并不意味着FreeBSD系统仅仅是个人用户的玩具,事实上FreeBSD能够完成几乎所有其他Unix能完成的工作,应用范围十分广泛,并且性能非常优秀。在网络上使用FreeBSD用作网络服务器操作系统非常普遍,FreeBSD也是使个人计算机成为高性能Unix工作站的一条捷径。
  
?FreeBSD的特点和应用范围
  FreeBSD主要特点是它的高性能和高可靠性,除了BSD Unix本身已经是一个非常成熟的操作系统,F reeBSD开发小组也基于实际工作任务,花费了相当多的时间进行系统调试,以取得最大性能和最高可靠性。它的性能和可靠性并不逊于任何商用Unix系统,甚至更为优秀。
  --FreeBSD是真正的32位操作系统,不是任何16位操作系统的升级版本。它是十分成熟的BSD Un ix向英特尔386体系的处理器进行移植的结果,系统核心不包含任何16位代码,也不需要兼容任何16位软件,从而提高了系统稳定性。
  --FreeBSD具有可调整的动态优先级抢占式多任务能力。使多个应用程序能够十分平滑的共享系统资源,即使在高负载下仍然能在不同任务间平缓切换,而不会发生由于个别任务独占系统资源,其他任务因此而发生停顿、死锁现象,也决不会造成整个系统死锁。
  --FreeBSD是多用户操作系统,可以支持多个使用者同时使用FreeBSD系统,共享系统的磁盘、外设、处理器等系统资源。每个用户也可以同时启动多个任务,使得工作效率更高。
  --FreeBSD全面支持TCP/IP协议。FreeBSD能够十分方便的和其他支持TCP/IP的系统集成在一起,用作Internet/Intranet服务器,提供NFS,ftp,email,www,路由和防火墙能力。
  --其操作系统内部的存储器保护机制使每个应用程序和用户互不干扰。一旦一个任务崩溃,其他任务仍然照常运行。由于FreeBSD中不存在任何16位代码,这使得这一点能够真正实现,保证了系统的强壮性。
  --FreeBSD中使用另一个著名自由软件,XFree86,来提供工业标准的X窗口系统(X11R6),在X上可以运行多种图形界面软件提供方便用户使用的图形界面和应用软件。
  --它也支持在英特尔的386芯片上运行的其他Unix操作系统的二进制执行文件,包括SCO Unix,B SD/OS,NetBSD,Linux等。能够直接运行这些系统的二进制应用程序而不需重新编译,这极大的丰富了Fr eeBSD下的可使用的应用软件。
  --FreeBSD的Ports Collections包括了成千个立即可以使用的应用程序,使得安装应用程序十分简便。FreeBSD与其他多种Unix在源码级兼容,并且由于BSD在Unix和Internet发展中的巨大影响,大多数软件是在类似BSD的系统下开发的,因此FreeBSD是最容易移植的平台,在Internet上有很多的软件很容易移植到FreeBSD上。
  --高效的虚拟存储器管理结构,可以按照需要合理分配内存空间,只有在必要的时候,内存中的数据才被交换到交换设备上去。并且磁盘缓冲区不是单独划分出来的,而是和虚拟存储器结合为一体,使FreeBSD既能够高效的满足要求大量内存的应用程序,又能最大效率的利用内存来缓冲硬盘数据,提高读、写硬盘效率。
  --具有动态共享连接库的能力,使应用程序能够共享库函数(类似Windows下的DLL),充分利用内存和磁盘空间。
  --FreeBSD下包括了各种高级语言和各种开发工具,C, C++, Fortran, perl, T cl/Tk, cvs 等。这使得软件开发和移植非常方便。
  --FreeBSD提供系统的全部源代码,这样可以按需定制系统和进一步更改系统,提供了对应用环境的最大控制。另一方面这些源代码会经过世界范围内的程序员的检验和测试,避免系统中内嵌未知的恶意病毒代码。
  --提供了在线文档和手册等丰富的技术资料。
  FreeBSD的主要应用范围可以在网络服务器方面,但是FreeBSD的应用并不局限于此,具体怎样使用F reeBSD完全依赖于用户的目的,FreeBSD能够满足各种不同的需要。
  
?网络服务器
  Internet应用是FreeBSD使用最广的领域之一,因为Internet的前身,APPRNET的开发者,正是使用BSD Unix来实现的TCP/IP协议。因此FreeBSD具有最成熟、最稳定的TCP/IP实现,非常适合用作FTP服务器,WWW服务器,电子邮件服务器,域名服务器,USENET新闻服务器以及电子公告牌系统等网络服务器系统,此外,FreeBSD也能将廉价的个人计算机改变为软件路由器,防火墙设备。
  用做网络服务器最重要的要求是稳定性,因此一般要安装FreeBSD的stable分支。FreeBSD 2 .2.x-stable分支在实际使用中已经证明了它具备非凡的稳定性,在网络上关于操作系统崩溃的调查中,对Fre eBSD崩溃次数的报道却很少,因此被称为 ”Rock-stable performance” (坚如磬石)。考虑到大部分个人计算机硬件的稳定性比专用的Unix网络服务器硬件的稳定性要差,就可以看出FreeBSD操作系统的稳定性是如何优秀了。FreeBSD 3.x-stable分支继承了2.2.x-stable的优点,虽然还没有经过足够时间的考验,但也可推断其性能和稳定性相当优秀。
  
?个人工作站
  FreeBSD的另一个方面的应用是将FreeBSD作为个人工作站的操作系统。专业Unix工作站价格昂贵,但FreeBSD充分利用了个人计算机硬件价廉的优势,以自己具备的优秀性能,使个人拥有高性能的Unix工作站成为可能。个人工作站要求工作在图形环境下,这需要运行X服务器软件,FreeBSD下有免费的XFree86和另一些商业X服务器软件,此外还包括X Window操作环境,例如免费的KDE或商业操作环境CDE等。
  使用FreeBSD个人工作站时,除了性能要求之外,还必须有合适的应用软件进行支持。FreeBSD下可以运行大量的Unix程序,包括用于研究的各种软件包、软件开发所需的高级语言编译器、提供图形界面的Xwindow和 Xwindow下的各种应用等。这些软件通常是在不同的Unix下进行开发的,但由于不同的Unix均不同程度受到B SD的影响,FreeBSD都是这些软件可以移植的首选平台,而FreeBSD本身也提供了很好的机制用于简化软件的安装和配置。
  上面提到的软件通常是提供源程序的Unix软件,这些软件可以很容易移植到FreeBSD系统中。但绝大多数商业软件不提供源程序,仅仅提供在某些平台下运行的二进制文件。在不同Unix下运行的二进制程序,即使都是英特尔平台下的程序,但操作系统对执行程序的处理略有不同,造成了执行程序格式的差异。FreeBSD提供了支持其他在英特尔平台上运行的商业Unix执行程序能力,如BSD/OS、SCO Unix、SCO UnixWare、Solari s x86和Linux。通过支持这些Unix的执行代码,FreeBSD下的应用程序更为丰富。
  还可以将FreeBSD工作站代替昂贵的专用X终端,或者使用FreeBSD进行Unix下的软件开发等,将 FreeBSD系统用作不同的目的。
  
?使用FreeBSD的实例
  在熟悉了FreeBSD之后,就不会有人怀疑这个系统的性能了,因为这已经被Internet上无数使用Fr eeBSD作服务器的实例所证明过的。FreeBSD是Internet上非常流行的一种网络操作系统,应用实例很多。下面给出了一些著名的站点实例,当然FreeBSD的实际应用不只是这些例子中使用的范围。
  
?Yahoo
  作为Internet上具有传奇色彩的成功网站的典范,众人了解的Yahoo通常是它具备丰富的内容、年轻的亿万富翁传奇等内容。很少有人关心到底Yahoo是使用什么技术来构建他们的网站,也许很多人潜意识里认为它一定是由昂贵的专用服务器组成的,其实Yahoo是使用多台普通Pentium个人计算机来提供这么大的访问能力的,而在这些计算机上运行的就是FreeBSD系统。
  他写道: “……但不久就发现我们使用的操作系统在设计时都不具备处理大量 HTTP请求的能力。事实上,当时还没有任何商业系统可以解决我们所面临的扩展问题,这也是身处网络技术最前沿所必须面对的无奈现实。
  “…….我们又用过几种平台,包括 SGI IRIX,Linux 和 BSDI,但性能和稳定性都不能令人满意,我们只得继续寻找。随着 Yahoo 的日渐流行,平台的可扩展能力和稳定性是最关键的。那时我们 FreeB SD 还一无所知,但当读到有关介绍时,我决定试它一试。
  “……几天之后我将一台FreeBSD系统加入我们的Web服务器集群中去,结果它的性能明显优于其它机器,而且运行更稳定。试验时间持续了几个星期,我们对FreeBSD很满意。这主要应归功于FreeBSD的稳定性、运行性能和允许访问源代码的特点,它还具备诱人的价格优势。从此,我们的产品和开发环境就几乎离不开它了。”
  
  
?关于网络服务器操作系统的调查
  前面提到的例子,只是FreeBSD应用实例的几个,事实上在国外使用免费操作系统用做网络服务器非常普遍和流行。虽然由于它属于非商业产品,媒体一般不太关心它,但在Internet服务器领域中,它的重要性是无可否认的。为了了解Internet中的服务器到底都运行了那些系统,就需要对整个Internet进行调查。
  显然有很多种不同的调查方式,例如使用抽样调查,或者发放调查表格等等,然而这些方法都有其局限性。而Int ernet Operating System Counter (ios++)是一次比较特别的调查,它的基本思路是对互联网上所有服务器使用的操作系统进行识别并统计结果。iso++使用一个程序自动收集互联网上的计算机地址,查询计算机并判断其使用的操作系统,虽然无法保证iso++能识别所有种类的操作系统,但毫无疑问它能识别绝大多数流行的操作系统。
  遗憾的是,这次调查并没有彻底完成,但这是由于人为而非技术的原因而不得不停止的。由于这个系统会扫描网络中的所有主机,因此其行为类似于黑客程序的做法。在它对意大利的计算机进行网络查询时被一家以色列网络安全公司怀疑为黑客入侵。然而即使如此,这次调查也运行了大约10天,扫描了上百万台服务器,其结果也能真实反应网络操作系统的真实面貌。
对Internet上的Web服务器使用的操作系统的调查
调查日期: 从1998年9月9日到9月19日
排名操作系统主机数量占识别出的主机比率
1. Linux17162326.3%
2. Windows 95/98/NT15268223.4%
3. BSD Family14760222.6%
4. Solaris/SunOS9423014.4%
5. IRIX293844.5%
6. Mac/Apple137362.1%
7. AIX108651.7%
8. HP/UX102371.6%
9. Reliant Unix/Sinix39710.6%
10. Digital Unix37750.6%
11. SCO Unix25070.4%
12. Novell Netware22850.4%
总数 64289998.6%
 
  上表是其对Internet上Web服务器的调查结果,可以看出,以FreeBSD为主的BSD家族的操作系统(还包括BSD/OS、NetBSD和OpenBSD,但这些系统的使用者要少于FreeBSD的使用者),在网络服务器中占据第三名的位置,而其百分比与前两名不相上下。如果要考虑到相应Web服务器的重要性,使用FreeBSD等Unix系统的Web服务器,无论从其服务的重要性还是提供网络数据的流量来讲,都是使用Windows操作系统的服务器无法相比的。
其他相关系统和组织
  自由使用和免费是FreeBSD的特征,在英文里都可以使用 “free” 来表示。这表示使用者不仅仅可以免费使用这个系统,还可以对软件进行适合自己需要的改动,并能够影响这个软件的发展等等,这正是free这个词更深一层的含义。
  支持自由软件的人通常认为,每个计算机的使用者都有自己特定的需要,不可能有一个包罗万象、适合所有需求的软件系统。因此软件开发者和系统管理员希望了解软件内部的情况,以便可以对软件进行定制和扩展。而商业软件只提供软件的二进制代码,将软件内部的操作完全封闭起来,使用者就丧失了对软件的主动权。另外,任何软件产品都存在各种BUG,商业软件的使用者在遇到软件产品的这些问题时,就只能被动的等待厂商的补丁程序,整个软件系统不得不停顿或冒一定的风险继续使用。第三,计算机的使用者并不会完全信赖商业软件,某些软件厂商会故意在软件中加入恶意代码,或加入某种未公开的后门,对使用者造成危害。即使这些软件中的后门或恶意代码是打着防止盗版、提供更方便的功能等旗号加入的,但也可能被偶然触发,危害使用者的利益。而在提供软件源代码的软件中,就不会存在这种恶意的行为。
  这些问题对于一个普通用户或者不重要,但对于一个较大的系统或要求较高安全性的系统中,就能表现出重要性了。支持自由软件的人认为,如果一个软件提供了源代码,那么使用者就能根据情况自己修改或请他人修改软件,从而适合自己的最终需要,并修正系统中因为有意或无意导致存在的问题。当前,开放源代码已经得到越来越多的计算机使用者和厂商的认可,他们组成了开放源代码组织(Open Source),来进一步推动这个思想。
  另一方面,由于某些种类的商业软件中不存在竞争,垄断的结果就造成软件的价格昂贵,使得这些软件不是任何有需要的人都能够用得起的。而软件最大的价值是被人使用,因此有很多人认为软件开发者要允许别人使用他的软件,应该从软件服务中获得收益,而不是从软件本身中谋取暴利。他们认为计算机应该属于大众,而不应该由某些公司垄断。因此这些崇尚自由软件的人员就想为所有用户开发一整套系统,使用户在现有商业软件之外还可以进行选择,而不至于必须为商业软件支付额外的费用。这些人包括FreeBSD的开发人员、Linux的开发人员、GNU计划的开发人员以及其他众多的自由软件开发者,他们开发的软件构成了计算机领域内多姿多彩的一面,使得即使不使用任何商业软件,使用者也同样能够在计算机上以更好的性能完成所有的工作。
?GNU';s Not Unix
GNU不是Unix,采用这种递归方式定义的GNU计划是由Richard Stallman提出的,他建立自由软件基金会(FSF)并提出GNU计划的目的是开发一个完全自由的,与Unix类似但功能更强大的操作系统,以便为所有的计算机使用者提供一个功能齐全,性能良好的基本系统。GNU HURD为GNU操作系统的内核,但是当前还没有正式发布,仍处于测试阶段。很多人使用Linux内核和GNU的应用软件组成了GNU/Linux系统。右图为GNU的标志。
  FSF开发了大量的自由软件来达到这个目的,这些软件与Unix上原有的软件功能相同,但由于GNU开发软件的时候硬件的处理能力更强了,因此GNU软件充分利用计算机的硬件能力,比Unix中的同样的软件功能更强,因此非常流行。这些软件在GNU通用公共许可的保护下允许任何人免费使用和传播(但必须同时提供源程序),因此被大量的用在其他的Unix中,FreeBSD上也提供了很多GNU软件。
  Stallman创造了一个词copyleft,由于通常意义上的版权copyright是用来限制别人在没有许可的条件下不能使用和传播软件,而copyleft则鼓励任何人可以使用和传播软件。copyleft限制妨碍使用和传播GNU软件的行为,例如不提供GNU软件的源代码。然而copyleft与copyright并不冲突,因为 copyleft是针对软件的传播者而非针对最终使用者的。GNU软件必须使用copyleft保护,限制将GNU软件本身用于牟利目的,而其他软件仍然可以使用copyright保护版权不被侵犯。Stallman进一步使用GNU 通用公共许可来详细阐述copyleft的观念,要求传播GNU软件必须同时传播其源代码。由于GNU通用公共许可十分流行,因此很多非自由软件基金会的自由软件也使用GNU通用公共许可来保护自己软件,不被商业公司用于获利。
  GNU软件许可相当宽松,有很多公司利用GNU软件进行商业活动,但只要同时提供了GNU软件的源代码,就没有违反GNU软件许可。
  FreeBSD本身是在BSD许可的保护下,BSD许可权与GNU通用公共许可略有不同,一些方面的限制甚至更为宽松。GNU通用公共许可要求传播(包括销售)任何符合GNU软件应该包括源代码,反对利用保守GNU软件的源代码的方式牟利,而BSD许可则允许以二进制形式发布软件,对于某些不打算公开源代码的商业运用并没有进行限制。
?GNU/Linux
  FreeBSD并不是唯一的免费 “Unix” 操作系统,也不是最流行的Unix系统,这个荣誉属于Lin ux。这主要由于Linux出现得早两年,那时BSD的源代码还受AT&T许可权的限制,不能自由获得,而I ntel的32位处理器386的普及已经使Internet上诸多Unix爱好者对PC平台上的免费Unix系统提出了需求,Linux应时而生。近来在Netscape等商业公司的倡导下,Linux得到众多商业公司的支持,无形中成为了反Microsfot联盟的一杆旗帜,声势更为浩大。
  Linux是由芬兰人Linus Torvalds编写的Unix兼容系统。由Linus Torvalds 负责核心开发和维护,其他组织和商业公司负责将Linux的核心和应用程序组织在一起发布,由于大部分程序为GNU软件,因此更严格的说Linux应该被称为GNU/Linux。当前流行的Linux版本有slackware 3.6 ,Debian 2.0,RedHat 5.1等。
  Linux和FreeBSD同为英特尔平台上的Unix操作系统,因此有很多相似之处。几乎所有的自由软件都同时支持Linux和FreeBSD,因此在应用方面他们也很相似。但Linux和FreeBSD也有相当大的不同之处,可以说各具特色。
  从历史渊源上讲,FreeBSD继承了BSD Unix的代码,因此代码相当成熟和稳定。而Linux是一个全新的系统,是遵循POSIX规范开发的一个独立操作系统,但又提供了与BSD Unix或Unix System V的兼容性。因此Linux完全没有受到1992年的AT&T诉讼的影响,结果成为了最流行的自由操作系统。虽然今天那次法律纠纷已经解决,4.4BSD Lite的代码可以自由获得,但FreeBSD的使用者仍要少于Lin ux的使用者,FreeBSD的使用者多数为网络和计算机专业人士,普及程度较低。
  出于这个历史渊源的原因,FreeBSD是一个完整的系统,从系统核心到系统提供的程序均来自BSD Uni x,部分GNU软件是用于代替BSD Unix中的一些老版本软件。而Linux仅仅只是一个操作系统的内核,其应用程序大部分为GNU软件,然后由不同的组织或个人将这些GNU软件与Linux内核整合在一起的。因此就存在多个不同的Linux版本,而且不同的Linux版本使用不同的组合方式,因此各种Linux版本之间有很大的差异,并且可以预计这些版本会随着发展进一步增大彼此的差异。而FreeBSD的版本比较整齐清晰,只有一个FreeBSD版本。
  通常FreeBSD更关心稳定性,而Linux具备的各种新特性更多。由于Linux得到了更多的商业公司支持,因而Linux下的商业软件也更多。但是这些商业软件均可以通过FreeBSD对Linux执行文件的支持,也能够运行在FreeBSD上。这个不同主要是由于Linux和FreeBSD的开发过程的差异造成。
  虽然FreeBSD和Linux的开发过程都是非常开放的方式,每个开发者独立进行自己的工作,通过Inte rnet来互相交流。任何对系统开发有兴趣的人都能贡献新的想法,并组建一个开发队伍或加入现有开发队伍将自己的想法实现。但是FreeBSD与Linux开发方式的不同是,FreeBSD有一个开发者组成的核心小组(FreeBSD core team)对整个FreeBSD负责。任何人都可以利用FreeBSD提出自己的开发计划,但只有Free BSD核心小组认为这个计划对整个FreeBSD发展有益,这个计划才能列入FreeBSD计划本身。所有的Free BSD开发者共享同一个源代码树,使用并发版本维护工具CVS进行维护。有了FreeBSD核心小组从整体上规划Fr eeBSD,并邀请其他开发者加入核心小组,因此FreeBSD显的更简洁和干净,版本发展也比较稳定。而Linux 仅由Linus对内核进行维护,任何人都可以组织自己的计划,贡献自己的代码,没有一个统一的源代码树,只是在最后由 Linus进行整合和发布正式内核。由于没有严格的控制,并且Linux的开发者很多,因此Linux中虽然有更多的新特性,却显得略为杂乱,并且有些新特性的代码没有经过时间验证,可能存在有问题。
  一个新功能没有进入FreeBSD正式版本的原因很多,有的是由于这个功能不够成熟,有的是由于核心小组认为这个特性意义不大,还有的是因为正式内核已经有类似功能,或者由于专利或版权问题(例如,该软件的作者不打算让该软件成为自由软件),使得十分成熟的功能也不能被列入正式发行的版本。
  由于Linux和FreeBSD互为竞争对手,在Internet上关于Linux和FreeBSD的争论很多,然而这种争论一般不会得到什么明显的结果。事实上他们都能完成各种应用需求,但各有自己的侧重点,至于那种系统最适合自己,需要根据具体情况而定,使用者的个人喜好也是影响选择的一个重要因素。一般FreeBSD的使用者也曾经(或同时)是Linux的使用者,然而有Linux的使用经验对学习和使用FreeBSD也有不少帮助。只有竞争才能促进发展,Linux和FreeBSD不但是竞争的关系,也是相互学习的关系,只有如此各自才能不断发展。
  在作者个人的使用经验中,FreeBSD仅有过一次崩溃,并且这种崩溃不是随机出现的,其原因是使用了所有优化选项来编译内核,编译器某项优化造成了内核的BUG,结果就在执行某项操作时就被触发。在降低了优化级别之后,问题就消失了。因此这个问题应归结为编译器的问题而非内核的问题。在Linux中,问题更为严重一些,过于求新求功能的多样性,使得系统崩溃更频繁,并且很多系统崩溃无法找到原因。
  注意:系统崩溃和系统死锁不同,一些情况下一些应用软件死锁会造成键盘或显示没有响应,然而仍然可以通过网络或其他终端设备登录进系统杀死死锁进程。例如在FreeBSD下执行Linux的X Server时,进行切换虚拟控制台的操作就会导致键盘死锁。
  当前Linux的一个发展热点是各个商业公司的参与,这的确丰富了Linux下的软件。然而另一方面,商业公司也试图把专有设计引入Linux,将原有开放的环境变为商品化的环境,以便从中牟利。当前不同版本的Linux之间的差异已经相当大了,很多人已经意识到了Linux面临的分裂危险,可以想象以后某个版本的Linux会与其他版本存在兼容性问题。而FreeBSD有统一的源代码树,不存在分裂的问题。
?其他BSD系统
  商业版本的BSD/OS也是一个非常优秀的操作系统,它是由原BSD Unix的部分开发人员组成的BSDI 公司的产品。由于存在商业支持,因此在某些方面具备免费的FreeBSD不具备的优势。例如某些硬件厂家不愿意公开自己的硬件资料(或者是有条件的公开),因而使得FreeBSD无法支持他们的硬件,而他们可以为BSDI提供资料以供开发驱动程序。一些不能理解自由软件、要使用FreeBSD不支持但BSDI支持的硬件,或对服务和技术支持提出较高要求的使用者,可以选择使用BSDI。
  NetBSD和OpenBSD也是基于4.4BSD的自由Unix操作系统,可以算是FreeBSD的兄弟。甚至在最初,NetBSD和FreeBSD的大部分开发者都完全相同,同样的开发者同时为两个系统进行开发。而开发者和使用者都是将这两个系统作为BSD Unix在不同硬件平台的实现来看待的,FreeBSD用于Intel平台,而 NetBSD用于多硬件平台,主要用于RISC工作站硬件。随着两个系统的不断发展,两者逐渐相分离,而OpenBS D是从NetBSD分出的一个分支。但FreeBSD是为个人计算机平台设计的,后来才尝试移植到其他平台上(已经有 Alpha和Sparc芯片下的FreeBSD系统,但还不十分成熟),因此更适合个人计算机用户,而NetBSD和 OpenBSD一开始就设计为能够运行在多系统平台上,包括各种RISC工作站,因而NetBSD和OpenBSD的使用范围就更窄一些。
  以上这些BSD Unix系统的使用数量要少于FreeBSD系统。FreeBSD由于专注于Intel平台,支持Intel平台上的硬件种类最多,并对易用性作了很大改善,因而使用范围更广泛,是最常见的BSD Unix系统。但是由于这些系统同属BSD来源,在开发过程中常常相互交流,因此使用方法和管理基本相同。在FreeBSD、N etBSD、OpenBSD之间进行选择的决定性因素常常是安装BSD系统的硬件平台。
文章评论

共有 0 条评论