Contents

什么是 Linux

Contents

在学习linux前,你有必要了解什么是linux,linux的起源,这样有助于你更好的学习Linux,让你爱上它

什么是 Linux ?什么是操作系统? 
要了解 Linux 之前,就不能不知道什么是操作系统 ( Operation System, OS ),所以,首先我们来简单的说一说什么是操作系统吧!先来想一想,当我们使用计算机时,屏幕上面显示的咚咚是由哪里来的?嗯!是由显示卡与屏幕显像的;那么你现在可以藉由网络看到这篇文章,则是藉由 Internet 、网络卡、网络线以及所有相关的电子器材与网络器材所完成的一项任务!如果你要看 VCD 呢?那么就需要光驱、光盘、声卡的发声等等的支持。这么说来的话,所以在『工作』的东西都是『硬件』的工作呀!对了!就是这些计算机硬件在工作的。那么硬件怎么工作呢?那就是藉由『操作系统』来达成的啰!这个操作系统就是在沟通你这个使用者跟硬件之间的讯息传递啦!也就是说,没有操作系统,那么你的计算机硬件就只是一堆废铁,什么工作都不能做的!

http://www.ansen.org/tinymce/plugins/wordpress/img/trans.gif
{#wordpress.wp_more_alt}

那么操作系统里面含有什么东西呢?简单的来说,操作系统主要分为两个东西,一个是『核心』、一个是『一堆核心提供的工具』我们以使用者常使用的 Windows 计算机来做一个简单的说明好了。大家应该都使用过 Windows 计算机里面的档案总管吧?那么当你开启档案总管的时候,他是否会显示你硬盘当中的资料?这个显示硬盘里面的资料,就是『核心』帮你做的,但是,你要核心去显示硬盘哪一个目录下的资料,则是由『档案总管』这个『工具』帮你达成的!这样可以理解吗?再来,如果您曾经使用过 Windows 2000 或 Windows XP 的话,那就更好了!你就应该听过有所谓的『FAT32 与 NTFS 档案格式』吧?在 Windows 98 这个早期的 Windows 版本中,他并无法读取或者是找到 Windows XP 的 NTFS 档案格式的硬盘,为什么呢?因为他的『核心』本来就不认识 NTFS 啊!所以,即使你有档案总管,但是由于核心根本不认识 NTFS ,所以,档案总管也是没有能力帮你达到你想要做的事情!这样应该就更清楚了吧?没错!你的整个硬件是由核心来管理的,而如果核心不认识你的硬件,那么你将无法使用该硬设备,例如上面提到的 NTFS 档案格式的硬盘!核心就是『 Kernel 』,他是一个操作系统的最底层的东西,由他来掌管整个硬件资源的工作状态,而 Linux 有 Linux 自己的核心, Windows 也有他自己的核心。所以说,当有新的硬件加入到你的系统中的时候,那么若你的『 Kernel 』并没有支持他的时候,呵呵,这个新的硬件就肯定无法工作的,因为控制他的 Kernel 并不认识他呀!这样了解了吗?!先有个概略性的了解,后面我们提到『核心编译』的时候会在更详细的谈到他! 
一般来说,Kernel 管理的事项有: 

System call interface :一些服务与 kernel 沟通之后,将硬件的资源进一步的利用; 
Process control :系统过程控制中心,所以核心编的越小越好; 
Memory management :控制整个系统的内存管理; 
File system management :档案系统的管理,例如 I/O 等等的工作啦!还有不同档案格式的支持啦等等,如果你的核心不认识某个档案系统,那么您将无法使用该档案格式的档案啰!例如上面提到的 Windows 98 不认识 NTFS 档案格式的硬盘; 
Device drivers :就如同上面提到的,硬件的管理是 Kernel 的主要工作之一,当然啰,装置的驱动程序就是核心需要做的事情啦!好在目前都有所谓的『可加载模块』功能,可以将驱动程序编辑成模块,就不需要重新的编译核心啦!这个也会在后续的核心编译当中提到的! 
所以啦!所有硬件的资源都是他来管理的!至于我们要达成一些工作时,除了藉由核心本身提供的功能 ( 例如上面提到的档案总管 ) 之外,还可以藉由其它的应用软件来达成喔!举个例子来说,你要看 VCD 影片是吧!那么除了 Windows 提供的媒体播放程序之外,你也可以自行安装 VCD 播放程序来播放 VCD 啰!这个播放程序就是应用软件啰,而这个应用软件可以帮你去控制核心来工作 ( 就是放映影片啰 ) ,因此,我们可以这样说,核心是控制整个硬件支持的咚咚,也是一个操作系统的最底层,然而要让整个操作系统更完备的话,那还需要含有相当丰富的核心提供的工具,以及核心相关的应用软件来支持!
OK!提到这里那么您知道 Linux 是什么了吗?呵呵!对啦!其实 Linux 就是一个操作系统,这个操作系统里头含有最主要的 kernel 以及 kernel 提供的工具啦!他提供了一个完整的操作系统当中最底层的硬件控制与资源管理的完整架构,这个架构是沿袭 Unix 良好的传统来的,所以相当的稳定而功能强大!此外,由于这个优良的架构可以在目前的个人计算机 ( X86 系统 ) 上面跑,所以很多的软件开发者将他们的工作心血移转到这个架构上面,那就是很多的应用软件啦!虽然 Linux 仅是其核心与核心提供的工具,不过,由于核心、核心工具与这些软件开发者提供的软件的整合,使得 Linux 成为一个更完整的、功能强大的操作系统啰!我们可以将 Linux 的系统与使用者的相关性看成底下的图标: http://oracle.chinaitlab.com/imgfiles/2003.2.22.17.16.26.0110whatis%3Calinux_1.jpg > 
图一、使用者、使用者接口与核心工具、核心、与硬件之相关性
约略了解 Linux 是何物之后,接下来,我们要谈一谈,『为什么说 Linux 是很稳定的操作系统呢?他是如何来的?』

从 Unix 到 Linux 这一段历史 
为什么大家常常会说, Linux 是很稳定的一套操作系统呢?这是因为, Linux 他有个老前辈,那就是 Unix 家族啰!有这个前辈的提携,让 Linux 这个小老弟很快的就成为一套稳定而优良的操作系统啦!所以,底下我们来谈一谈 Unix 到 Linux 的这一段历史吧!
早在 Linux 出现之前的二十年 ( 大约在 1970 年代 ), 就有一个相当稳定而成熟的操作系统存在了!那就是 Linux 的老大哥『 Unix 』是也!怎么这么说呢?!他们这两个家伙有什么关系呀?这里就给他说一说啰!众所皆知的, Linux 的核心是由 Linus Torvalds 在 1991 年的时候给他开发出来的,并且丢到网络上提供大家下载,后来大家觉得这个小东西 ( Linux Kernel ) 相当的小而精巧,所以慢慢的就有相当多的朋友投入这个小东西的研究领域里面去了!但是为什么这的小东西这么棒呢?!然而又为什么大家都可以免费的下载这个东西呢?!嗯!等鸟哥慢慢的唬xx….喔不!听我慢慢的道来!
一个没有完成的梦想: Bell, MIT 与 GE 的『 Multics 』系统 
早期的计算机并不像现在的个人计算机一般,他可不是一般人碰的到的玩意儿,除非是军事或者是高科技用途才有可能接触到这类的 Computer !而如前面所言,有计算机硬件还需要操作系统的配合才能够发挥计算机的效能,不过,在那个年代,由于计算机算是『奢侈品』,喔~应该说是『贵重物品』,所以,可能一间学校就只有一部大型主机当然,那个年代所谓的大型主机仍然无法提供适度的运算能力的。不过,既然只有一部大型主机,然而有许许多多的教师、学生要想要来使用,怎么办呢?为了解决这个问题,在 1960 年代初期,麻省理工学院 ( MIT ) 发展了所谓的『兼容分时系统 ( Compatible Time-Sharing System, CTSS )』,就字面上的意义来看,他主要让大型主机可以提供多个终端机联机进入主机使用主机的资源, ( 附带一提,当时的终端机 ( Terminal ) 本身并没有软件或者可供使用的资源,这些终端机要能使用,一定必需要联机登入主机之后,才能够使用主机的资源来工作!) 当时可以让约 30 位使用者联机使用主机。而为了让这个分时系统更加的强大,所以,在 1965 年前后由贝尔研究室 ( Bell )、 麻省理工学院 ( MIT ) 及奇异电器公司 ( GE ) 开始来共同开发一个名为 Multics 的大型计画,目标是想让大型主机可以联机 300 位以上的使用者。不过,在奋斗了四年之后,该计画仍然宣告不治…喔!是失败啦!(注: Multics 有复杂、多数的意思。)
一个小型档案系统的产生:1969 年 Ken Thompson 的小型 file server system 
在复杂的 Multics 系统的计画失败后,贝尔研究室当然就退出该计画。就在这个计画解散之后,曾经参与 Muitics 的贝尔研究室的成员 Ken Thompson 由于自己工作上的需求,需要一套档案存取的小型操作系统,便在 1969 年的时候以 DEC 公司 ( Digital Equipment Corporation ) 的计算机 PDP-7 为硬件基准,设计了一个适合自己工作环境的小型档案系统,其中也含有他自行开发的一些小工具。那个系统就是最早期的 Unix 的源头!当初 Ken 设计这个档案系统时,主要是为了自己的存取方便所设计的简单 OS ,因此将原有的 Multics 系统大幅度的简化,不过,在当时还并没有 Unix 这个名词的出现!
Unix 的正式诞生:1973 年 Ritchie 等人以 C 语言写出第一个正式 Unix 核心 
由于 Thompson 写的那个操作系统实在太好用了,所以在 Bell 研究室内部广为流传,并且数度经过改版。到了 1973 年, Bell 研究室的 Dennis Ritchie 等人为了让这个系统的执行效能更佳化,所以使用编译效能更好的 C 语言将原有的 1969 年的那个系统之核心大幅度的改写过,并且确定该操作系统名称为 Unix,呵呵!那就是最早的 Unix 操作系统啰!不过,由于这个操作系统是由这一群工程师所开发完成的,而且使用者也大多是这方面的工程师,因此造成了后来 Unix 系统接口较难被一般使用者接受的情况 @_@ (注: 相对于 Multics ,Unix 具有单一的意思!)
重要的 Unix 分支: 1977 年 BSD 的诞生   在 Unix 早期的发展中,有一件相当重要的事情,那就是 BSD 的诞生!由于 C 语言是一种高级语言,他可以被应用在不同的硬件架构上面,而 Unix 本身就是 C 语言写成的!在 Unix 发表之后, 柏克莱大学 ( Berkeley ) 的教授对于这个操作系统相当的有兴趣,在经过取得 Unix 的原始码,并且几经修改之后,终于在 1977 年发表了第一代的 Berkeley Software Distribution ( BSD ) 。这个 BSD 是 Unix 的一个分支,他的发展对于 Unix 有相当大的影响,例如后来的 Sun 公司就是使用 BSD 发展的核心进行