大家应该有了解批处理系统,批处理系统是我们现代操作系统的前身,那批处理系统是什么呢?之前没有操作系统的前提一下,我们的每一个程序都是直接在硬件上运行,表现为一个一个的作业,作业一运行完了会自动载入第2个作业,彼此之间使用一些分隔符隔开,那时候其实是远远无法发挥我们硬件的功能的,在这在这个时候有三个组织,分别是美国的机翼电器公司(简称GE,还有美国的电报电话公司ATMT的贝尔实验室(简称Bell),以及麻省理工大学的人工智能实验室(简称MIT)。
这三个组织联合起来去研发一个比批处理系统功能要大得多得多的多任务多用户系统,功能很复杂,技术很先进。
当时都是用汇编语言来开发的,汇编语言后面我们还会讲解到。
当时机翼电器也好,贝尔也好,还有MIT也好都贡献了大量的年轻的杰出的计算机科学家们来负责这样的一个项目,而且这个项目后面所提出的功能基本功能已经实现了,能够运行多个进程,多个程序,而且还可以让多个用户同时去使用。
那时候的机器都比较大,还没有出现PC机的,当时把它称叫Mainframe,可以把它称叫大型机,但是它也不是我们现在理解的大型机,它的性能是很差的,比你现在的一个智能手机的性能估计也强不了多少,但是体积庞大,所以把它称叫Mainframe。
把它称叫大型机并不是意味着性能好啊,在这样的系统上他们使用汇编语言进行开发这么一个系统,基本功能也实现了,这帮人给这个系统起了个名字,因为是多用户多任务,叫做Mulitcs。
可以体现这个系统的多用途的计算,后来这个系统的基本功能虽然已经完成了,但是他们却没有停下来的意思。
因此这三个组织在不停的为这个系统扩展一些或新的功能。
这个时候由于他们已经失去了最终的目标是什么了,因此有些组织就已经不再有兴趣了。
比如说机翼就没兴趣了首先退出,而后是贝尔实验室退出,只留下MIT(麻省理工学院实验室)仍然在研发。
Mulitcs后来还是非常成功的,据说福特汽车公司使用maticus到2000年以后才下线。
从这个角度来看这个系统还是非常成功的。
当时为了能够参加这个项目贝尔实验室招收了大量的年轻的科学家来参与这个项目。
但是大概在71年的时候贝尔实验室就退出了。
一退出当时很多工程师就空闲起来了,这其中就包括一个成语叫ken的人,这个人当时为Mulitcs这个系统的研发了一个Space Travel游戏,我们称叫太空旅行,其实现在看起来是很丑陋的,而且当时也基本上能使用非常简单的飞机的图形卡,显示一个飞机能够发炮弹能够把外来的入侵者外星人击落之类的大概的小游戏,比较low,但在当时却是一个创举,而且它只能运行在Multics上。
由于贝尔实验室退出了这个项目,因此ken无法再免费使用Mutics提供技术能力,他的游戏无法运行了。
没地方可运行让他很郁闷,所以他回到贝尔实验室以后向领导申请让领导给他一台机器,让他运行Multics,让它能够运行他的小游戏,但是运行Multics是不可能的,因为要想运行Multics必须得花钱去购买才可以,而且只能装在了当时他们所开发的主机上。
因此ken就想申请一台主机,自己再重新进行研究。
大概已经到了1972年左右,这里我们还不得不说一说PDP系列的主机,大家应该知道大概七几年的时候,最著名的生产计算机的公司除了IBM之外还有另外一家公司叫DEC,我们称为叫digital equipment corporation数字设备公司,简称叫DEC。
这家公司当时生产的主机都是一些著名的小型机、中型机还有大型机。
它的有些小型机系列是比较受欢迎的,主要有两个,一个是就是pdp系列,一个是vax系列,pdp系列到1972年的时候大概主流版本是PDP-11是他的版本号。
当时ken就申请希望贝尔实验室的领导给他提供一个PDP-11供他进行研究,当然PDP-11当时卖个几十万美元是很轻松的,所以这些领导们肯定是不批了,ken这个人就很郁闷,所以就心情落魄的流浪在贝尔实验室,某一天,在一个墙角布满蛛网的地方,在一块破布之下他发现了一个非常非常破旧的计算机,是台PDP-7,跟PDP-11差了4代。
是一个非常落后的主机没人用,他却如获至宝,反正不用也是不用,待着也是待着,所以拿着PDP-7开始研究他的space travel。
space travel是个应用程序,前面说过很多次,应用程序要想运行必须要依赖于操作系统的内核。
Multics研发本身就是基于内核这种层次来进行完成的。
因此不得已ken只好自己开发一个内核,模仿此前他对于Mulitcs的理解开发一个最简单的能够运行起来他的Space Travel。
没想到他还真成功了,所以他的Space Travel运行起来了,很开心在Bell实验室到处炫耀,向大家去推销他的游戏。
但让他更为郁闷的,是没人对他的游戏感兴趣,大家都对他的这个系统感兴趣。
但很遗憾的是,当时他在PDP-7上开发这个系统是用汇编语言写的。
汇编程序是跟硬件平台紧密结合的,所以在PDP-7上开发的系统想运行在其他系统是不行的。
因此在别人的要求之下,ken不得不又重新将他的程序移植到其他系列的主机上,最后也移植成功了,运行还不错。
所以此后一年,他的这个系统风靡贝尔实验室,后来他的一个同事将他的这个系统起名字叫做Unics。
为什么要起他的名字呢?因为当时他的这个系统的功能非常简单,这表示唯一的叫做Unics,Unics和Mulitcs本身就是相反的意思,Multics表示多项多样性的。
只是后来才给它改名了,把cs改成了x,叫做UNIX。
当然这个时候我们的Unix依然都是使用汇编语言所研发的,性能比较不错但是移植起来比较困难,为了能够扭转这种劣势,当时ken的一个同事,也是一个非常著名的年轻的计算机科学家叫Dennis M.Ritchie,我把它称为叫Dennis,Dennis看到了ken在这里没事就不停的移植系统,他就突发奇想希望能使用高级语言来重新开发UNIX,这样子我们只需要使用不同的编译器在不同的平台版本上进行编译就能够完成UNIX的移植了。
因为高级语言对于底层硬件的依赖程度是非常低的。
C语言说是一种高级语言,其实也兼具低级语言的特写。
当然Dennis在有了这种想法以后和ken两人一商量还不谋而合,于是Dennis在对当时的一个叫做BPBL语言,我称为B语言。
B语言是一种脚本语言,后面讲到linux shell脚本开发的时候会给大家解释什么叫脚本语言,什么叫静态语言。
他对B语言这种脚本语言做了一次改进给他引入了静态变量以及引入了指针等额外的其他机制,使得b语言摇身一变成为了一种语言,叫c语言。
C语言就在这样两个年轻人的手中诞生了。
而后 Dennis和ken完全使用c语言重写了整个unix。
这在当时是非常胆大的举动,因为高级语言的运行效率比汇编语言要低至少30%。
因为当时的计算机硬件速度是非常慢的,那这就意味着他们改写后的Unix性能比较差,但是他们准确的遇见未来计算机的运算能力的发展绝对是日新月异的,而且可以强大到忽略这种差异。
所以他们就没有犹豫的将Unix完成编写。
1974年以Dennis为第1署名和ken为第2署名,他们在美国计算机通讯杂志上联合发表了一篇论文,就来讲述了他的Unix这个操作系统。
计算机通信杂志每年都会举办一些一些年会来聚集来自全球各地的计算机科学家研讨当今的计算机发展趋势等等。
来自于很多高校或者科研机构的人对他们这篇论文当中所描述的这个系统都非常有兴趣,所以期望获得一份去学习和使用。
不过贝尔实验室属于atmt就是美国电报电话公司,现在已经被分拆了。
在美国反垄断法裁定当中裁定当时ATMT不能销售除了电报电话以外的任何商品。
不但不能销售,别人要你还得给而且是无偿提供。
所以当别人向Dennis和ken索要Unix的时候,他们不得已只好无偿向他们提供这些,获得者包括许多科研机构和大学,比较著名的像美国加州大学的圣巴巴拉分校卡耐基梅隆以及美国加州大学的伯克利分校等等,在当时都非常非常有名。
此后几年大概到1976年的时候,美国对当时的工程师有一个非常好的福利,如果你做出了巨大贡献的话都会有年休给你放一年假,工资照常发,爱去哪玩去哪玩。
ken在1976年就到了美国加拿大学伯克利分校去任教,在此之前加大学伯克利分校就已经获取了Unix的源代码在研究。
当时有一个著名的学生这个研究生叫Bill Joy,他成立了一个叫做BSRG的团体叫做操作系统研究小组(伯克利 system research group)简称为BSRG。
这么一个研究小组就专门负责去研究Unix,给他改进修复BUG提供新功能等等,而且研究工作进行的如火如荼。
1976年ken加入了伯克利,所以在伯克利任教这段时间里使得伯克利几乎成为事实上Unix的研究领头羊,此后不久美国军方的阿帕网络兴起了,而此时他们就需要一种协议能够在这个网络上传输数据报文,而这个数据报文协议的研究,他们不期望在一个封闭的系统中来实现,而当时Unix以及BSRG正好符合阿帕网的要求因此他们把这个任务就交给了Bill Joy所领导的这个小组。
后来不久包括像TCP协议中的拥塞控制等各种功能都诞生在了Bill Joy所领导的BSRG团队所研发的Unix这个版本上,后来还研发了各种新功能。
BSRG把他们研发的成果柔和成了一个单独的独立的操作系统向外进行发布,并且给他重新取了个名字叫做BSD,叫做Berkeley system distribution(伯克利系统发行版)。
而贝尔实验室当时他们内部的那个原生的Unix也有名字,就叫操作系统System,后面有他的版本号 v.。
后来贝尔实验室被拆分了,从此贝尔实验室不再受不能销售操作系统的约束。
事实上 BSD发行出来以后,BSRG就开始卖钱了,而且从中谋利益甚多,这个时候已经引起贝尔实验室不满了,我这里不能卖钱,他那里却卖的如火如荼,赚了一大笔钱,所以很是不爽。
因此当贝尔实验室被分拆出来以后就迫不及待的就将Unix商业化开始卖钱,而且收费非常高,一个授权要4万美元。
可以想象下在当时4万美元是多大一笔钱,没有几乎没有多少公司能买得起的。
不但如此,贝尔实验室还跟BSRG打起了官司,到底谁是正统呢,谁该卖谁不该卖,BSRG要不要赔钱给他呢等等。
这官司一打打了10年之久,旷日持久,甚至于有些程序员也不屑于再继续做研究,甚至有些程序员在两个阵营之间来回倒戈,盼来盼去的反正是非常热闹了10年,那Unix就在这这种场景下到此为止。
Unix的发展其实已经陷入停顿状态或者停止状态。
自从Unix可以开卖之后,大概就81年的时候,美国西亚图当时pc兼容机好像已经诞生了,当时在美国有很多公司,尤其IBM公司就开始生产PC机了。
但是还包括康柏公司也开始生产PC机。
任何一个计算机如果没有操作系统是没法用的,而Unix当时是只能运行在PDP系列主机上。
始终没有往PC兼容机上移植,为什么呢?当时的pdp用的是M68K的CPU,但是当时的PC兼容机用的都是英特尔的8086、8088、80286等一系列CPU。
在当时的程序员看来英特尔所生产的CPU非常丑陋,编程语言界面都非常丑陋,而且性能很差,所以这些Unix程序员是不屑于把Unix运行在PC机上去的。
但是PC机也需要运行起来,于是当时有一个美国的教授就开发一个系统叫CP/M。
买一个pc机大概需要两三万美元,买一个cpm大概也需要两三万美元,要想使用pc机需要6万美元,所以这不是一般家庭能支付得起的,生产计算机的IBM公司和康柏公司肯定希望他的计算机能够卖得好。
想如果能够不再花那么高昂的代价去买操作系统的话,使用用户应该会多起来。
因此他们这时候就迫切的有这么一个需要,找一个非常廉价的解决方案。
81年的时候,在美国西雅图一个小公司叫做Microsoft成立了,他们成立的时候一共有3个人,大家知道那三个年轻人的故事。
他们成立公司之后当时也没什么事可干就卖BASIC的编译器。
BASIC语言当时的一种脚本语言,类似于b语言一样,第二就是包装发行卖UNIX,他们把Unix还起了很奇怪的名叫Xenix。
但是他们卖Unix的这种热情没有持续太久,因为比尔盖茨的一个好友好像叫bob,bob的一个好友当时也在美国西雅图的另外一家公司小公司上班那家公司也有很多台PC机电脑,他们也需要操作系统,他们公司其中有个程序员非常牛,仿照CP/M写了一个能够运行在pc机上的一个小系统,大概用4个星期的时间就写好了,比尔盖茨敏锐的发现了这么一个商机。
于是利用他母亲是IBM公司董事会的董事,利用他母亲的关系找到了IBM公司的董事长沃森。
然后跟沃森谈说我这里大概有这样一个系统,可以装在你们PC机上,以前人家都要大概卖一个系统要两3万美元,我这里不是这样卖给你,我卖给你授权,卖给你许可证,你装一个只需要给我几美元就可以不需要太多。
当然看在比尔盖茨母亲的面子上,再加上他的系统挺有前景的,沃森就答应了他,双方合同签订。
其实这个时候比尔盖茨尚未获得任何一个可以使用的操作系统。
与此同时他让他的好友bob去找到这个小程序员,试图去买断这个小程序员所开发的仿照CP/M开发的系统,而且出价5万美元。
当这个程序员肯定觉得这帮是疯子,四个星期开发的程序居然对方要出5万美元来买断,于是双方很快交易达成。
所以比尔盖茨花了5万美元一手托两家从小程序员那里买了一个系统,然后转手就卖给了沃森,然后他和bob两个人在获得了这个系统以后敲敲打打把这个系统改了改,就成了DOS系统。
接下来的故事大家应该都了解了。
没想到PC机在后来随着技术的发展卖出了上百万台,他的DOS也获得了千万美元的利润,DOS叫做Disc Operating System,所以叫磁盘操作系统。
当然DOS个单用户单任务的系统很容易崩溃,用起来很不好。
当然在当时来讲已经是相当好了,只不过这种好的现状自从另外3个年轻人其中一个年轻人的领导者叫乔布斯jobs创立了另外一家公司以后就破灭了。
乔布斯那三个人创建的公司当时看着pc机大卖特卖,他们也决定去生产PC机,当然不是像IBM一样的pc兼容机。
他们是根据自己的需要去研发一个性能比较强的超出于当时PC兼容机的系统,并且乔布斯非常崇拜计算机科学之父图灵,图灵是个同性恋。
因为他是同性恋在当时不能被接受被监禁起来了,所以图灵羞愤之下咬了一口抹了青化钾的苹果死了。
当时大概41岁,不得不说是一个悲剧。
但是乔布斯是非常图崇拜图灵的,因此他的公司就命名叫苹果,而且是咬了一口的苹果就这缘由。
当时他们所生产的苹果机,系统恐怕也未见的多好,当时卖的是apple1,apple2这种类型的。
到apple2型的时候,性能已经非常非常强大了。
乔布斯他不是一个程序员,也不是个计算机研究员,只不过他的朋友当中有一个是做技术的而且做的相当不错,只不过后来被乔布斯威逼之下利用各种恶劣手段逼出了公司。
虽然乔布斯后来也被逼出了公司,但是后话了我们就不说。
在这期间,他的apple1型卖出了很多份,因为他比DOS还要好用。
他当时在他的PC苹果机上装的是Unix,当时的Unix界面已经比DOS界面要好看的多,但是他的苹果机用的CPU不是英特尔X86,而是power CPU,所以他的性能比较强大,但是也非常非常贵,比PC兼容机要贵很多这个时候乔布斯已经成了百万富翁了,因为卖出来很多份apple1,后来乔布斯有一次利用他的这种各种关系,曾经去游荡过施乐公司的实验室,施乐就是打复印机的意思。
它是生产复印机的非常有名的公司施乐公司有一个实验室叫PARK,PARK实验室里边他的研究人员在当时Unix基础上研究出来世界上第一个鼠标,可以点击操作的鼠标,而且在这鼠标的基础上,研究出来了世界上第一个能够基于图形化操作的操作系统界面。
但是施乐公司的领导却如玉蛇蝎一般,看这个东西是个不祥之物因为他知道一旦这个东西卖出去了,他的复印机就没人买了,大家都对着一个屏幕去操作起来,而且还那么直观,也从来不用打印机了。
所以领导们虽然看到这个产品,但是决定弃之不用,而且绝对要把它打入冷宫。
当乔布斯偷偷的溜进这个实验室的时候,当他发现这个产品的时候敏锐的感觉到,此物20年后必然大行于天下,哈哈哈,所以他找到了施乐公司的领导说能不能卖给我一份。
当然这些领导本来就很嫌弃这个功能,所以以非常低的价格卖给了乔布斯,乔布斯拿回去以后立即组织他的秘密团队开始研发,后来apple2型出现的时候,他的图形操作系统就已经出现了,当然这对另外一个人来讲无异于当头一棒,那就是比尔盖茨了。
他的DOS还有谁要呢,所以比尔盖茨使用各种手段接近乔布斯,大概意思就说你的这个团队那么繁忙,可能研究呢也不尽如人意,你看能不能让我的团队也帮你进行研发将来研发的成果都是你的。
比尔盖茨凭借他三寸不烂之舌终于从乔布斯这里骗走了一份,于是回去他们抓紧时间研究。
他们研究完成后当乔布斯发现的时候,比尔盖茨已经将他的系统重名成了另外一个名字叫windows,而且不但如此,他们还撬走了本来打算购买apple的另外一家PC机生产商。
这让乔布斯大为关火,骂比尔盖茨是小偷当然此时比尔盖茨告诉乔布斯,你能够从我的系统找到你的系统的痕迹吗?找不着,因为他拿走的系统没有获得核心代码,而是在DOS的基础上进行重新二次研发的,所以看起来跟apple的系统已经完全不一样了。
虽然概念理念是一样的,但是我们知道DOS本是单用户单任务的,他的资源管理机制本来就很拙劣,所以windows在上面跑起来虽然很好看,但动不动就蓝屏。
这让比尔盖茨非常恼火,但不管无论如何乔布斯的系统是封闭的,要买硬件软件一块买,跟大家现在买苹果的手机是一个道理。
但是比尔盖茨是只卖软件,卖licence许可证。
所以当他windows出现之后,尤其windows1.0出现之后,卖给了许许多多的公司。
有买他DOS的这些公司包括IBM、甚至包括康柏公司。
比尔盖茨此时又赚了个盆满钵满。
到windows3.0的时候,就是里程碑式的发展,到95的时候更是如此。
当比尔盖茨赚了个盆满饱满腰缠万贯的时候,Unix还在打仗打口水仗。
所以当他们意识到在他们俩互相内耗的时候突然间发现一个小弟已经成长为庞然大悟,所以决心洗心革面两家握手言和共同来阻击MicrOSoft。
但为时已晚,这时候的微软已经长大了,而且大到他们已经无法撼动,所以二者追悔莫及。
这个时候Bell实验室采取了一种非常开明的做法,不再纠结这个版权了,只不过告诉BSD,把你的系统中原有的属于我的代码通通移除,你爱怎么玩怎么玩,再也不告你,再也不打口水仗了。
这个时候BSD这样一个操作系统研究小组的任务也已经完成了,所以BSD宣告解散。
但是尽管如此,BSD的很多子分支,那些不甘不乐意放弃的那些程序员们仍然重新组织起来去研发BSD。
这其中包括著名的比如FreeBSD,OpenBSD,还有NetBSD等等。
FreeBSD主要专注于运行在PC机上,OpenBSD主要专注于安全,NetBSD主要专注于服务事实上苹果公司后来所发展的系统,它的apple2以后很多系统的核心是unix,迄今为止苹果操作系统的核心仍然都是FreeBSD的内核。
前面提到过,大概在八几年的时候,引领BSRG的是Bill Joy,Bill Joy在他的BSD研究的基础之上,再加上当时斯坦福大学给他们这个小组贡献了一个非常好的设计的精良的、性能强劲的CPU指令级。
所以在八几年的时候Bill Joy联合另外两个人成立了一家公司,叫Sun MicroSystem 。
Sun公司生产当时的工作站被称为叫WorkStation,比小型机要轻量级,但是性能也绝对不差,况且有自己独立的操作系统,当时叫做Sun OS,说白了其实就是一个BSD。
由于BSD和Unix打仗打口水仗,为了避免官司缠身,Sun公司也转而从BSD使用Unix,就是贝尔实验室的Unix。
从此以后他的这个Sun OS也改名了,叫做solaris。
所以这是个正统的Unix,只不过他是商业版的,只能运行在Sun公司自己的硬件SPARK上的Unix,经过特殊优化的Unix。
事实上Sun公司为我们的计算机科学的发展贡献了许多著名的产品,比方像目前来讲使用最广泛的开发语言Java,还有他的硬件平台SPARK,非常著名的操作系统之一solaris等等,非常非常强。
但是技术在强如果不会运作的话很可能仍然是逃不了最后沦落到被人收购的命运。
Sun公司2009年被oracle收购。
卖了多可惜,本来Sun公司其实非常非常牛的,有希望可以抗衡IBM的,就是运作不慎。
之所以要说到Sun公司,是因为Bill Joy在当时为我们的Unix还引入了另外一个非常重要的程序叫c shell,叫csh,这是一种兼容c语言风格的shell。
shell是什么?之前提到过的外壳程序。
所以使得BSD非常流行,csh也是绝对是功不可没的。
继续说微软,微软公司有了windows 95以后,让比尔盖茨有一个梦魇,那就是他的系统经常蓝屏,尤其是比尔盖茨在大众广众场合做示范的时候。
windows也不可避免要蓝屏,这让比尔盖茨大为光火,希望引入力量继续去能够完善他的windows。
但是windows 95 98本身是基于DOS本身,就是挥之不去的梦魇,所以这毛病是原生的,除非把它推倒重来,不然的话这几乎是无法消除的先天性缺陷。
那如何是好呢?前面说过有个叫DEC的公司,DEC公司其实挺惨,后来因为经营不善被康柏收购了,尤其是他的PDP和VAX两个小型机系列。
其实他们当时系统卖的挺好的,但是自从Unix出现以后,这个界面将不复存在这种局面。
因为很多客户都非常青睐于使用Unix,不愿意使用他的系统上自带的操作,自带的是vms,这系统也不错,但是很多人更乐意使用研究的非常火的被大众广为接受的Unix。
大家知道一个技术越流行,那么招一个相关的技术人的成本就越低,Unix正是如此,而vms是专有系统,所以会的人不多,招一个技术人员的成本也很高,这这商家都不愿意要。
要知道市场主导一些,所以这些商家在购买VAX要求必须要装vms不装不卖,DEC公司开始是不买不卖,但后来发现不卖不行,于是wax后来就开始装Unix。
已经售卖了,但尽管如此,DEC公司最后还是没有逃脱下滑的局面。
所以后来被康柏公司收购了。
当VAX不再使用vms以后,那vms研发团队何去何从呢,就被打入冷宫了没用了,当然这个时候比尔盖茨看见了,因此比尔盖茨此时就找到了这个vms的领导者,把他引入微软公司,在vms的基础上去改进他的windows,当然这个家伙把他的队都带到了微软公司,而后在vms的基础上结合windows的运行界面重新生成了另外一个新版本的windows。
但是这个新版本windows是在vms的基础上打补丁修补等完成的,依然复杂不已,依然不是很稳定,但比起来windows 95 98已经好太多了。
比尔盖茨如获至宝,他们的系统也改名为叫windows NT,这个大家应该听说过。
诞生了当然新一代windows,内核已经不再是DOS,而是vms,比之从前已经好了很多,而且他的NT版也引入了server的功能,因为vms本身就有server的功能。
windows的很多server配置起来都是下一步下一步来完成的,是他的核心、他的配置文件等等都完全类似于Unix,因为vms在一定程度上也是跟Unix十分的相近。
后来的windows XP 2000大家都认识了吧,它们都是在NT的基础上进一步发展而来的。
但尽管如此,尽管windows是个图形界面,但比起了苹果公司的图形界面。
那windows绝对是丑陋不堪的。
所以比尔盖茨为此还是苦恼不已,一心想让他的windows看起来更漂亮一些。
但是,他在当时无论吹嘘的多么灿烂的技术都是人家3年前甚至5年前弃之不用的技术,到今天为止这种现状依然在持续。
苹果公司的很多的强大的技术,包括他的绚丽的这种界面都是依靠强大的硬件计算能力来实现的。
像现在很多的这种图形工作站,就专门处理视频图像等程序的一般还都是苹果机。
再绕回来,大概9几年的时候,当我们的Unix商用以后开始卖钱了,很多原来的科研机构或者高校就不能再免费使用Unix。
这包括当时荷兰的一所大学有个教授叫Andrew,这个教授他一直在使用Unix进行教学,但是Unix不让用以后他也很是恼火,很是觉得不爽。
他也决定能够仿照Unix自己再开发一个操作系统来进行上课用。
于是另外一个系统诞生了,叫做Minix。
跟Unix系统完全相像,但是体积要小的多,刚开始时候大概只有4,000多行代码,后来已经非常复杂了。
那Andrew就拿着他这个系统在欧洲各地教学。
Andrew有一年跑到了芬兰赫尔辛基来教学,他的Minix是开发在自己的主机上的,很多地方都是用汇编语言写的,尤其是驱动程序。
因此他的学生们学习Minix的时候要装在自己的主机上,不得不自己手动开发驱动,这让很多学生不爽,尤其是如果我们俩的硬件一样,都得自己各自开发一次。
所以有些非常牛的学生,专门给他的系统写了很多驱动,跟着教授谈,希望能够直接把他驱动加到系统里边。
老教授非常固执,不让加不让外来代码污染我的系统,所以让学生们很是不爽。
这其中包括赫尔辛基大学的一个学生叫做Linus,Linus也不爽了,当时Linus的外公好像是芬兰的就像中国的信息工业部的部长,在李纳斯过20岁生日的时候给李纳斯送了一个80386的PC机,他当时在他的机器上好像装了个什么U04系统,当时不让他用了,因为版权问题所以装了Minix。
装Minix老教授又这么固执。
因此他也决定自己写一个,于是花了几天时间捯饬了一个系统,并且把他的系统公布到电子公告牌上。
后来至于名字为什么叫做Linux了,这个至今也没人能说得清,反正是后面的s就变成了x了,可能为了跟Unix相像吧,名字就这样来了。
而且他在电子工作栏上说我最近写了一个小系统,跟那老教授不一样,我的系统是随便任何人改的,你可以根据需要往里面加任何内容,你只需要把你加的内容给我一个反馈,告诉我你加了什么功能。
正是他的这种思想使得Linux在全球迅速流行开来,当然这是个历史契机,并不说linux天生就具有这么强大的生命力,而是在Unix商业化的时候。
80年代在美国麻省理工学院有一个著名的教授叫Stallman,他认为程序是全人类的思想的结晶,而不应该为某一个流氓公司所独有,所以他举起了自由的大旗叫做freedom。
他倡导软件应该公开给全球使用,谁也不应该把这个软件自己封闭,而且拿来去卖钱。
像微软或者像Unix一样,不但如此,很多的程序员也都非常赞成的这种做法,因此全球的很多的黑科技的人物都纷纷支持Stallman,宣告支持Stallman。
为此Stallman专门成为了一个组织叫做GUN。
为什么GUN说他不是Unix,因为Unix商业化了,它不是商业化,所以他发出了程序界的共产主义运动,他认为程序是共产GUN。
组织这种运动也需要一种宣言,那凡是遵守这种宣言的都可以加入到我党的。
所以他们也需要一个宣言因此gpl诞生了。
gpl就相当于共产党宣言,而GUN就相当于一种运动共产主义运动。
那gpl指的是什么,叫general public licence,我们称叫通用公共许可证。
任何人开发的软件只要说自己遵循gpl协定,那么就认为他的软件是自由软件,任何人都可以自由获取自由修改自由学习自由安装使用,这叫这叫gpl。
用他的GUN运动和他的gpl宣言,受到全球很多组织的和个人的支持。
他们纷纷为GUN贡献自己的力量。
Stallman这个人发起的GUN运动受到了很多人和组织的支持。
Stallman当时研发了很多非常著名的产品,比如说像Emacs,这是非常非常著名的一款文本编辑器,在Unix上非常流行。
还有像gcc,叫GNU C Complier GUN的C编译器。
之前也有提到过编译器是将语言转换成计算机可以运行的程序的二进制格式的,gcc就是这个东西。
当然你可能觉得gcc不就是个程序吗有什么好的,到今天为止中国仍然没有自己像样的C编译器。
你可以想象一下gcc有多牛。
一个好的变音器几乎决定了绝大多数程序的运行效率。
但是不管这些人怎么去运行提供这些程序,这些程序还得运行。
之前说过程序必须要运行内核上,你看你不用linux,你还离不开Linux,这好像是莫大的讽刺。
所以这帮人很郁闷,就要求Stallman给我们提供内核吧,我们是时候该独立出来了对不对。
Stallman也满口答应,但是一晃5年过去了依然没有什么东西。
恰好不早不晚,它们相遇了。
所以当Linus的Linux诞生那一刻起,他就很好的跟GUN组织所需要内核这样一种现象达成了一种天造地设、珠联璧合、海枯石烂、山无棱天地合。
大概就这种机制,所以二者一相遇就是惊天地泣鬼神的。
那因此用了Linux这个内核从此以后gcc Emacs等程序再也不需要运行到Unix上了,更重要的是Linus宣布自己加入GUN组织,也就意味着Linux本身就属于GUN,也遵循gpl协定。
所以从此以后GUN组织有了自己完整意义上的操作系统。
所以我说linux出现是一个非常好的契机,使得它才发展起来。
但是更要明白Linus所提供给我们的linux只是内核,它本身不是应用程序,它甚至没有一个通用的库glibc,gcc是它的编译器,利用gcch和glibc它也能够移植过来很多其他的软件。
比如说bash,GUN组织还有另外一个著名的软件叫bash,一个命令行界面的shell。
因此Linus在他的Linux诞生以后,他使用gcc编译器给他系统上移植了一个shell,使他的系统能够跑起来了。
他向全世界宣告说,他Linux诞生的时候,这无疑给全世界的这些黑客们注入了一个兴奋剂。
使得这些黑客们迅速的团结在linux的周围,为linux开发诸多应用。
所以短短几年的时间大概这个是91年,Linux的内核版本是0.1,而到94年的时候1.0就诞生了。
而1.0诞生出来的时候Linux已经能够完全基本的跑在很多主机上。
尤其是PC机上,X86系列的PC机上。
此后又通过全球各地成员的不懈努力,它们被移植到了各种平台上,几乎都能跑起来。
所以说当提到linux的时候大家应该明白它只是个内核,而完整一个linux操作系统叫做GUN linux,因为GUN提供了各种外围软件。
这也是Stallman所期望的名字,只不过大家都知道linux不知道GUN,这样Stallman很长一段时间落寞不已,到今天为止当别人说linux的时候,大家只知道Linux不知道GUN。
大家需要了解的是无论是GUN的软件还是linus的内核。
他们都是源代码,什么源代码?使用c开发的程序就是。
之前也说过,任何程序语言所开发的程序要想运行起来都得编译对吧。
得编译成二进制,编译成二进制0101代码,只有编成01代码计算机才能识别,然后才能运行这个程序。
但是能有多少人有这种能力去编译?要编一个程序,我们必须要借助一个很好的已经能够运行系统上面编辑器才能编译程序,但是更重要的是,编译必须要两个平台完全一样,也就意味着我编译之后,期望编译后的程序想在X86C上运行,那必须要在X86上面编译。
我们如果不得不必须要进行编译,在A CPU上变异再B CPU上去运行,这种变异我们称叫交叉变异。
但这要麻烦的多,尽管都是二斤制,尽管甚至都是英特尔的CPU。
在英特尔系列的酷瑞CPU上编译出来的程序,未必能在奔腾上运行,因为CPU所制的二进制格式也各不相同。
而这种格式我们把它称叫ABI,应用二进制接口 Application Binary Interface。
所以如果某一个CPU所知的性特性比另外一个CPU多的话,他们仍然是无法直接交叉的。
当然一般来讲你在奔腾的编译,在酷睿上运行没问题,因为酷睿是向后兼容的,兼容老的产品。
Linux通过以源代码的方式向全球的使用者来公布,谁能够编译出来呢?不能编译linux根本用不成。
就出了一些第三方组织,这些组织就专门负责去编译类似内核和各种外围应用程序,并且将他们打包发行成为一个可安装的便捷的Linux。
后来直接做成二进制向外打包发行,而这种组织就包括1993年成立在美国北卡罗来纳州的Redhat。
当然也包括91年诞生最古老的叫sls,还有92年左右美国的大学生Debian还有德国还有3个大学生组织起来研发了另外一个系统叫SUSE,或者发行另外一个系统但是redhead也好、sls也好、SUSE也好,他们本身都不是Linux的开发者或者都不是Linux本身的拥有者。
他们只是负责将源代码格式的Linux,在通用的计算机平台上编译成通用格式,使得其他人拿到以后可以在大多数硬件平台上安装并使用的。
其他用户不需要再编译了,所以这些人被称为叫Linux的发行商,Release就这个发行的意思。
所以内核是由Linus维护的,软件是由GUN组织维护的,而redhead也好、Debian也好 SUSE也好只是负责包装发行,只不过他们在各自包装发行过程当中,加入了自己对一个操作系统的理解,加入了自己对于某些参数的调整,加入了自己的公司的LOGO,使得linux看起来各不相同。
事实上内核一样,软件一样,可能就面部不一样而已。
这是几个著名的发行商,但是大家要明白,无论你怎么发行,都必须要将软件编译成二进制的文件。
比如说我们redhead不仅有内核,也需要各种外围软件,而假设GUN提供了两万个外围软件,不能说让系统一装把这两万个都装上去,或者说某一个我装上去了,我想把它卸掉怎么办,早期这些软件都是直接被打包的一块进行安装的,这不便于软件包的单个管理。
因此他们也希望能够提供一种在整个系统上专门用于管理软件的管理器。
著名的Debian就提供了一个著名的管理器DPT,后来redhead就模仿debit研发了另外一个叫rpm,这是模仿的叫做rpm,叫红帽软件包管理器。
从此有它以后这些软件包都能够有这个管理器进行管理,可以方便的实现卸载,查询升级,安装教验等各种功能。
好了,操作系统的发展历史就介绍到这里了。