Unix系统发展简述
2009-09-26 18:03:54 Administrator

在1969年的8月,Ken Thompson作为AT&T贝尔实验室的程序员,由于忍受不了长时间妻儿离开于是专心开发新的操作系统,他为DEC(Digital Equipment Corp.)公司的PDP-7小型机写第一个Unix版本的汇编语言,利用一周的时间在每个操作系统上完成Shell和汇编语言编写。由于当年贝尔实验室正在做一项关于Time-Sharing系统名为(Multics)的研究,项目陷入困境导致Thompson和他的同事 Dennis Ritchie对于Multics系统整体架构存在分歧,而他们对于系统有另外的一些新看法,于是Thompson编写了第一个版本的Unix,随后他们在接下来的日子里得到了很多同事的协助。

对于一个有效的操作系统来说,互动式应用并不是需要昂贵的硬件设备来支撑。Ritchie和Thompson通过利用CACM(计算机协会)需要在5年之后做出成品系统,我们的最终目的是想让用户看到Unix系统的简单应用、操控易用等特点。很明显他们做到了,Unix系统会成为IT领域中的一个基石,因为Unix系统正在成为企业广泛部署运行服务器和工作站的重点应用系统,当然政府机构和企事业单位也正在应用,而Unix的广泛部署也超出了实际应用。1983年,Ritchie和Thompson得到了最高奖,因为Unix系统的诞生引领了未来软件设计以及项目实施的方向。

昨天——Unix系统初期

对于Ritchie和Thompson来说,Unix系统的成功并不是一夜成名,在1971年他们将Unix封装在PDP-11小型机上面,相比PDP-7小型机来说具备更强劲的系统,增加了文本格式和文本编辑。

1972 年,Ritchie先生编写了高级编程语言——C语言(基于Thompson早期的B语言),于是 Thompson利用C语言重新编写Unix系统,这也意味着OS系统通过特定计算环境实现了可移植性。利用这种方式他们针对此系统起的第一个名字为 Unics(Uniplexed Information and Computing Service),而随后为了便于拼写“Unix”正式诞生了。于是,1974年7月,Ritchie和Thompson在CACM上发表了名为“The UNIX Time-Sharing System”文章。而在此之前,Unix系统的应用仅局限在贝尔实验室中的少数用户,而如今Unix系统却成为了另外一个转折点。

“黑客”天堂

可以说,Thompson和Ritchie是不折不扣的“黑客”,利用自身的软件开发能力和解决问题的能力将“黑客”一词的含义发挥的淋漓尽致。其编写代码的做法极大地提高了大学中热爱编写代码的程序员,以及当初没有大量预算的IBM、HP和微软公司。之后Unix系统的兴趣爱好者很多,比如加州 大学的Bill Joy,Carnegie Mellon大学的Rick Rashid和贝尔实验室的David Korn等都希望利用他们的思维在Unix系统应用上有所建树。

Thompson和Ritchie在CACM文章中写到,Unix系统起初就可以实现自身维护功能。由于所有的源程序都可用并且容易实现线上修改,当我们有新的想法或者建议的时候,我们可以实现修改和重写相关软件程序等。

作为AT&T贝尔实验室的一名程序员——Korn回忆到,对于Unix系统主要特征就是内置工具可以重新实现改写和替换。对于Unix系统来说另外一个优势在于他不需要在价值数百万美元的大型主机上运行,它可以很好地在DEC PDP-7小型机上运行。另外其他从业人员也从Unix身上得到了好处,比如大学研究员可以利用Unix系统操作简单和易修改等功能实现相关教学科研工作。

今天——Unix系统发展

Unix发展是作为一个非专有的操作系统成长起来的,在1965年AT&T公司已经停止了对外提供电话业务,而是去发展软件业务,当然拥有相关的研发合理费用。Unix系统的发展没有得到有效的管理,而是出于AT&T公司作为一个兴趣项目开始实施的。

随后在70年代末期,AT&T公司实现了某种商业上的重要价值,其律师业开始涉足保护Unix系统的版权。于是在1979年发布的Unix系统第七版本中表明了授权范围,禁止相关机构在研发应用中使用Unix系统源代码。

1987年计算机科学研究教授Andrew Tanenbaum成功编写了Unix系统克隆版来用于课堂教学,在Intel 80286微处理器上实现了Minix开源操作系统应用。
因此到了1980年一共有两个版本的Unix系统,一个来自Berkeley,另外一个来自AT&T。对于Unix系统的分级带来好消息的同时也附带坏消息,好消息是软件开发商可以随时随地利用Unix源代码调整和更改需求以便更容易调整战略,坏消息是 Unix系统版本演变以及分化也较多。

