早在Linux出现之前的二六年(大概在1970年代),就有一个相当稳定而成熟的操作系统存在了!那就是Linux的老大哥『Unix』是也!如何如此说呢?她们这两个家伙有哪些关系呀?这儿就给他说一说啰!
众所皆知的,Linux的核心是由LinusTorvalds在1991年的时侯给他开发下来的,而且丢到网路上提供你们下载,后来你们认为这个小东西(LinuxKernel)相当的小而精致,所以渐渐的就有相当多的同事投入这个小东西的研究领域上面去了!并且为何这个小东西如此棒呢?又为何你们都可以免费的下载这个东西呢?嗯!等鸟哥渐渐的道来!
初期的计算机并不像现今的个人计算机一样普遍,他可不是通常人碰的起的呢~除非是军事或则是高科技用途,或则是学术单位的学术研究,否则真的很难接触到。反倒这么,初期的计算机构架还很难使用,不仅指令周期并不快之外,操作插口也很困惑的!由于那种时侯的输入设备只有卡片阅读机、输出设备只有复印机,用户也未能与操作系统互动(批次型操作系统)。
在哪个时侯,写程序是件很可怜的事情,由于程序设计者,必需要将程序相关的信息在读彩纸里面打洞,之后再将读彩纸插入卡片阅读机来将信息读入主机中运算。光是这样就很麻烦了,若果程序有个小地方弄错,哈哈!光是重新打卡就很惨,加上主机少,用户诸多linux / 是什么意思,光是等待,就耗去很多的时间了!
在那以后,因为硬件与操作系统的改良,致使后来可以使用鼠标来进行信息的输入。不过,在一间中学上面,主机其实可能只有一部,假如多人等待使用,那如何办?你们还是得要等待啊!好在1960年代早期麻省理工大学(MIT)发展了所谓的:『兼容分时系统(CompatibleTime-SharingSystem,CTSS)』,它可以让小型主机透过提供数个终端机(terminal)以联机步入主机,来利用主机的资源进行运算工作。构架有点像这样:

图1.2.1、早期主机与终端机的相关性图标
Tips:
这个兼容分时系统可以说是近代操作系统的先祖呢!他可以让多个使用者在某一段时间内分别使用CPU的资源,觉得上你会感觉你们是同时使用该主机的资源!事实上,是CPU在每位使用者的工作之间进行切换,在当时,这而且个划时代的技术喔!


这么一来,无论主机在那里,只要在终端机上面进行输入输出的作业,就可借助主机提供的功能了。不过,须要注意的是,此时终端机只具有输入/输出的功能,本身完全不具任何运算或则软件安装的能力。并且,比较先进的主机大约也只能提供30个不到的终端机而已。
为了更加大化小型主机的功能,以让主机的资源可以提供更多使用者来利用,所以在1965年前后,由贝尔实验室(Bell)、麻省理工大学(MIT)及奇特公司(GE,或称为通用家电)共同发起了Multics的计划,Multics计划的目的是想要让小型主机可以达成提供300个以上的终端机联机使用的目标。不过,到了1969年前后,计划进度落后,资金也匮乏,所以该计划似乎继续在研究,但贝尔实验室还是退出了该计划的研究工作。(注:Multics有复杂、多数的意思存在。)
Tips:
最终Multics还是有成功的发展出她们的系统,完整的历史说明可以参考:网站内容。Multics计划其实后来没有遭到很大的注重,可是他培养下来的人材是相当优秀的!^_^

在觉得Multics计划不可能成功以后,贝尔研究室就退出该计划。不过,原先参与Multics计划的人员中,早已从该计划当中获得一些点子,KenThompson就是其中一位!
Thompson由于自己的须要,希望开发一个小小的操作系统以提供自己的需求。在开发时,有一部DEC(DigitalEquipmentCorporation)公司推出的PDP-7恰好没人使用,于是他就打算针对这部主机进行操作系统核心程序的撰写。原本Thompson应当是没时间的(有家有儿子的宿命?),无巧不巧的是,在1969年八月份左右,正好Thompson的妻儿去了美东探亲,于是他有了额外的一个月的时间好好的待在家将一些设想实现下来!
经过四个礼拜的拼搏,他总算以汇编语言(Assembler)写出了一组核心程序,同时包括一些核心工具程序,以及一个小小的文件系统。那种系统就是Unix的原型!当时Thompson将Multics庞大的复杂系统简化了不少,于是同实验室的同事都戏称这个系统为:Unics。(当时尚未有Unix的名称)
Thompson的这个文件系统有两个重要的概念,分别是:
这种概念在后来对于Linux的发展有相当重要的影响喔!
Tips:
套一句常看到的广告词:『科技一直来自于人性』,当年Thompson会写这套Unix核心程序,却是想要移植一套名为『太空旅游』的游戏呢!^_^

