计算机操作系统发展历史:


  为了解决穿孔机时代CPU在同一时间只能处理一个程序(批处理和脱机批处理)的问题,GE(通用电气),MIT(麻省理工学院),AT&T(美国电话电报公司)的Bell实验室共同研发了多用户、多任务、多层次的多用途通用系统——multics ,由于MULTICS比较昂贵和巨大,工程师们迷失,不知道该往哪个方向发展,导致GE、MIT退出,只剩下AT&T,Bell实验室习惯了使用multics,所以做出了multics运行

在mainframe,通过分频器,多个用户使用同一个计算机mainframe,假如Bell实验室的工程师从AT&T脱离出来,就不能使用了,而实验室的的ken有一个游戏space travel,要运行,就得自己有一个个multics,然后当时计算机很昂贵,所以ken在bell实验室发现了一台淘汰的PDP-7(DEC公司生产),并且使用汇编语言写了一个小系统,由于系统比较小,比较简单,所以他同事给系统起名为unics(单一的),并且其他同事对这个系统很感兴趣。

   由于计算机的程序和计算机的CPU是密切相关的,所以在PDP-7上开发的系统不能再PDP-11上运行,因为CPU的针脚不一样,所以要运行,必须进行重新编译(代码移植),ken在研究激光照排系统时拥有了PDP-11的使用权,所以Unics流行起来,引起另外一个同事的注意,对其很感兴趣,所以一起和ken研究,最后简化重命名为unix,由于多次移植很痛苦,所以把B语言进行升级,升级后命名为C语言,用C这个高级语言重写Unix的源程序,只要有编译器,就可以根据不同CPU编译源程序之后运行在各种计算机上。1974年,这两人在杂志上发表了UNIX,所以很多学计算机的人很感兴趣,由于UNIX属于AT&T,然后AT&T被美国政府反垄断法裁定,不能销售电报电话意外的任何商品,所以KEN在别人要UNIX系统的时候要一笔邮费,别人可以学习,并且很多其他人对其研发了很多新功能。1976年ken到加州大学伯克利分校任教,当时该学校已经拥有UNIX代码,并且有个小组(BSRG)专门研究UNIX,并且引进了很多新特性,加上其他人研发公布出来的新特性,研发了一种人机交互的接口csh,该系统叫做BSD(伯克利分校分发版本),并且进行销售。1980前后,Bell实验室再次由于反垄断法从AT&T分拆出来,就开始销售自己UNIX的System V系统(4W美元),由于版权法和昂贵的价格,一些人不使用System V,导致Bell实验室和BSD打起了官司,差不多十年。

   当时,其他公司也看到BSD的利益,也自己打包UNIX开始发售,包括SGI、IBM(AIX)、SUN(solaris)、HP(HP-UX),当时在西雅图有家公司叫microsoft,也卖UNIX,叫XENIX。当时IBM已经有了PC机,使用inter80286的CPU,并且很丑陋,UNIX不能再其上运行,而当时UNIX的系统都使用摩托罗拉的CPU,M68000。IBM的PC机没有系统使用,而当时比尔盖茨的一个联合创世人的一个同学仿造称作PL/M的操作系统,花了四周时间研发了一个系统,这时比尔盖茨通过其创始人花了5W美元买了这个操作系统,比尔盖茨的母亲是IBM的董事会成员,所以通过他母亲找到IBM,向IBM卖许可证(license),一个license5美元,并且IBM同意比尔盖斯把这个license也卖给其他生产PC机的厂商,大概一年,就赚上千万美元,并且去掉了这个系统的原有标识,打进了microsoft的标识,称其系统为DOS(Disk Operating System)。IBM研发PC兼容机的时候,美国另一个公司apple公司,也专门卖PC兼容机,它使用的CPU是powerpc,并且系统源代码是封闭的,apple机也很漂亮,powerpc系统很稳定,而且运行了unix系统BSD,所以苹果公司PC机大卖特卖,由于创始人乔布斯人格比较偏激,结果被董事会赶出了apple公司,乔布斯离开apple之后又创建了pix动画公司,后来买给了迪士尼。由于apple在乔布斯离开之后一路走低,举步维艰,又请回了乔布斯。在APPLE公司创立不久,属于施乐公司的PARK实验室研发出来了一个程序GUI,研发了鼠标。由于施乐公司是做复印机,打印机的,害怕有了GUI没人使用打印机,所以停止了GUI的研发。而乔布斯一次进入park实验室发现了GUI,向施乐公司申请,买了GUI的一份儿拷贝,乔布斯组织团队,研发GUI,使用BSD内核,研发出了称为MAC的图形界面系统。这是比尔盖茨知道了,所以就可怜巴巴的找乔布斯,买了一份GUI拷贝说回去研究学习,并且偷偷的研发。当乔布斯准备与一家公司签约的时候,被比尔盖斯挖墙脚抢走了,并且比尔盖茨给自己的图形界面系统起名叫windows。由于比尔盖斯没有拿到MAC的核心技术,只是拿到了GUI,所以windows是运行在DOS的基础上,而DOS本来很丑陋,是个单用户单任务的系统,所以windows经常蓝屏。在这期间,UNIX仍在打仗,当发现apple和windows如此强大时,UNIX悔之晚矣。

   DEC公司当时研发的是小型机PDP系列和VAX系列,VAX运行的是VMS系统,由于UNIX在小型机很流行,所以当DEC向别人销售的时候买家要求安装UNIX系统,所以DEC只好委屈的在VAX上安装UNIX,放弃了VMS系统,VMS研发团队被打入冷宫。由于windows经常蓝屏,技术不行,所以比尔盖茨找到VMS的项目负责人,并且带来了整个团队和VMS的技术,这帮人硬是把windows和VMS的核心技术结合在了一起,出现了windowsNT,并且出现了server版本,因此,也敲响了Novell公司(netware)的丧钟,因为微软服务器系统的傻瓜化和其图形操作界面,但是windows是一个补丁补起来的系统,所以系统不够稳定。在windowsNT诞生的时候,微软与IBM共同研发叫做OS2的操作系统,由于windowsNT的出现并且很火,所以微软退出了OS2的研发,结果IBM也未研发成功。当apple的界面越来越漂亮的时候,比尔盖茨又找IBM购买了OS2进行研发,即windows vista。

   UNIX闭源以后,芬兰的一所大学里面的一个教授,通过UNIX讲授自己写的一个完全兼容UNIX,并且只有4000多行代码的新系统,在整个欧洲教授其系统,此系统叫做Minix。而别人又针对其系统开发了很多驱动之类的程序,想运行在Minix上,而这个教授为了保证其系统的纯净不允许,所以这些人就很郁闷,包括自己的一个学生linus。linus20岁生日的时候,他的外公(工作在相当于中国的工信部的部长)送给其一个80386的PC机,linus安装Minix,自己的一些驱动教授又不让安装,所以就干脆抹掉整个系统,自己写了一个操作系统,放在了当时的电子公告牌上公布出去,改名linux,并且完全兼容UNIX,和UNIX很像,所以称为类UNIX。由于闭源的问题,很多人不能使用UNIX,当时MIT中第一个人Richard Stallman,举起了自由的大旗,认为软件属于大众,所以倡导自由软件运动,任何人开发的源程序,自由获取,自由改编,自由分发,自由使用。当自由软件运动发起之后,受到了世界上***的追捧,所以就开发了很多程序(比如vi、gcc等),当时由于没有开源的操作系统,很讽刺的是,开源程序只能运行在封闭的操作系统,在报国无门的时候,linux出现了,linux系统结合开源程序,迅速发展起来。但是linux不是给普通用户使用的,所以其入门很难,学习曲线比较陡峭,至许多人望而生畏,并且其好多功能普通用户使用不到,所以只覆盖在服务器领域。自由软件运动当时被称为GNU,即GNU is not UNIX。system V在和BSD打官司,收回了公开权限,并且卖license,引起了***的一致反对。此时,GNU的一些代表成立了一些遵循自由软件运动的协议,即GPL(举例,***的共产主义宣言),此协议规定遵循此协议的软件,必须要公开程序的源代码,第三方自由获取,自由改编,自由分发,自由使用,并且不能有任何商业利益,即使只是用了其1%的源码,也不能进行商业利益。由于GPL协议,很多第三方对开发程序失去积极性,所以GNU又规定了LGPL协议,此协议是GNU的妥协,任何第三方的个人或公司要使用别人的程序,在进行商业利益时,即使使用了别人1%的源码,也不能对其进行更改,但可以进行调用。GPL协议过于严苛,所以修订有了GPL V2,GPL V3版本。其他开源运动的组织倡导了其他开源协定,比如BSD也有了BSD协定,所以GNU只是开源运动的一个组成部分和重要生命军。由于BSD协定比GPL宽松很多,所以现在好多人遵循BSD协定。开源的目的是自由free,但是开源并不定是免费,开源可以自由使用,但是出现问题不进行负责,所以很多公司和作者就是卖服务。由于无论如何,程序不能跨平台运行,(除非是java和C#运行在虚拟机上的更高级语言开发),所以普通用户根据自己的平台编译程序是很困难的,没几个人能完成,因此有人专门针对不同的平台专门编译,并且专门开发一个安装程序,把二进制程序和安装程序放在一块,通过安装程序把编译的二进制程序安装到硬件上(比如一个软件有windows版本,有linux版本,有32位和64位的版本之分)。

   专门包装发行linux发行版的公司有,Redhat(Linux+GNU+安装程序)、Slackware、Debian,现金全球三大linux发行版包装公司有Redhat、Debian(ubuntu)、SUSE,其他版本都是在这三个版本的基础上二次发行、三次发行,并且添加自己的公司标识。由于这些版本遵循GPL协议,所以这些公司卖服务,如果公开的系统有漏洞,它提供补丁的源码包,不提供编译好的二进制,所以如果不买服务,则自己编译的补丁能不能打上就是问题。加州大学伯克利分校的一个人为了不使此事发生,使用这些厂家的源码包,使用相同的方式进行编译,比如CentOS,所以CentOS发行时间大概比Redhat迟一个月。由于商业利益,这些公司像windows一样给发行版里面包装 了很多自己开发的程序,所以高级用户使用纯净的Slackware和Gentoo,更高级最纯净的版本为LFS(书,菜谱,告诉你去哪里下载相关的文件),自己做linux系统,内核及每一个程序需要自己编译,当然时间需要很长,可能需要几天。这些包装公司一般的版本有ALPBA(内测版),Beta(公测版),RC(发行候选)。BSD和贝尔实验室的System v打官司之后,BSD去掉了system V的代码,最后停止开发,有***开发为FreeBSD、OpenBSD、NetBSD,System V卖给Novell公司,Novell最后卖给了开源基金会,至今BSD和System V都不存在,而IBM、HP、SUN的UNIX仍存在。现在的Android:linux内核+java虚拟机;ios:FreeBSD+objectC。


总结:

自由软件

1、为任何目的运行程序的自由

2、学习和修改源程序的自由

3、重新分发程序的自由

4、基于某源程序开发衍生版的自由

基本法则:

1、一切皆文件

2、体积渺小且目的的单一的程序

3、组合小程序,完成复杂任务

4、尽可能避免捕获用户接口

5、配置数据保存至文本文件