在1982年,Joy联合创立了Sun公司提供了Sun-1工作站,运行在Sun OS操作系统(源于BSD版本)。一年后,AT&T公司对外公布了第一个版本的Unix System V系统,这也是后来作为IBM AIX和惠普的HP-UX大型机的基本系统。

在 80年代中期,有些用户包括联邦政府表示理论上Unix是一个便携式操作系统。1987年在贝尔实验室中的Unix系统实验室里,开始与Sun公司合作来确保Unix系统的分支结构,而合作成果产品命名为Unix System V 4.0版本。其它Unix厂商担心AT&T和Sun之间合作,各方彼此相互竞争的“标准”已经模糊,诸如X/Open, Open Software Foundation等。

在1988年没有公开发表的论文中指出,对于刚刚成立的开放式基金会,包括IBM、HP、DEC和其他联盟表示,Unix正在进入一个不断发展的市场里,同时保证了他们的更高利润。

Unix的出现未能解决系统分歧或者作为标准操作系统,但在1993年,Unix社区受到了来自微软公司的Windows NT系统(32位企业级多处理器操作系统)的警告。

明天——Unix系统未来

Unix 系统竞争版本缺乏持续的竞争性,就像运行在X86处理器上的Linux和Windows系统一样。在2009年2月发布的调查报告中指出,Linux系统作为目前大多数企业级服务器平台。Unix系统的发展有着辉煌一刻,虽然Unix系统不会消失,但是面临的压力也很大,Gartner相关分析师透露,Linux是Unix发展战略的很好选择。

但是最近的某知名分析机构表示,从211个IT专家中130个Unix使用者调查看出90%的人员都在应用 Unix 系统,而近过半的受访者表示,Unix系统是一个核心平台,我们也会在今后的应用中继续使用Unix系统,而仅有12%的受访者希望从原有的Unix系统 中迁移出来。不管Unix系统的最终命运如何,对于一个在40年前贝尔实验室诞生的操作系统如今影响到了IBM、HP、Sun、苹果公司的Mac OS X和Linux等厂商。


操作系统的种类极多,从使用场景来看,操作系统大致可以分为桌面操作系统、服务器操作系统、移动终端操作系统、嵌入式操作系统、物联网操作系统、云操作系统等类别,而Linux就为Unix优秀的继承者。

如下表所示:


那么,操作系统究竟是什么?

从本质来看,操作系统其实就是一套软件。它属于底层软件,可以说是一个大管家,专门负责把所有的硬件和上层软件(中间件、数据库、应用程序等)管理和连通起来,并进行资源调配,完成用户下达的任务。


操作系统包揽了很多底层的复杂工作,大大简化了应用软件的开发难度。比如说开发一个视频播放器,就不需要写那些底层硬件代码。它还有一个重要作用,就是方便用户使用。用户有了操作系统,就能更好地管理计算机,进行人机交互(下达命令,查询结果和状态)。

操作系统并不是计算机诞生时就有的。1946年2月,在美国的宾夕法尼亚大学诞生了世界上第一台电子计算机,它的名称叫ENIAC(埃尼阿克)。它是由大量的电子管(真空管)组成,体积极为庞大,占地170平方米,重达30吨,耗电174千瓦。在算力上,它可以实现每秒5000次的加法运算。


这种早期的计算机,既没有显示器,也没有键盘,更没有鼠标,全部都是人工操作。在使用时,专职操作员将运算信息记录在穿孔卡带上。系统启动后,读取卡带信息,然后进行运算,最后输出结果。

计算机的速度快,人的速度慢。所以,计算机经常处于等待状态,等待操作员的输入。这严重耽误了计算效率,浪费时间,也浪费钱(电费)。于是,到了20世纪50年代,开始出现了批处理系统(batch processing)。

批处理系统中,操作员把用户提交的作业进行分类,把一批作业编成一个“作业执行序列”。每一批作业,都由专门编制的监督程序(monitor)自动依次处理。

这个“监督程序”,就是操作系统的雏形。它标志着操作系统的诞生(1955年)。最早使用批处理系统的,是第二代通用计算机,代表产品是IBM的1401和7094等。


批处理虽然提升了效率,但仍存在缺陷。

例如当作业进行I/O(输入/输出)操作时,主机会等待操作完成,造成自身空闲。再例如,计算机只能同时运行一个批处理任务,效率还是太低。到了60年代,集成电路技术高速发展,我们有了更快的处理器、更大的内存、更丰富的I/O设备。同时,通道和中断技术出现,开始允许系统执行“挂起”操作。于是,就有了“多道程序系统”。

简单来说,计算机系统从串行变成了并行,可以同时运行多个任务(多个程序放入内存,交替在CPU中运行,共享硬软件资源)。多道程序系统大幅提升了计算机的工作效率。再后来,系统又支持了多个用户同时使用。于是,就变成了“多用户+多任务”的系统,称为“分时系统”。“分时”和我们通信领域的“时分复用”有点像,就是把处理机的运行时间分成很短的时间片,按时间片轮流分配给各个作业使用。再后来,技术又继续演进。终于,我们有了时效性更强的“实时操作系统”。这种系统,就非常接近于现代操作系统的概念了。


