Linux操作系统案例教程(CentOS Stream 9/RHEL 9):微课版
上QQ阅读APP看书,第一时间看更新

1.1.1 UNIX操作系统的发展历史

UNIX是一款强大的、支持多用户/多任务的操作系统,它支持多种处理器架构,属于分时操作系统。操作系统(Operating System,OS)的概念始于20世纪50年代。当时的操作系统主要是批处理操作系统,没有配备鼠标、键盘等设备,典型的输入设备是卡片机。系统运行批处理程序,通过卡片机读取读卡纸上的数据,然后将处理结果输出。20世纪60年代初,分时操作系统出现。与批处理操作系统不同,它支持用户交互,还允许多个用户从不同的终端同时操作主机。

1965年,美国贝尔实验室(Bell Laboratory)、麻省理工学院(Massachusetts Institute of Technology,MIT)、通用电气公司(General Electric Company)共同参与研发MULTICS(MULTiplexed Information and Computing System,MULTiplexed信息与计算系统)。这是一个安装在大型主机上的分时操作系统,研发的目的是让大型主机同时支持300个以上的终端访问。MULTICS技术在当时非常新颖,然而项目进展并不顺利。因进度缓慢、资金短缺,贝尔实验室选择退出该项目。MULTICS并没有取得很好的市场反响。MULTICS项目最重要的成就是培养了很多优秀的人才,如肯·汤普森(Ken Thompson)、丹尼斯·里奇(Dennis Ritchie)、道格拉斯·麦克罗伊(Douglas Mcllroy)等。

1969年8月,肯·汤普森为了移植一款名为“太空旅游”的游戏,想要开发一个小的操作系统。他在一台闲置的PDP-7上用汇编语言写出了一组内核程序、一些内核工具程序及一个小的文件系统。他的同事称之为Unics(该系统就是UNIX的原型)。因为汇编语言对硬件具有依赖性,Unics只能应用于特定硬件上。如果想将其安装到不同的机器上,就需要重新编写汇编语言代码。为了提高其可移植性,肯·汤普森与丹尼斯·里奇合作,试图改用高级程序设计语言来编写Unics。他们先后尝试过BCPL(Basic Combined Programming Language,基本的组合编程语言)、Pascal等语言,但是编译出来的内核性能都不是很好。

1973年,丹尼斯·里奇在B语言的基础上,发明了C语言,因此他被人们称为C语言之父。肯·汤普森与丹尼斯·里奇合作,用C语言重新改写UNIX的内核,并在改写过程中增加了许多新特征。例如,道格拉斯·麦克罗伊提出的“管道”的概念被引入UNIX。经C语言改写后的UNIX,可移植性非常好。理论上,只要获得UNIX的源码,针对特定主机的特性加以修改,就可以将其移植到对应的主机上。

由于UNIX的高度可移植性与强大的性能,加上当时并没有版权的纠纷,因此很多商业公司开始了UNIX操作系统的开发,研发了许多重要的UNIX分支。

1977年,美国加利福尼亚大学伯克利分校的比尔·乔伊(Bill Joy)通过移植UNIX,开发了BSD(Berkeley Software Distribution,伯克利软件套件)。比尔·乔伊是美国Sun公司的创始人。Sun公司基于BSD内核进行了商业版本UNIX的开发。BSD是UNIX中非常重要的一个分支,FreeBSD就是由BSD改版而来的,苹果的Mac OS X也是从BSD发展而来的。

1979年,AT&T推出了System V第7版UNIX,开始支持x86架构的PC(Personal Computer,个人计算机)平台。贝尔实验室当时还属于AT&T。AT&T出于商业考虑,在第7版System V中特别提到了“不能对学生提供源码”的严格限制。

1984年,因为UNIX规定“不能对学生提供源码”,安德鲁·坦尼鲍姆(Andrew Tanenbaum)老师以教学为目的,编写了与UNIX兼容的MINIX。1989年,安德鲁·坦尼鲍姆将MINIX系统移植到x86架构的PC平台。1990年,Linux的创始人林纳斯首次接触MINIX系统,并立志开发一个比MINIX性能更好的操作系统。