当前位置:主页 > 大学教育
Linux是什么?从Linux的历史谈起

 

我们前面一节当中,提到了Unix的历史,也提到了Linux是由Torvalds这个芬兰人所发明的。那么为何托瓦兹可以发明Linux呢? 凭空想象而来的?还是有什么渊源?这里我们就来谈一谈啰!

与Minix之间

Linus Torvalds(托瓦兹, 1969年出生)的外祖父是赫尔辛基大学的统计学家, 他的外祖父为了让自己的小孙子能够学点东西,所以从小就将托瓦兹带到身边来管理一些微计算机。 在这个时期,托瓦兹接触了汇编语言(Assembly Language),那是一种直接与芯片对谈的程序语言,也就是所谓的低级语言。 必须要很了解硬件的架构,否则很难以汇编语言撰写程序的。

在1988年间,托瓦兹顺利的进入了赫尔辛基大学,并选读了计算机科学系。在就学期间,因为学业的需要与自己的兴趣, 托瓦兹接触到了Unix这个操作系统。当时整个赫尔辛基只有一部最新的Unix系统,同时仅提供16个终端机(terminal)。 还记得我们上一节刚刚提过的,早期的计算机仅有主机具有运算功能,terminal仅负责提供Input/Output而已。在这种情况下, 实在很难满足托瓦兹的需求,因为.....光是等待使用Unix的时间,就很耗时~为此,他不禁想到: 『我何不自己搞一部Unix来玩?』不过,就如同Stallman当初的GNU计划一样,要写核心程序,谈何容易~

不过,幸运之神并未背离托瓦兹,因为不久之后,他就知道有一个类似Unix的系统, 并且与Unix完全兼容,还可以在Intel 386机器上面跑的操作系统, 那就是我们上一节提过的,谭宁邦教授为了教育需要而撰写的Minix系统! 他在购买了最新的Intel 386的个人计算机后,就立即安装了Minix这个操作系统。 另外,上个小节当中也谈到,Minix这个操作系统是有附上原始码的, 所以托瓦兹也经由这个原始码学习到了很多的核心程序设计的设计概念喔!

对386硬件的多任务测试

事实上,托瓦兹对于个人计算机的CPU其实并不满意,因为他之前碰的计算机都是工作站型的计算机, 这类计算机的CPU特色就是可以进行『多任务处理』的能力。什么是多任务呢?理论上, 一个CPU在一个时间内仅能进行一个程序, 那如果有两个以上的程序同时出现到系统中呢?举例来说, 你可以在现今的计算机中同时开启两个以上的办公软件,例如电子电子表格与文字处理软件。 这个同时开启的动作代表着这两个程序同时要交给CPU来处理~

啊!CPU一个时间点内仅能处理一个程序,那怎么办?没关系,这个时候如果具有多任务能力的CPU就会在不同的程序间切换~ 还记得前一章谈到的CPU频率吧?假设CPU频率为1GHz的话,那表示CPU一秒钟可以进行109次工作。 假设CPU对每个程序都只进行1000次运作周期,然后就得要切换到下个程序的话,那么CPU一秒钟就能够切换106次呢! (当然啦,切换工作这件事情也会花去一些CPU时间,不过这里暂不讨论)。这么快的处理速度下,你会发现, 两个程序感觉上几乎是同步在进行啦!

Tips:
为什么有的时候我同时开两个档案(假设为A, B档案)所花的时间, 要比开完A再去开B档案的时间还要多?现在是否稍微可以理解? 因为如果同时开启的话,CPU就必须要在两个工作之间不停的切换~ 而切换的动作还是会耗去一些CPU时间的!所以啰,同时启用两个以上的工作在一个CPU上, 要比一个一个的执行还要耗时一点。这也是为何现在CPU开发商要整合两个CPU于一个芯片中! 也是为何在运作情况比较复杂的服务器上,需要比较多的CPU负责的原因!
 

鸟哥的图示

 

早期Intel x86架构计算机不是很受重视的原因,就是因为x86的芯片对于多任务的处理不佳, CPU在不同的工作之间切换不是很顺畅。但是这个情况在386计算机推出后,有很大的改善。 托瓦兹在得知新的386芯片的相关信息后,他认为,以性能价格比的观点来看, Intel的386相当的便宜,所以在性能上也就稍微可以将就将就 ^_^。最终他就贷款去买了一部Intel的386来玩。

早期的计算机效能没有现在这么好,所以压榨计算机效能就成了工程师的一项癖好! 托瓦兹本人早期是玩汇编语言的,汇编语言对于硬件有很密切的关系,托瓦兹自己也说:『我始终是个性能癖』^_^。 为了彻底发挥386的效能,于是托瓦兹花了不少时间在测试386机器上! 他的重要测试就是在测试386的多功效能。首先,他写了三个小程序,一个程序会持续输出A、一个会持续输出B, 最后一个会将两个程序进行切换。他将三个程序同时执行,结果,他看到屏幕上很顺利的一直出现ABABAB...... 他知道,他成功了! ^_^

386计算机的多任务测试


图2.2.1、386计算机的多任务测试