因为Thompson写的那种操作系统实在太好用了,所以在贝尔实验室外部广为留传,但是数度经过改版。并且由于Unics原本是以汇编语言写成的,而如第零章估算器总论提到的,汇编语言具有专情性,加上当时的计算机机器构架都不太相同,所以每次要安装到不同的机器都得要重新编撰汇编语言,真不便捷!
后来Thompson与Ritchie合作想将Unics改以高阶程序语言来撰写。当时现成的高阶程序语言有B语言。并且由B语言所编译下来的核心效能不是挺好。后来DennisRitchie将B语言重新改写成C语言,再以C语言重新改写与编译Unics的核心,最后正名与发行出Unix的即将版本!
Tips:
这群中级黑客实在很厉害!由于自己的需求来开发出那么多好用的工具!C程序语言开发成功后,甚至仍然延用至今呢!你说厉不厉害啊!这个故事也告诉我们,不要小看自己的潜能喔!你想作的,并且现实生活中没有的,就动手自己搞一个来玩儿吧!


因为贝尔实验室是隶属于日本联通大厂AT&T公司的,只是AT&T当时疏于其他商业活动,对于Unix并不支持也不抵触。据悉,Unix在这个时期的发展者都是贝尔实验室的工程师,这种工程师对于程序其实相当有研究,所以,Unix在此时其实是不容易被通常人所接受的!不过对于学术界的学者来说,这个Unix真是学者们进行研究的福音!由于程序代码可改写而且可作为学术研究之用嘛!
须要非常指出的是,因为Unix是以较高阶的C语言写的,相对于汇编语言须要与硬件有密切的配合,高阶的C语言与硬件的相关性就没有那么大了!所以,这个改变也促使Unix很容易被移植到不同的机器里面喔!
尽管贝尔属于AT&T,并且AT&T此时对于Unix是采取较开放的心态,再者,Unix是以高阶的C语言写成的,理论上是具有可移植性的!亦称只要取得Unix的原始码,但是针对小型主机的特点加以修订原有的原始码(SourceCode),就可能将Unix移植到另一部不同的主机上头了。所以在1973年之后,Unix便得以与学术界合作开发!最重要的接触就是与加洲柏克莱(Berkeley)学院的合作了。
柏克莱学院的BillJoy在取得了Unix的核心原始码后,着手更改成适宜自己机器的版本,但是同时降低了好多工具软件与编译程序,最终将它命名为BerkeleySoftwareDistribution(BSD)。这个BSD是Unix很重要的一个分支,BillJoy也是Unix业者『Sun(升阳)』这家公司的创立者!Sun公司即是以BSD发展的核心进行自己的商业Unix版本的发展的。(后来可以安装在x86硬件构架里面FreeBSD即是BSD改版而至!)
因为Unix的高度可移植性与强悍的效能,加上当时并没有版权的纠纷,所以让好多商业公司开始了Unix操作系统的发展,比如AT&T自家的SystemV、IBM的AIX以及HP与DEC等公司,都有推出自家的主机搭配自己的Unix操作系统。
然而,就像我们上面提及的,操作系统的核心(Kernel)必需要跟硬件配合,以提供及控制硬件的资源进行良好的工作!而在初期每一家生产计算机硬件的公司还没有所谓的『合同』的概念sogou pinyin linux,所以每一个计算机公司出产的硬件自然就不相同啰!因而她们必需要为自己的计算机硬件开发合适的Unix系统。诸如在学术机构相当有名的Sun、Cray与HP就是这一种情况。她们开发下来的Unix操作系统以及内含的相关软件并没有办法在其他的硬件构架下工作的!另外,因为没有厂商针对个人计算机设计Unix系统,因而,在初期并没有支持个人计算机的Unix操作系统的出现。
Tips:
就像兼容分时系统的功能通常,Unix指出的是多人多任务的环境!但初期的286个人计算机构架下的CPU是没有能力达到多任务的作业,因而,并没有人对移植Unix到x86的计算机上有兴趣。


