📄 0110whatislinux.htm
字号:
VCD 播放程式来播放 VCD 棉!这个播放程式就是应用软体棉,而这个应用软体可以帮你去控制核心来工作
( 就是放映影片棉 ) ,因此,我们可以这样说,
<span class="text_import2">核心是控制整个硬体支援的咚咚,也是一个作业系统的最底层,
然而要让整个作业系统更完备的话,那还需要含有相当丰富的核心提供的工具,
以及核心相关的应用软体来支援</span>。<br><br>
OK!提到这里那么您知道 Linux 是什么了吗?呵呵!对啦!<span class="text_import2">其实
Linux 就是一个作业系统,这个作业系统里头含有最主要的 kernel 以及 kernel
提供的工具啦</span>!他提供了一个完整的作业系统当中最底层的硬体控制与资源管理的完整架构,
这个架构是沿袭 Unix 良好的传统来的,所以相当的稳定而功能强大!此外,
由于这个优良的架构可以在目前的个人电脑( X86 系统 ) 上面跑,
所以很多的软体开发者将他们的工作心血移转到这个架构上面,那就是很多的应用软体啦! 虽然
Linux 仅是其核心与核心提供的工具, 不过,由于核心、核心工具与这些软体开发者提供的软体的整合,使得
Linux 成为一个更完整的、功能强大的作业系统棉!我们可以将 Linux
的系统与使用者的相关性看成底下的图示∶
<center><img SRC="0110whatislinux/0110whatislinux_1.jpg"
alt="使用者、使用者介面>与核心工具、核心及硬体之相关性"
title="使用者、使用者介面>与核心工具、核心及硬体之相关性">
<br><a NAME="fig1"></a>图一、使用者、使用者介面与核心工具、核心、与硬体之相关性</center>
<br>
约略了解 Linux 是何物之后,接下来,我们要谈一谈,『<span class="text_import2">为什么说
Linux 是很稳定的作业系统呢?他是如何来的?</span>』<br>
<div style="padding: 10 0 10 0 ;" align="right"><table width="90%"><tr><td><b>Tips:</b><br /><span style="font-style: italic; color : darkgreen"> Torvalds 先生在写出 Linux 的时候,其实该核心仅能『驱动 386 所有的硬体』而已,
所谓的『让 386 电脑开始运作,并且等待使用者指令输入』而已,事实上,
当时能够在 Linux 上面跑得软体还很少呢!
</span></td><td><img src="../images/vbird_face.gif" /></td></tr></table></div>
<div style="padding: 10 0 10 0 ;" align="right"><table width="90%"><tr><td><b>Tips:</b><br /><span style="font-style: italic; color : darkgreen"> 由上面的说明中,我们知道硬体是由『核心』来控制的,而每种作业系统都有他自己的核心。
这就产生了一个很大的问题,因为早期硬体的开发者所开发的硬体架构或多或少都不相同,
举例来说,2006年以前的麦金塔是请 IBM 公司开发自己的硬体与作业系统,
Windows 则是开发在 x86 架构上的作业系统之一,
那么 Windows 是否可以在麦金塔上面跑?答案是『不行』的!不过,在 2006 年以后,
麦金塔转而请 Intel 设计其硬体架构,亦即其硬体架构已经转为 x86 系统,因此在 2006
年以后的麦金塔若使用 x86 架构时,其硬体则『可能』可以安装 Windows 作业系统了。
</span></td><td><img src="../images/vbird_face.gif" /></td></tr></table></div>
<div style="padding: 10 0 10 0 ;" align="right"><table width="90%"><tr><td><b>Tips:</b><br /><span style="font-style: italic; color : darkgreen"> 因为 Windows 作业系统本来就是针对个人电脑 x86 架构的硬体去设计的,所以他当然只能在
x86 的个人电脑上面运作,在不同的平台,当然就无法运行了。也就是说,
每种作业系统都是在他专门的机器上面运行的喔!这点得要先了解。
不过, Linux 由于是 Open Source 的作业系统,所以他的程式码可以被修改成适合在各种机器上面运行的,
也就是说, Linux 是具有『可移植性』,这可是很重要的一个功能喔! ^_^
</span></td><td><img src="../images/vbird_face.gif" /></td></tr></table></div> </div>
<hr><a name="whatislinux_unix"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /> <span class="text_h2">Linux 之前, Unix 的历史</span><br>
<div class=block2>
早在 Linux 出现之前的二十年 ( 大约在 1970 年代 ),
就有一个相当稳定而成熟的作业系统存在了!那就是 Linux 的老大哥『 Unix 』是也!
怎么这么说呢?!他们这两个家伙有什么关系呀?这里就给他说一说棉!众所皆知的,
<span class="text_import2">Linux 的核心是由 Linus Torvalds 在 1991 年的时候给他开发出来的,</span>
并且丢到网路上提供大家下载,后来大家觉得这个小东西 ( Linux Kernel )
相当的小而精巧,所以慢慢的就有相当多的朋友投入这个小东西的研究领域里面去了!
但是为什么这的小东西这么棒呢?!然而又为什么大家都可以免费的下载这个东西呢?!
嗯!等鸟哥慢慢的唬xx....喔不!听我慢慢的道来!<br><br>
<li><span class="text_import1">1969 年以前∶一个没有完成的梦想∶ Bell, MIT 与 GE
的『 Multics』系统</span><ul>
早期的电脑并不像现在的个人电脑一样,他可不是一般人碰的起的呢~
除非是军事或者是高科技用途,或者是学术单位的学术研究,否则,真的很难接触到。
非但如此,早期的电脑架构还很难使用,除了运算速度并不快之外,操作介面也很困扰的!
在那个时候,写程式是件很可怜的事情,因为,程式设计者,必须要将程式相关的资讯在读卡纸上面打洞,
然后再将读卡纸插入读卡机来将资讯读入主机中运算。光是这样就很麻烦了,如果程式有个小地方写错,
哈哈!光是重新打卡就很惨,加上主机少,使用者众多,光是等待,就耗去很多的时间了!<br><br>
在之后,经由作业系统的改良,使得后来可以使用键盘来进行资讯的输入/输出。
不过,在一间学校里面,主机毕竟可能只有一部,如果多人等待使用,那怎么办?
好在 1960 年代初期麻省理工学院 (MIT) 发展了所谓的∶
『<span class="text_import2">相容分时系统( Compatible Time-Sharing System, CTSS )</span>』,
它可以让大型主机透过提供数个终端机(terminal)以连线进入主机,来利用主机的资源进行运算工作。
架构有点像这样∶<br><center><a name="fig2"></a>
<img src="0110whatislinux/0110whatislinux_2.jpg"
alt="早期主机与终端机的相关性图示"
title="早期主机与终端机的相关性图示"><br>图二、早期主机与终端机的相关性图示</center><br>
如此一来,无论主机在哪里,只要在终端机前面进行输入输出的作业,就可利用主机提供的功能了。
不过,需要注意的是,此时终端机只具有输入/输出的功能,本身完全不具任何运算或者软体安装的能力。
而且,比较先进的主机大概也只能提供 30 个不到的终端机而已。<br><br>
为了更加强化大型主机的系统,以让主机的资源可以提供更多使用者来利用,所以在 1965 年前后,
由贝尔实验室 (Bell)、麻省理工学院 (MIT) 及奇异公司 (GE) 共同发起了 Multics 的计画,
Multics 目的是想要让大型主机可以达成提供 300 个以上的终端机连线使用的目标。
不过,到了 1969 年前后,计画进度落后,资金也短缺,所以该计画就宣告不治.....喔!是宣告失败~
(注∶ Multics 有复杂、多数的意思存在。)</ul>
<li><span class="text_import1">1969 年∶ Ken Thompson 的小型 file server system</span><ul>
在认为 Multics 计画不可能成功之后,<a href="http://www.bell-labs.com/" target="_blank">贝尔研究室</a>
就退出该计画。不过,原本参与 Multics 计画的人员中,已经从该计画当中获得一些点子,
<a href="http://plan9.bell-labs.com/cm/cs/who/ken/index.html" target="_blank">Ken Thompson</a>
就是其中一位!Thompson 因为自己的需要,希望开发一个小小的作业系统,
以提供自己的需求。在开发时,有一部 DEC (Digital Equipment Corporation) 的 PDP-7 没人使用,
于是他就准备针对这部主机进行作业系统核心程式的撰写。本来 Thompson 是没时间的,
有趣的是,在 1969 年八月份左右,刚好 Thompson 的妻儿去了美西探亲,
于是他有了额外的一个月的时间好好的待在家将一些构想实现出来!
经过四个星期的奋斗,他终于以组译语言 (Assembler) 写出了一个核心程式,同时包括一些核心工具程式,
以及一个小小的档案系统。那个系统就是<span class=text_impor2> Unix </span>的原型!
当时 Thompson 将 Multics 庞大的复杂系统简化了不少,于是同实验室的朋友都戏称这个系统为∶
Unics 。 Thompson 的这个档案系统有两个重要的概念,分别是∶<br><br>
<ul><span class=text_import2>
<li>所有的程式或系统装置都是档案
<li>不管建构编辑器还是附属档案,所写的程式只有一个目的,且要有效的完成目标。
</ul><br></span>
这些概念在后来对于 Linux 的发展有相当重要的影响喔!</ul>
<li><span class="text_import1">1973 年∶ Unix 的正式诞生,Ritchie 等人以 C 语言写出第一个正式
Unix 核心</span><ul>
由于 Thompson 写的那个作业系统实在太好用了,所以在贝尔实验室内部广为流传,并且数度经过改版。
但是,比较重要的改版则发生在 1973 年。Unix 本来是以组译语言写成的,后来因为系统移植与效能的需求,
该系统被 B 语言所改写。不过,效能依旧不是很好。后来,
<a href="http://cm.bell-labs.com/cm/cs/who/dmr/" target="_blank">Dennis Ritchie</a>
将 B 语言重新改写成 C 语言,C 语言算是比较高阶的程式语言,可以在不同的机器上面运作,
而 Ritchie 等人也同时将原本 Thompson 的那个作业系统重新以 C 语言改写,
最后发行出 Unix 的正式版本!<br><br>
在这个时候需要特别注意的是,贝尔实验室是隶属于 AT&T 的,只是 AT&T 当时忙于其他商业活动,
所以对于 Unix 是采取比较开放的态度,此外, Unix 在这个时期的发展者都是贝尔实验室的工程师,
这些工程师对于程式当然相当有研究,所以, Unix 在此时当然是不容易被一般人所接受的!
此外,也需要特别强调,由于 Unix 是以较高阶的 C 语言写的,相对于组译语言需要与硬体有密切的配合,
高阶的 C 语言与硬体的相关性就没有这么大了!所以,<span class=text_import2>这个改变也使得 Unix
很容易被移植到不同的机器上面喔!</span></ul>
<li><span class="text_import1">1977 年∶ 重要的 Unix 分支∶ BSD 的诞生</span><ul>
前面说到,虽然贝尔属于 AT&T ,但是 AT&T 此时对于 Unix 是采取开放的态度,
此外, Unix 是以高阶的 C 语言写成的,理论上是具有可移植性的!
所以,只要取得 Unix 的原始码,并且针对大型主机的特性加以修订原有的原始码( Source Code ),
就可能将 Unix 移植到另一部不同的主机上头了。所以在 1973 年以后,
Unix 便得以与学术界合作开发!最重要的接触就是与加州柏克莱 ( Berkeley ) 大学的合作了。
柏克莱大学的 Bill Joy 在取得了 Unix 的核心原始码后,著手修改成适合自己机器的版本,
并且同时增加了很多工具软体与编译程式,最终将他命名为<span class=text_import2>
Berkeley Software Distribution (BSD)</span> 。这个 BSD 是 Unix 很重要的一个分支,
Bill Joy 也是 Unix 业者『 Sun 』这家公司的创办者! Sun 公司即是以 BSD
发展的核心进行自己的商业 Unix 版本的发展的。
(<span class=text_vbird>后来可以安装在 x86 硬体架构上面 FreeBSD 即是 BSD 改版而来!</span>)</ul>
<li><span class="text_import1">1979 年∶ 一个措手不及的版权宣告!</span><ul>
由于 Unix 的高度可移植性与强大的效能,加上当时并没有版权的纠纷,
所以让很多商业公司开始了 Unix 作业系统的发展,例如 AT&T 自家的 System V、IBM 的 AIX 以及
HP 与 DEC 等公司,都有推出自家的主机搭配自己的 Unix 作业系统。<br><br>
但是,如同我们前面提到的,<span class=text_import2>作业系统的核心 ( Kernel ) 必须要跟硬体配合,
以提供及控制硬体的资源进行良好的工作!</span>
而在早期每一家生产电脑硬体的公司还没有所谓的『协定』的概念,
所以每一个电脑公司出产的硬体自然就不相同棉!因此他们必须要为自己的电脑硬体开发合适的 Unix 系统。
例如在学术机构相当有名的 Sun 、 Cray 与 HP 就是这一种情况。
他们开发出来的 Unix 作业系统以及内含的相关软体并没有办法在其他的硬体架构下工作的!
且由于没有厂商针对个人电脑设计 Unix 系统,因此,在早期并没有支援个人电脑的 Unix
作业系统的出现 ( <span class=text_vbird>由于 Unix 强调的是多人多工的环境,但早期的 x86 个人电脑架构下的 CPU
是没有能力达到多工的作业,因此,并没有人对移植 Unix 到 x86 的电脑上有兴趣</span> )。
每一家公司自己出的 Unix 虽然在架构上面大同小异,但是却真的仅能支援自身的硬体,
所以棉,<span class=text_import2>早先的
Unix 只能与伺服器 ( Server ) 或者是大型工作站 ( Workstation ) 划上等号</SPAN>!<br><br>
但是这个高度开放的 Unix 系统在 1979 年有了重大的转折~
因为 AT&T 由于商业的考量,以及在当时现实环境下的思考,于是将想 Unix 的版权收回去,
因此,在 AT&T 在 1979 年发行的第七版 Unix 中,特别提到了
『<span class=text_import2>不可对学生提供原始码</span>』的严格限制!
同时,也造成 Unix 业界之间的紧张气氛,并且也引爆了很多的商业纠纷~</ul>
<li><span class="text_import1">1984 年之一∶ x86 架构的 Minix 诞生</span><ul>
关于 1979 年的版权声明中,影响最大的当然就是学校教 Unix 相关学问的教授了!
想一想,如果没有核心原始码,那么如何教导学生认识 Unix 呢?
这问题对于 Andrew Tanenbaum (谭宁邦)教授来说,实在是很伤脑筋的!
不过,学校的课程还是得继续啊!那怎么办??
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -