"Linux"这个名字我想大家现在都不会陌生了,这一年多来随着国内各种媒体的争相的宣传与报导,Linux已经成为了一个热门的话题。 我想就这几个方面谈谈Linux:Linux的历史和发展历程、设计宗旨和方法、主要特点、构成、Linux上的常用软件、Linux的应用,最后是Linux的发展趋势。
我们今天的第一件事情或许是要了解Linux这个单词的读法。我们很多人对Linux的读音都不尽相同,大致有这么几种: “来那克斯”与“林你克斯”“里扭克斯“等,这几种发音我们大家可能都听过。不仅仅是在我们大家之间,在世界范围内人们对Linux的读音差别也是很大。由于是这样的原因Linus本人自己录了一段他对Linux的发音放到互联网上,让大家下载。这段录音的内容是这样的: "Hello,this is Linus Torvalds and I pronounce Linux as Linux"。他念的读音是['li:nэks], 所以我们认为还是应当以Linus Torvalds本人的发音为准。
那么什么是Linux呢?
Linux有两种不同的含义。从严格的技术定义讲,Linux指的是开放源代码的Unix类操作系统的内核。然而,目前大多数人用它来表示以Linux内核为基础的整个操作系统。从这种意义讲,Linux指的是开放源代码的,包含内核、系统工具、完整的开发环境和应用的Unix类操作系统。
它是一个支持多用户, 多进程,实时性好的功能强大而稳定的操作系统。它可以运行在x86 PC,Sun Sparc,Digital Alpha,680x0,PowerPC, MIPS等平台上,可以说Linux是目前运行硬件平台最多的操作系统.,但是它主要还是面向Intel PC硬件平台。 所以也可以这样的说:Linux是Unix在Pc机上的完整实现。
Linux的历史 Linux的又是怎样发展起来的呢? 最早期的Linux是Linus Torvalds于1991年开始着手进行开发的,当时他是芬兰赫尔辛基大学计算机系的学生,23岁。最初,他是在Minix环境下用汇编语言写了一个在80386保护模式下处理多任务切换的程序,后来从Minix(Andy Tanenbaum教授所写的很小的Unix操作系统,主要用于操作系统教学)得到灵感,进一步产生了一个想法----写一个比Minix更好的Minix,于是开始写了一些硬件的设备驱动程序,一个小的文件系统,......, 这样几个月后0.0.1版本的Linux就出来了,其实Linus开始想把这个系统命名为"freax",只是他把所有的源代码放到了芬兰最大的ftp站点中的Linux(它的意思就是Linus 的Minix)目录下,后来Linux这个名字就被大家接受并保留下来了。我们知道软件要到理论上已经完备或者基本上没有毛病的时候才能给予1.0版本,可见这个时候推出的0.01版是相当简陋的了。它只具有操作系统内核的勉强的雏形,甚至不能运行,你必须在有Minix的机器上编译以后才能用。所以这个版本从来没有正式宣布发布过。这时候Linus已经完全着迷于这个系统的开发上了,他决定完全抛开Minix。于是在1991年10月5号他象世界公布了Linux 0.0.2版本,并在comp.os.minix新闻讨论组里发布消息Linux 0.0.2。在这个版本中已经可以运行不少的程序了。其中包括bash(the GNU Bourne Again Shell----一种用户与操作系统内核通讯的软件)和gcc(GNU C 编译器)和GNU-make,sed,compress。 从0.02版以后,越来越多的人参与到该系统的开发工作,所以Linux的发展越来越快,这样只过了一年多,到1994年Linux1.0就问世了。而Linus Toralds在今年的Linuxworld专业会议上宣布到今年年中Linux可以升级到2.4.x版本,我们知道Linux是通过互联网发展的现在真是日新月异,基本上每几个月就有一个新的版本,尤其是第三位数变化实在太快所以很难定位现在的版本。 我们刚才看到2.4.x,它这个是什么意思呢? Linux的版本号要比其他的软件复杂一些,它分为两类:内核(kernel)版本与发行(distribution)。目前最新的内核版本号大约是2.2.x:发行版本最常Slackware3.5RedHat6.0,Turbolinux4.0等:实际上,我们看到市场上销售的发行版本就是Linux的一个大软件包,相当与内核版本,发行版本号随发行者的不同而不同,与系统内核的版本号是相对独立的。例如Slackware3.5,RedHat6.5,Debian1.3等。 我们主要讲讲Linux的内核版本 Linux从1.0版本后就具有两种不同的版本号,叫做版本树。 一个版本树是由一个是实验版本,一个是产品版本。 每一个版本是由三位数字组成的,第二位数字说明版本类型。如果第二位是偶数,则说明这种版本是产品化版本,如果是奇数,则是实验版本,比如说版本1.2.0是产品化的版本,而1.3.0则是实验版本。这两种版本是有关联的,是一前一后完成的。每一个版本树开始时间都是相同的,然后呢,这两个版本不断的扩充增长,稳定代码会添加到产品化版本中,而测试阶段的代码则添加到实验版本中。当linus确定实验版本具有足够的新功能并且性能稳定的时候,他就称为代码冻结(code freeze)。这时候稳定的实验版本成为新的x.y.0,开发又按新的版本进行。 比如说:1.0.0和1.1.0是相同的,1.0.1是对1.0版代码的第一次错误修复,而1.1.1是往1.1版中第一次添加新功能。最后到1.0.9中的错误在1.0中得到修复,1.1.9最终为1.1。最后随着新功能的不断增加到达足够有足够的新功能时,代码冻结,版本一同升级为 1.2.0和1.3.0,然后继续1.2.0修复错误,1.3.0添加功能。 我们可以看到Linux的发展历程要比其他的操作系统短暂的多,它的原因是多方面的,但谈到Linux的发展历程我们不得不先来谈一下自由软件基金会和它的GNU计划。 我们知道当前流行的软件按其提供方式可以大致划分为三种模式:商业软件、共享软件、自由软件。 商业软件是由开发者出售拷贝并提供技术服务,用户只有使用权,但不能进行非授权的拷贝、扩散、修改或添加新功能; 共享软件则是开发者提供软件试用程序拷贝,用户在使用一段时间后,必须向开发者交纳使用费用,开发者则提供相应的升级和技术服务; 自由软件则是由开发者提供软件全部的源代码,任何用户都有权使用、拷贝、扩散、修改该软件。同时用户也有义务将自己修改过的程序源代码公开。 其实在计算机工业发展的初期,是没有这三种模式的,当时软件只是硬件的附属品。公司只卖硬件,随系统赠送软件。在这一时期,软件的设计思想,新的算法和软件的源代码在专家和公司技术人员之间自由交流,促进了软件的迅速发展。但是,公司很快认识到软件的价值,对软件实施了版权控制,并限制源代码的发布。许多原本属于公众创造的知识财富现在成为公司的私有财产。软件的开发方式也发生了变化,变成以公司为主体的封闭的开发模式。Unix就是这样的例子。 虽然AT&T开创了Unix的历史,但是Unix的发展与完善却与许多大学的专家、技术人员的努力分不开。事实上,Unix是在协作基础上开发的。当AT&T在70年代末期对Unix的使用和发布强制实施版权控制后,使早期对Unix发展做出贡献的人们感到失望。 Richard Stallman,与BillGates曾经同是哈佛大学的学生,他就这个时候就在软件开发团体中发起支持开发自由软件的运动。自1984年起,麻省理工学院(MIT)开始支持他,这就导致了自由软件基金会(Free Software Foundation,FSF)的建立。 在同年Richard Stallman组织开发了一个完全基于自由软件的软件体系计划――GNU(GNU's Not Unix)计划,这个计划的目的就是要开发一个完全自由的,与Unix类似的但功能更强大的操作系统,以便为所有的计算机使用者提供一个功能齐全性能良好的基本系统。GNU的名称很有意思,它采用了一个无限递归的法则来命名的,它的全称是“GNU's Not Unix”,意思是说GNU不是Unix。取它的每个单词的首写字母就组成了“GNU”。 当开始实施GNU项目时,当时没有多少高质量的自由软件可供项目使用。所以,为GNU项目做出贡献的人们(Member of FSF)先从系统的应用软件和工具入手,开发了大量的自由软件。但是对核心GNU HURD的开发速度却很迟缓,直到现在还没有正式发布,仍处于测试阶段。 Richard Stallman针对这个GNU计划还组织拟订了一份通用公共许可证书GPL(General Public License),用它来规范这些“自由软件”的发行、复制和修改等一系列行为。GPL许可证可能大家也听说过,但是也有不少人对他还不是很清楚或者还有误解。很多人认为GPL许可证下的软件是公共领域的软件,没有任何的版权,属于公众的。其实GPL是有版权的,它的版权属于开发者,并且受到标准国际版权法的保护。GPL条款的目的是保证软件自由地发行和修改。禁止在发行和使用上进行交易获利,并且不允许任何人限制其他人在发布和修改方面的权利。但是GPL条款让许多人迷惑的地方是它允许团体或个人从买卖GPL版权的软件中获利,换句话说,就是允许他们在发行时收取一定的费用,甚至赢利。 这乍起来一看好象自相矛盾,为什么允许卖软件赢利而另一方面允许任何人自由免费的获取呢?其实这不难理解。免费并不意味着它不花钱。尽管通常情况下是这样的。代码的获得是免费的,我们可以想一下,如果某个公司准备把大量的免费软件装到CD-Rom上发行,那这个公司肯定要收取一定的费用来支付生产和发行CD-Rom的成本。如果这个公司从中获利,这也是GPL条款所允许的。允许公司发行和销售免费软件是一件相当好的事情,我们可以想一下,并非所有的人都能够有机会通过Internet来免费获取GPL软件,GPL条款允许公司或团体销售GPL软件从而扩大了这些软件的发行范围,极大的拓展了这些软件的全球用户基础。自由软件基金会的GNU计划为后来的Linux操作系统迅速发展奠定了坚实的基础。 在1994年,Linus发布Linux的第一个“产品”版Linux1.0的时候,它是按照完全自由发布的版权进行发布的。这种版权它要求所有的源代码都必须公开,而且任何人均不得从Linux交易中获利。这种纯粹的自由软件的方式对于Linux的发布和发展实际上是一种阻碍,因为它限制了Linux以磁盘或CD-Rom等媒体的形式进行发布的可能,同时也限制了一些商业公司参与Linux的进一步开发并提供技术支持的良好愿望。于是半年以后,Linus决定把Linux转向GPL版权。这一步对Linux发展十分重要。它赢得了许多专业人员的支持,这些人将GNU项目的许多成果移植到Linux系统上来。包括很多系统工具包,程序开发环境,应用程序等等,甚至标准文件工具(如ls,mv,cp和rm等)都是GNU实用工具包的一部分。所以我们一开始说什么是Linux的时候有一种比较科学的说法是Linux只是一个操作系统的内核,其实也是这样的,Linux本身只有一些磁盘访问代码和很少的几个软件。它从GNU中得到了许多的益处。 另外转向GPL以后,很多技术力量雄厚又善于市场运作的商业软件公司加入了这场自由软件运动。他们把内核、原代码及相关 的应用程序组织在一起发行, 于是, 同是Linux, 有不同的发行者(distributor)版 本, 比较著名的发行者及相应的版本,其中有: Linux的发行版本:(十几种) 1.OpenLinux(Caldera): 发布商:Caldera公司 简介:Caldera公司的Openlinux包括一些实用工具、图形界面、 安装指南、第3方的应用程序等。OpenLinux是各公 司优化其现存系统、保护培训投资的理想选择。 网址:http://www.caldera.com/ 2.Red Hat Linux(Red Hat): 发布商:Redhat software 简介:易于安装,提供一个稳定的包系统RPM,这样就可以用 一个简单的命令来安装、升级、移去软件的整个包。 每个版本都经过了完整的测试,同时支持Intel,Alpha 和Sparc平台。这也是Redhat公司最引以为自豪的地方。 Redhat在国外使用的最多。 网址:http://www.redhat.com/ 3.S.u.S.E Linux: 发布商:S.u.S.E Linux 简介:格外注重细节,优质的软件包控制,出色的支持人员; 共有5张光盘,其中包括Linux操作系统和超过800个, 预设软件包以及400页的参考手册。其中的YaST实用 工具允许用户自己安装、设置、和进一步地配置系统。 S.u.S.E支持X Servers的高端图形卡。 网址:http://www.suse.com/ 4.Slackware(Walnut Creek Software): 发布商:Walnut Creek 简介:Slackware Linux支持大多数Intel PC.它支持对称多处 理(最多可达16个处理器)、PCI,并为486、Pentium 和Pentium Pro进行了特别的编码优化。极适合于Internet 服务器和路由器; 同时是自学的好工具; 网址:http://www.cdrom.com/ 5.Debian GNU/Linux: 发布商:Debian 简介:Debian公司的GNU/Linux是基于操作系统的Linux的 自由发布。它由一群自愿者进行维护和升级。它的先进 的管理工具包使得安装和维护都异常的简单。发布前全 面的测试保证了系统的高度可靠性。可以小块的形式下 载;它的功能,多样化和普及方面可以与Redhat相比在 懂技术的人中很受欢迎,但是不熟练的用户会有点麻烦, 因为它在安装配置方面比较复杂一些。 网址:http://www.debian.org。/ 6.Linux Mandrake: (i.e. 曼德拉草帽) 发布商:Mandrake 简介:Linux Mandrake是一个高质量的商业版本。它是在早期 的 Redhat版本中建造起来的,它的开放性和可扩展性没有 Redhat发行版高,但是它却带有一些商业软件。 7.TurboLinux: 发布商:Pacific Hitech 简介:TurboLinux包括一系列的应用程序,一个GUI(Xfree86 3.3) 的桌面,文档和技术支持 8.LinuxPPC: 发布商:PowerPC Linux Project 简介:它是Linux的PowerPC版发布。 9.MkLinux: 发布商:Apple Computer/The Open Group Research Group 简介:Power Macintosh 平台的Linux发布。 10.Linux Ware: 发布商:Trans-Ameritech 11.LinuxPro: 发布商:WorkGroup Solutions 12.Stampede Linux: 发布商:Stampede 当然最近还有我们国内的几个发行版:Xteam Linux、Bluepoint Linux 红旗Linux、Cosix Linux 等等。 还有很多著名的商业软件开发公司比如Oracle、Informix、Sun他们也着手开发了基于Linux的商业软件。 后来,Linus本人也认为:“使Linux成为GPL的一员是我一生中所做过的最漂亮的一件事”。 Linux的设计宗旨和方法 Linux是一个很独特的操作系统,我们现在看看它的开发模式和设计的宗旨。 我们知道在商业性软件的开发中,整个系统的设计是按照一系列的步骤进行的,(质量管理、源程序的修改控制、程序说明、错误问题报告和纠正等等)开发人员不能随意增加新功能或改变代码的关键部分,而且每个开发人员只负责系统程序的其中一部分或几部分的工作。只有负责某一部分程序的这个人才可以取出该部分的源程序进行修改。 而Linux系统的开发则完全不同。根本没有类似的有组织的开发东西,它基本上可以说是一群遍布于全世界的Internet上的自愿人员开发出来的操作系统。我们每一个人都有机会帮助Linux的开发、测试、移植新软件。我们也可以去开发核心。当然如果你想把你的程序加入到Linux的正式核心代码中呢,你得把代码寄给Linus Toralds。让他测试。Linus在92年,他的主要工作就已经转变为协调核心代码。 Linux的整个系统的设计是开放式和功能式的,一般每过几个月就会发布一个核心程序的新版本。只要系统没有什么严重的或显而易见的问题,它就会认为是稳定的,于是就可以发行。这里面没有严格的质量管理和控制。说到这里我们应该认识一下Linux开发的宗旨,那就是不是发布一个完美的程序,更重要的是让用户尽早地使用和测试一个程序。也就是它把发展在了稳定之上,当然不是说它只顾发展。我们不要认为Linux是不稳定的,Linux 采用了这种开发模式激发了世界各地的软件开发人员的积极性和创造热情。大量软件开发人员投入到自由软件的开发中。软件开发人员的集体智慧得到充分发挥,大大减少了不必要的重复劳动,很多人在为Linux做测试,这样使Linux的脆弱点能够及时发现和克服。任何一家公司都不可能投入如此强大的人力去开发和检验商品化软件。这种开发模式使Linux具有强大的生命力。 Linus率领的分布在世界各地的Linux内核开发队伍仍然在高速向前推进。事实上,Unix开始发展时,就采用了这种开发模式。它的安全漏洞比其它操作系统解决得更彻底。 Linux的主要特点 作为一个操作系统,Linux几乎满足当今Unix操作系统的所有要求,因此,它具有Unix操作系统的基本特征。 1.符合POSIX 1003.1标准 POSIX 1003.1标准定义了一个最小的Unix操作系统接口,任何操作系统只有符合这一标准,才有可能运行Unix程序。Unix具有丰富的应用程序,当今绝大多数操作系统都把满足POSIX 1003.1标准作为实现目标,Linux也不例外,它完全支持POSIX 1003.1标准。 2.支持多用户访问和多任务编程 Linux是一个多用户操作系统,它允许多个用户同时访问系统而不会造成用户之间的相互干扰。另外,Linux还支持真正的多用户编程,一个用户可以创建多个进程,并使各个进程协同工作来完成用户的需求。 3.采用页式存储管理 页式存储管理使Linux能更有效地利用物理存储空间,页面的换入换出为用户提供了更大的存储空间。 4.支持动态链接 用户程序的执行往往离不开标准库的支持,一般的系统往往采用静态链接方式,即在装配阶段就已将用户程序和标准库链接好,这样,当多个进程运行时,可能会出现库代码在内存中有多个副本而浪费存储空间的情况。Linux 支持动态链接方式,当运行时才进行库链接,如果所需要的库已被其它进程装入内存,则不必再装入,否则才从硬盘中将库调入。这样能保证内存中的库程序代码是唯一的。 5.支持多种文件系统 Linux能支持多种文件系统。目前支持的文件系统有:EXT2、EXT、XIAFS、ISOFS、HPFS、MSDOS、UMSDOS、PROC、NFS、SYSV、MINIX、SMB、UFS、NCP、VFAT、AFFS。Linux最常用的文件系统是EXT2,它的文件名长度可达255字符,并且还有许多特有的功能,使它比常规的Unix文件系统更加安全。 6.支持TCP/IP、SLIP和PPP 在Linux中,用户可以使用所有的网络服务,如网络文件系统、远程登录等。SLIP和PPP能支持串行线上的TCP/IP协议的使用,这意味着用户可用一个高速Modem通过电话线连入Internet网中。 除了上述基本特征外, Linux还具有其独有的特色: 支持硬盘的动态Cache 这一功能与MS-DOS中的Smartdrive相似。所不同的是,Linux能动态调整所用的Cache存储器的大小,以适合当前存储器的使用情况,当某一时刻没有更多的存储空间可用时,Cache将被减少,以增加空闲的存储空间,一旦存储空间不再紧张,Cache的大小又将增加。 支持不同格式的可执行文件 Linux具有多种模拟器,这使它能运行不同格式的目标文件。其中,DOS(DOSEMU)和MS-Windows(WINE),iBCS2模拟器能运行SCO Unix的目标程序。(iBCS2模拟器不是Linux标准核心的一部分,但可从ftp.informatik.hu berlin.de:/pub/os/linux下载) Linux的结构 Linux的主要构成 : Linux主要由存储管理、进程管理、文件系统、进程间通信等几部分组成,在许多算法及实现策略上,Linux借鉴了Unix的成功经验,但也不乏自己的特色。 1.存储管理 : Linux采用页式存储管理机制,每个页面的大小随处理机芯片而异。例如,Intel 386处理机页面大小可为4KB和2MB两种,而Alpha处理机页面大小可为8KB、16KB、32KB和64KB。页面大小的选择对地址变换算法和页表结构会有一定的影响,如Alpha的虚地址和物理地址的有效长度随页面尺寸的变化而变化,这种变化必将在地址变换和页表项中有所反映。 在Linux中,每一个进程都有一个比实际物理空间大得多的进程虚拟空间,为了建立虚拟空间和物理空间之间的映射,每个进程还保留一张页表,用于将本进程空间中的虚地址变换成物理地址。页表还对物理页的访问权限作出了规定,定义了哪些页可读写,哪些页是只读页,在进行虚实变换时,Linux将根据页表中规定的访问权限来判定进程对物理地址的访问是否合法,从而达到存储保护的目的。 Linux存储空间分配遵循的是不到有实际需要的时候决不分配物理空间的原则。当一个程序加载执行时,Linux只为它分配了虚空间,只有访问某一虚地址而发生了缺页中断时,才为它分配物理空间,这样就可能出现某些程序运行完成后,其中的一些页从来就没有装进过内存。这种存储分配策略带来的好处是显而易见的,因为它最大限度地利用了物理存储器。 尽管Linux对物理存储器资源的使用十分谨慎,但还是经常出现物理存储器资源短缺的情况。Linux有一个名为kswapd的进程专门负责页面的换出,当系统中的空闲页面小于一定的数目时,kswapd将按照一定的淘汰算法选出某些页面,或者直接丢弃(页面未作修改),或者将其写回硬盘(页面已被修改)。这种换出方式不同于较旧版本Unix的换出方式,它是将一个进程的所有页全部写回硬盘。相比之下,Linux的效率更高。 2.进程管理 在Linux中,进程是资源分配的基本单位,所有资源都是以进程为对象来进行分配的。 在一个进程的生命期内,它会用到许多系统资源,会用CPU运行其指令,用存储器存储其指令和数据,它也会打开和使用文件系统中的文件,直接或间接用到系统中的物理设备,因此,Linux设计了一系列的数据结构,它们能准确地描述进程的状态和其资源使用情况,以便能公平有效地使用系统资源。Linux的调度算法能确保不出现某些进程过度占用系统资源而导致另一些进程无休止地等待的情况。 进程的创建是一个十分复杂的过程,通常的做法需为子进程重新分配物理空间,并把父进程空间的内容全盘复制到子进程空间中,其开销非常大。为了降低进程创建的开销,Linux采用了Copy on write技术,即不拷贝父进程的空间,而是拷贝父进程的页表,使父进程和子进程共享物理空间,并将这个共享空间的访问权限置为只读。当父进程和子进程的某一方进行写操作时,Linux检测到一个非法操作,这时才将要写的页进行复制。这一做法免除了只读页的复制,从而降低了开销。 3.文件系统 : Linux最重要的特征之一就是支持多个不同的文件系统,前面我们已经看到,Linux目前支持的文件系统多达十余种,随着时间的推移,这一数目还在不断增加。 在Linux中,一个分离的文件系统不是通过设备标识(如驱动器号或驱动器名)来访问,而是把它合到一个单一的目录树结构中,通过目录来访问,这一点与Unix十分相似。Linux用安装命令将一个新的文件系统安装到系统单一目录树的某一目录下,一旦安装成功,该目录下的所有内容将被新安装的文件系统所覆盖,当文件系统被卸下后,安装目录下的文件将会被重新恢复。 Linux最初的文件系统是Minix。该文件系统对文件限制过多,并且性能低下,如文件名长度不能超过14个字符、文件大小不能超过64MB。为了解决这些问题,Linux的开发者们设计了一个Linux专用的文件系统EXT。EXT对文件的要求放松了许多,但在性能上并没有大的改观,于是就有了后面的EXT2文件系统。EXT2文件系统是一个非常成功的文件系统,它无论是对文件的限制还是在性能方面都大大优于EXT文件系统,所以,EXT2自从推出就一直是Linux最常用的文件系统。 为了支持多种文件系统,Linux用一个被称为虚拟文件系统(VFS)的接口层将真正的文件系统同操作系统及系统服务分离开。VFS允许用户同时透明地安装多个不同的文件系统。 VFS掩盖了不同文件系统之间的差异,使所有文件系统在操作系统和用户程序看来都是等同的。4.进程间通信: Linux提供了多种进程间的通信机制,其中,信号和管道是最基本的两种。除此以外,Linux也提供System V的进程间通信机制,包括消息队列、信号灯及共享内存。为了支持不同机器之间的进程通信,Linux还引入了BSD的Socket机制。 Linux上的常用软件 一个操作系统很重要的部分就是它所支持的各种界面和应用软件,Linux上的软件还有一个特点,那就是这些软件都是免费的。 1. 基本的命令和工具 应该说现在的Linux已经把在标准的UNIX系统上可以找到的应用软件几乎都已移植过来了,还包括一些基本的命令ls,cp,mv,more等等,Linux上有许多文本编辑程序,象vi,ed,joe,还有GNU Emacs等,另外还有多种Shell,比如:C Shell、Bourne Shell、Bash(GNU Bourne Again Shell)、Tcsh,(带有许多扩充功能的C shell)、Zsh(一个类似于Bourne Shell的小型shell)。Shell对很多用户来说都是很重要的应用软件,它相当于ms-dos下的批处理文件(batch file),但是shell的功能要强大很多,shell程序读入用户的命令,然后执行,shell的最重要的特点就是包含了一个任务描述的命令语言。 Linux上的多种shell之间的最大差别就在于这种命令语言,C Shell的命令语言很像C语言,Bourne Shell使用另一种不同的语言。其中最广泛使用的就是Bash,这是Bourne Shell的遍体,它包括了例如任务控制、历史命令、重定向,补全命令等完整化的操作。有了这些不同的Shell,我们就可以自己动手设计我们自己需要的工作环境了。 2. 程序设计语言 Linux提供了一个完整的UNIX编程环境,包括标准程序库、编程工具、编译器和调试器。在UNIX环境下,应用程序和系统程序的设计通常是C或C++语言,在Linux上的标准C或C++编译器是GNU的gcc,gcc是一个比较先进的编译器,有多种的选项。除了C语言之外,许多其它的语言的编译器和解释器也都移植到Linux上了。比如说FORTRAN、PASCAL、PERL、GWK等等。还有先进的调试器gdb。帮助用户一步一步地运行自己地程序,进行调试。 Linux还实现了共享程序库的动态链接机制,简称DLL。这样就使程序的二进制代码的长度大为减少。 在Linux上开发应用程序是很方便的,除了我们刚才提到的语言外,Linux上还有许多非常小巧实用的语言(gawk语言.Etc) 3. X窗口系统 X-Window是由MIT开发的一套标准图形接口,当前的版本为X11R6.3,它与Window和Macintosh的图形界面不同,它是一套平台独立的基本图形功能调用接口,它不包括硬件和具体的显示风格。因此,X-Window具有高度可配置性。但是MIT发布的X-Window源代码没有包括在具体硬件上的实现,所以如果让它在硬件上运行起来的话,还需要开发相应的硬件驱动程序, Linux下的X-Window系统是Xfree86,现在的版本是3.3.3。它包括了多种的应用程序、程序库和文档资料。 标准的X应用程序有用于X窗口的以文本方式为主的应用程序的终端仿真器Xterm,还有中文的环境Cxterm,管理用户登陆的X管理程序xdm,时钟显示器xclock,还有用于X窗口联机用户手册Xman,等等。 我们知道X窗口图形界面的外观和使用在很大程度上取决于窗口管理程序。标准的Xfree86包括twm,这是一个经典的窗口管理程序。当然使用最多的还是fvwm。 4. 网络设置 Linux支持两种基本的UNIX上的网络协议:TCP/IP、UUCP。它还支持SLIP和PPP协议。它提供标准的SOCKET编程界面,所以基本上任何使用TCP/IP协议的应用程序都可以移植到Linux上。 UUCP(UNIX to UNIX COPY)现在用的不是很多了,它是一个比较老的协议,主要用于在UNIX机器间进行文件、邮件和新闻传送的机制。原先UUCP是用调制解调器在电话线连接的机器之间进行工作的,后来也可以用在TCP/IP网络上。 5. 其它应用程序 其它的一些商业软件厂商也加入了Linux应用程序贡献者的队伍。 在Linux上有几个关系数据库,有Postgres,Oracle8I,Imgres,Mbase等。由于Linux支持POSIX1003.1标准,我们自己也可以把在UNIX上运行的免费软件在Linux上编译,应该不会遇到什么困难。 Linux的应用 个人Unix工作站 : Linux对于那些负担不起Sun或是HP工作站的公司,对于每一个工程师和所有在X 终端上遇到困难的人来说都是极棒的产品,可以同时保留一些旧格式文件和继续使用原有程序的DOS和Windows混合环境下用户使用。 X应用服务器 : 使用Linux作为应用服务器去加快RISC工作站与使用Linux作为工作站一样,都是非常合理的选择。如果把Linux配置成应用服务器,就能通过运行DOS X服务器把286、386等低档次的机器作为哑终端重新利用起来。这也说明了Linux是低预算的X Windows网络的选择。 Unix开发平台 : Linux能够支持Unix开发,不但支持主流语言,也支持其它语言;其跨平台的环境还可以为其它Unix操作系统平台产生二进制代码;GNU C、GNU C++、GNU Fortran 77、ADA、Pascal、Modula 2和TCL/Tk、Scheme 和SmallTalk/X 均可免费使用,并附带详细的工作代码库;流行的Motif Widgets也能从几个供应商手中买到;多种语言的编译器有助于节省开发时间。所有这些,再加上灵活的shell语言编辑器(大小写敏感)、源代码包和详细文档都给了编程者充分的可定制环境。另外,它也能作为一个理想的计算机学习系统,在不打扰用户共享设施的环境中,尽情控制这个复杂的系统。 商业开发 : 在商业开发系统中,执行CA/Clipper(基于DBase和Fox超集的面向对象编译器的含义是,Clipper的开发者只需对软件做很少的改动就能适应Linux的运行。其结果是功能相同,而性能提高了,在一样的硬件条件下,速度比DOS版本快了20~200倍。 网络服务器 : 可将Linux配置为使用NFS、Apple Talk及NetBIOS协议。其性优价廉的特性使其颇具吸引力。由LAN桥接而生成WAN也是Linux的一个很好的用途。当Linux运行于RISC和SMP(对称多处理)硬件系统时,它可为严谨的后台处理带来便利及易用性。 Internet服务器 : Internet服务器使用是Linux的一项重要应用。以Linux和Apache 为基础的Internet和Intranet 服务器价格低廉、性能卓越和易于维护。在美国,大多数廉价服务器以Linux为基础。根据Infobeads的考察,有26%或更多的ISP在利用Linux。Linux能用作WWW服务器、域名服务器、防火墙、FTP 服务器、邮件服务器等。用单一的服务器能提供所有这些功能。 Ios对网络服务器实用的操作系统作了一次调查。Internet Operating System Counter(ios++)在1998年的9月进行了一次比较特别的调查,它的基本思路是对互联网上所有的服务器使用的操作系统进行识别并统计结果,Ios++使用了一个程序自动收集互联网上的计算机地址,查询计算机并判断使用的系统,虽然有些系统识别不出来,但是绝大多数的系统都可以识别。遗憾的是,这次调查没有彻底完成,这个系统会扫描网络中所有的主机,它的行为也类似于黑客的做法。在对意大利的计算机进行网络查询时被一家以色列网络安全公司怀疑为黑客入侵,所以被迫中断,不过这次运行了大约10天,扫描了上百万的服务器,它的结果也可以真实反映网络操作系统的真实情况。http://www.leb.net/hzo/ioscount/ . 排名 操作系统 主机比率 1 Linux 26.3% 2 Window95/98/nt 23.4% 3 BSD family 22.6% 4 Solaris/SunOS 14.4% Linux的不足及发展趋势 Linux从出现到现今只经历了短短9年的时间,但其发展速度是惊人的,这与它的开放性和优良的性能是密不可分的。不过我们应该看到,Linux还有许多不足,具体表现在以下几个方面: 首先是安装配置不方便,Linux把每一个程序都做成一个安装包,这样在安装时,用户可以任意选择要安装的软件包。这对非常熟悉 Linux系统的人来说当然是一件好事,可以更有效地安装配置自己所使用的Linux。但对广大不熟悉Linux安装和配置的PC用户来说,Linux安装的极大灵活性却给他们造成了极大的困惑,这样最很多人就不得不回过头去转向其它傻瓜式安装的操作系统。这就阻碍了将Linux推向商业PC操作系统。 其次是图形界面运行速度慢,Linux在图形界面下运行程序的速度比Win95慢很多,同时Linux图形界面的可操作性也远不及 Win95。如果只把Linux用于网络服务器,此时所有的操作均可以在字符界面下完成,其工作效率非常高。但是,当今PC操作界面流行的是图形操作界面,喜欢鼠标的人远远多于喜欢键盘的人,已经很少有人乐于使用字符操作界面了,所以Linux要想冲入PC 操作系统市场,就必须在人机操作界面上有更大的进步,提供更好的可操作性和友好性,使得广大PC用户乐于使用。 再有一个不足之处是支持Linux系统的,基于图形界面的应用程序非常少,尤其是缺乏功能强大的文本处理器。由于Linux 是自由软件,Linux应用程序的开发也是自由进行的,所以其应用程序的开发并没有太多大公司的支持,在开发大型应用程序方面,Linux可以说先天不足。而当今天下,要想在PC操作系统市场站住脚跟,没有功能强大、使用方便的文本处理器又是绝不可能的,从这点来看,Linux任重道远。目前,Linux下的文本处理器(StarOffice,wordperfect)较之微软的Office,差距极大,它还不能同时兼容当今流行的多种文本文件格式,导致其文档处理器不可能得到广泛的应用,大大阻碍了其向办公系统迈进的步伐。 另外,针对我国的用户,Linux的中文化的问题也是还有一段长路要走,虽然说是blue point 把核心中文化了,但是应用程序、说明文档基本还都是上英文。 尽管Linux有这样和那样的不足,但其发展潜力不容低估,其发展的动力就是遍布全球、为数众多的Linux热心者。今后Linux将会朝着完善功能、提高效率的方向发展我们相信,Linux、Unix及NT三足鼎立的时代将为期不远。 首先,通过提供完整的安装定制方案,向用户提供更方便的系统安装及系统维护。根据不同用户的不同需求,重新编译系统内核,精心选择为用户安装的软件包,尽量不让用户过多安装无用的软件。由于Linux操作系统的源代码公开,所以其操作系统的售价非常低廉,即使为用户设计专门的安装定制时收取一定的服务费,其总体价格还是非常 低的,还是可以为用户所接受的。另外,当用户在使用过程中出现问题时,或希望更新 系统时,可以向系统定制商咨询,因为系统定制商极其熟悉自已设计的安装定制,可以想象,提供Linux系统定制安装和安装后维护服务在中国将是一个大有市场的行业。 其次,开发基于Linux的面向图形界面的专用系统,提高图形应用程序的性能。图形界面是个人PC用户必然的操作界面,而应用程序在其上的运行速度在很大程度上影 响了用户的选择。去掉Linux中大量与网络和系统管理有关的应用程序,开发针对个人用户的Linux图形界面的专用系统,提高Linux X-win dow的运行速度,并在操作上实现傻 瓜式操作。利用Linux系统在价格上优势,争取在个人PC教 占领一块阵地? 另外,大力开发基于Linux平台的应用程序,使Linux在PC平台上有施展的天地。只 有得到大量应用软件的支持,Linux才能广泛应用起来。文字处理工具、媒体播放工具和 游戏是PC平台上应用最多的软件。所以,目前最紧迫的是,开发基于Linux的中文文字处理工具、媒体播放工具。使用户在Linux下可以获得良好的文档处理功能及多媒体功能。 这样才能使众多的商业用户放心地转向Linux。 目前,Linux的发展在国内还刚刚开始,各种看法层出不穷,可谓百花齐放,但是到目前为止,还没有一个确定的发展模式,刚才说的只是的一点个人想法。其实,Linux本身的发展模式已经为我国的软件业提供了一个很好的模式,那就是开放、协作、共进。Linux本身的发展是基于开放的因特网,因为只有开放的东西才能不受制于人,才能长期保持新 鲜的生命力。所以我国的Linux业要想发展也必须符合自由软件的规则,同时要根据我国现有软件业的实际情况,制定自已的Linux发展计划。目前,我国的软件业尚未形成规模化,尤其在操作系统领域长期落后,与国外相比,竞争力几乎为“0”;如果想仅仅依靠 自已的力量开发操作系统,必然代价巨大,而且成功可能性极小。但Linux的出现,使我们开发自已的操作系统有了一个很高的起点,因为它的开放性,使我们与国外的发展几乎是同步进行的。拥有一个自已的操作系统,对于我国各项事业来说都具有极高的战略 意义。所以我国基于Linux开发自已的操作系统,或者说开发自已的Linux操作系统势在必行。虽然当今的世界是利益驱动的世界,但也是一个共生的世界。只有共得利益,才能得到共同发展,只有共进才能生存。操作系统、应用和系统集成服务三个方面必须紧密合作才能形成良好的发展体系,少了哪一个环节Linux的发展都会受到阻碍。 面对Linux这一新机会和新挑战,当前我们民族软件业的发展模式只能是:团结协作 ,共创未来。 我就讲到这里了,由于我的水平很有限,可能好多地方没有讲到,只是希望起个抛砖引玉的作用,让大家有一点收获,加深一下对Linux的了解。 |