每一家公司自己出的Unix其实在构架里面承德小异,然而却真的仅能支持自身的硬件,所以啰,原先的Unix只能与服务器(Server)或则是小型工作站(Workstation)划上等号!但到了1979年时,AT&T推出SystemV第七版Unix后,这个情况就有点改善了。这一版最重要的特色是可以支持x86构架的个人计算机系统,也就是说SystemV可以在个人计算机里面安装与运作了。
不过由于AT&T因为商业的考虑,以及在当时现实环境下的思索,于是想将Unix的版权收回去。因而,AT&T在1979年发行的第七版Unix中,非常提及了『不可对中学生提供原始码』的严格限制!同时,也导致Unix业界之间的紧张氛围redhat linux 9.0,而且也引爆了好多的商业纠纷~
Tips:
目前被称为纯种的Unix指的就是SystemV以及BSD这两套啰!

关于1979年的版权申明中,影响最大的其实就是中学教Unix核心原始码相关学问的院士了!想一想,假如没有核心原始码,这么怎么教导中学生认识Unix呢?这问题对于AndrewTanenbaum(谭宁邦)院士来说,实在是很伤脑筋的!不过,中学的课程还是得继续啊!那如何办?
既然1979年的Unix第七版可以在Intel的x86构架里面进行移植,这么是否意味着可以将Unix改写并移植到x86里面了呢?在这个看法上,谭宁邦院士于是乎自己动手写了Minix这个UnixLike的核心程序!在撰写的过程中,为了防止版权纠纷,谭宁邦完全不看Unix核心原始码!而且指出他的Minix必须才能与Unix兼容才行!谭宁邦在1984年开始撰写核心程序,到了1986年总算完成,并于次年出版Minix相关书籍,同时与新闻组(BBS及News)相结合~
Tips:
之所以称为Minix的缘由,是由于他是个Mini的Unix系统啰!^_^


这个Minix版本比较有趣的地方是,他并不是完全免费的,难以在网路上提供下载!必需要透过c盘/磁带订购才行!其实真的很实惠~不过,虽然由于没有在网路上留传,所以Minix的传递速率并没有很快速!据悉,订购时,随c盘都会附上Minix的原始码!这意味着使用者可以学习Minix的核心程序设计概念喔!(这个特色对于Linux的启始开发阶段,但是有很大的关系喔!)
据悉,Minix操作系统的开发者仅有谭宁邦院士,由于学者很忙啊!加上谭宁邦一直觉得Minix主要用在教育用途里面,所以对于Minix是点到为止!没错,Minix是很受欢迎,不过,使用者的要求/需求的声音可能就比较没有办法上升到比较高的地方了!这样说,你明白吧?^_^
RichardMathewStallman(史托曼)在1984年发起的GNU计划,对于现在的自由软件热潮,真有不可磨灭的地位!目前我们所使用得好多自由软件,几乎均直接或间接受惠于GNU这个计划呢!这么史托曼是何许人也?为什么他会发起这个GNU计划呢?
致使后来好多的软件开发者可以依循这种基础的工具来进行程序开发!进一步壮大了自由软件团体!这是很重要的!不过,对于GNU的最初设想『构建一个自由的Unix操作系统』来说,有这种优秀的程序是仍未能满足,由于,当下并没有『自由的Unix核心』存在…所以这种软件仍只能在这些有专利的Unix平台上工作~~一直到Linux的出现…更多的FSF开发的软件可以参考如下网页:
有鉴于图形用户插口(GraphicalUserInterface,GUI)的需求日渐加重,在1984年由MIT与其他第三方首次发表了XWindowSystem,而且更在1988年创立了非营利性质的XFree86这个组织。所谓的XFree86似乎是XWindowSystem+Free+x86的整合名称呢!而这个XFree86的GUI界面更在Linux的核心1.0版于1994年释出时,整合于Linux操作系统当中!
Tips:
为何称图形用户插口为X呢?由于由英语单字来看,Window的W接的就是X啦!意指Window的下一版就是了!需注意的是linux / 是什么意思,XWindow并不是XWindows喔!

到了1991年,加拿大的蒙特利尔学院的LinusTorvalds在BBS里面贴了一则消息,声称他以bash,gcc等工具写了一个小小的核心程序,这个核心程序可以在Intel的386机器里面运作,让好多人很感兴趣!自此开始了Linux不平凡的路程!