UNIX的诞生

1964年,美国电话电报公司(AT&T)、通用电器公司(GE)及麻省理工学院(MIT)合作,提出了一个超级分时操作系统的开发计划。

这个计划被命名为Multics OS。Multics是“MULTiplexed Information and Coputing System(多路信息与计算系统)”的意思。当时打算借助这个系统,打造一台能够连接1000台终端、满足300人同时在线的计算机。该计划持续了五年,并没有达到既定目标。于是在1969年,隶属AT&T公司的贝尔实验室(Bell Labs)宣布退出。贝尔实验室退出之后,相关的项目组成员就闲了下来。其中就有一个人,名字叫做肯·汤普森(Ken Thompson)。


他前在Multics上开发了一款名叫"星际旅行(Space Travel)" 的游戏。退出Multics项目后,肯就没办法继续玩这个游戏了。于是他突发奇想,打算在一台空闲的PDP-7(DEC公司生产的一种小型计算机,性能很低)上,开发一个简单操作系统,运行这个游戏。

1969年8月,肯·汤普森趁着妻子回家探亲,用了1个月的时间,使用汇编语言,写出了一个简版的Multics系统(包括一组内核程序,一些内核工具程序,以及一个小的文件系统)。实验室的同事们,将这个系统戏称为Unics。Uni作为前缀,是“单一、一个”的意思。Unics,对应Multics,是“单路信息与计算系统”的意思。后来大家又取其谐音,直接称其为“Unix”。


基于汇编语言编写的Unics,硬件通用性差,没法移植到其它机器上运行。因此,肯·汤普森尝试使用BCPL、PASCAL语言进行重写,但效果并不理想。这时他的同事丹尼斯.里奇(Dennis Ritchie)站了出来。


里奇在BCPL语言(也就是B语言)的基础上,开发了一套新的语言,也就是后来如日中天的C语言(按字母表顺序,B之后就是C)。不久后,丹尼斯.里奇用C语言重写Unics成功。就这样,Unix操作系统正式诞生了。

1973年,丹尼斯·里奇和肯·汤普森正式发表论文,宣布了Unix的存在。消息引起很大反响,很多人都期望学习和研究Unix。

贝尔实验室(AT&T)推出了Unix之后,因为受美国政府反垄断制裁的原因,并不能对它进行销售。所以他们只能将Unix无偿提供给所有人学习。

又过了一段时间,AT&T发布了Unix系统第5版,并授权给教育机构使用。1975年,他们第一次以2万美元的价格,授权企业使用Unix第6版。这期间,很多企业和机构开始打Unix的主意。

1977年,伯克利大学的研究生比尔·乔伊(Bill Joy),将Unix程序整理到磁带上,推出了BSD版本。BSD,就是Berkeley Software Distribution(伯克利软件发行版)。

1978年,SCO(一家服务器系统软件供应商)包装发行了商用版的Unix。

目前公认的最完美版本,是1979年发行的System V7。这个版本也被Unix玩家们称为“最后一个真正的UNIX”。

1980年,美国国防高级研究计划局(DARPA)准备制定TCP/IP协议,选择了与BSD合作。这大大刺激了Unix的发展和普及。

后来,丹尼斯·里奇和肯·汤普森被誉为Unix之父和C语言之父。1983年,他们二人都获得了图灵奖。



在System V7推出之后,AT&T发布新的使用条款,将Unix源代码私有化。Unix开始走向了商业闭源之路。很多公司都推出了自己的Unix系统分支。比较有名的,是Sun公司的Solaris、IBM公司的AIX、惠普公司的HP-UX,以及由BSD版本发展起来的FreeBSD

Solaris这个系统,小枣君非常熟悉。当年我就是通过Solaris学会的Unix。它的稳定性极高,主要用在SUN公司的服务器(V240/V440等)上,CPU都是完全不一样的,叫做SPARC。

FreeBSD的应用范围就广多了,它在BSD许可协议下发布,由来自世界各地的志愿者开发和维护,允许任何人随意使用和发行(在保留版权和许可协议信息的前提下)。苹果公司的OS X,就是基于FreeBSD的。更多信息可参考《BSD与Linux的那些事》。

详细的Unix闭源分支我就不多说了,发一张图,大家可以参考:


Linux的诞生

Unix开始收费和商业闭源之后,引起了一个大叔的不满。这个大叔,名叫理查德·马修·斯托曼(Richard Matthew Stallman)。


理查德·马修·斯托曼

1984年,他发起了自由软件体系GNU(GNU is not unix),模仿Unix的界面和使用方式,重新开发一个开源的版本。他还组织成立了FSF(Free Software Foundation,自由软件基金会),起草了GPL(GeneralPublicLicense,通用公共许可证),可参考《GNU和自由软件运动记事(202x)》。


斯托曼的做法,具有划时代的意义,他开创了开源软件的黄金时代。

所有GPL协议下的自由软件,都必须遵循“Copyleft(非版权)"原则——即:自由软件,允许用户自由拷贝、修改和销售。但对其源代码的任何修改,都必须向所有用户公开。

到上世纪90年代初,GNU项目已经开发出许多高质量的免费软件,其中包括有名的emacs编辑系统、bash shell程序、gcc系列编译程序、gdb调试程序等等。这些都为后来Linux的诞生创造了条件。

Unix源代码私有化之后,在大学中不再允许使用Unix源代码。

1987年,荷兰阿姆斯特丹自由大学计算机系的安德鲁·塔能鲍姆教授(Andrew S. Tanenbaum,也译为谭宁邦),为了能在课堂上教授操作系统课程,决定在不使用任何AT&T源代码的前提下,自行开发与Unix兼容的操作系统。他将这个系统称为MINIX,也就是mini-UNIX(小型UNIX)的意思。

MINIX的主要工作平台,是IBM PC及其兼容机。这款PC搭载了英特尔公司的16位处理器——Intel 8080。

开发出MINIX之后,塔能鲍姆教授并没有对它进行大规模推广;且他认为这个系统只是用于教育目的,所以也没有进行深入开发。他甚至还不允许别人加入代码(估计是怕侵权Unix),这就更加限制了MINIX的发展和普及。

1991年,正在芬兰赫尔辛基大学求学的林纳斯·托瓦兹(Linus Torvalds),对Unix产生浓厚兴趣,尝试借助MINIX完成一些日常工作。MINIX的功能太弱,无法满足林纳斯的需求。于是,他利用GNU的bash当做开发环境,gcc当做编译工具,成功编写出了拥有10000行代码的Linux内核(Linux kernel)。此时的林纳斯,只有21岁!

林纳斯的Linux内核基于POSIX(Portable Operating System Interface for Computing Systems,可移植操作系统接口)标准,能够与绝大多数Unix操作系统兼容。在发布时,选择了遵循GPL协议和GNU宗旨,所以正式发布时命名为“GNU/linux”。


Linux的吉祥物是企鹅(英文名: Tux)
因为林纳斯小时候被企鹅咬过,印象非常深刻


Linux和Unix的关系

这里要特别说明一下,Linux和Unix的关系。很多人觉得,Linux就是Unix,这显然是不对的。由上面的介绍可以看出,Linux是开源自由软件,而Unix是对源代码实行知识产权保护的传统商业软件。两者是完全不同的东西。那么Linux是不是类Unix(Unix-like)系统呢?

严格来说,也不是。

Linux只是风格上和Unix很像,但它并不含有Unix的代码。UNIX的源代码,为SCO公司所有。UNIX的商标权和标准认定权,属于OPENGROUP所有。真正意义上的类Unix系统,必须要通过官方认证(例如苹果的MacOS)。而Linux并没有。


Linux的发行版

大家注意,林纳斯1991年开发的,并不是一个操作系统,而是一个内核。

后来全球开发者(开源社区、企业、个人等)对内核代码进行大量的修改和补充,加入GUI(图形界面)、应用等部分,才形成了相应的Linux操作系统发行版,也就是真正的操作系统。这些发行版分为社区版和商业版。社区版数量较多,开发和维护的主体是开源社区。商业版数量较少,是在社区版的基础上进一步优化而来。值得一提的是,发行版之间也有复杂的衍生关系。也就是说,发行版可以构建在另一个发行版之上。

一些大家可能比较熟悉的发行版,包括:Ubuntu、Debian、Centos、Fedora、 Redhat Linux、Slackware、Turbolinux、Mandrake、SUSE、红旗、麒麟等。


Slackware和Debian是最早期的两个发行版,创建于1993年。

Debian的后代分支比较庞大。除了Debian本身之外,这个分支的主要代表还有Ubuntu(构建在Debian之上)、LinuxMint(构建在Ubuntu之上)、Kali Linux。

Redhat,也就是大家很熟悉的红帽系列。它的主要发行版是Red Hat Enterprise Linux(RHEL),针对企业客户。

CentOS是RHEL源代码再编译的产物,修正了不少Bug,稳定性更强。除了RHEL之外,Redhat还向社区提供另一个免费发行版,即Fedora。2020年底,红帽公司宣布陆续停止维护CentOS,后续将无法获得官方升级和补丁。虽然比较可惜,但也给国产操作系统带来了机会。