操作系统的发展史
Unix
1965 年之前的时候,电脑并不像现在一样普遍,它可不是一般人能碰的起的,除非是军事或者学院的研究机构,
而且当时大型主机至多能提供30台终端(30个键盘、显示器),连接一台电脑
为了解决数量不够用的问题
1965 年左后由贝尔实验室加入了麻省理工学院以及通用电气合作的计划 —— 该计划要建立一套多使用者
(multi-user)、多任务(multi-processor)、多层次(multi-level)的MULTICS操作系统,想让大型主机支持300 台终端
1969 年前后这个项目进度缓慢,资金短缺,贝尔实验室退出了研究
1969 年从这个项目中退出的Ken Thompson当时在实验室无聊时,为了让一台空闲的电脑上能够运行 "星际旅行(SpaceTravel)" 游行,在 8 月份左右趁着其妻子探亲的时间,用了 1 个月的时间,使用汇编写出了Unix 操作系统的原型
1970 年,美国贝尔实验室的Ken Thompson,以BCPL语言为基础,设计出很简单且很接近硬件的B 语言(取BCPL的首字母),并且他用B 语言写了第一个 UNIX 操作系统
1971 年,同样酷爱 "星际旅行(Space Travel)" 的Dennis M.Ritchie为了能早点儿玩上游戏,加入了Thompson的开发项目,合作开发 UNIX,他的主要工作是改造B 语言,因为B 语言的跨平台性较差
1972 年,Dennis M.Ritchie在B 语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C 语言
1973 年初,C 语言的主体完成,Thompson和Ritchie迫不及待地开始用它完全重写了现在大名鼎鼎的Unix
操作系统
肯·汤普逊(左)和丹尼斯·里奇(右)
Minix
因为AT&T(通用电气)的政策改变,在 Version 7 Unix 推出之后,发布新的使用条款,将 UNIX 源代码私有化,在大学中不能再使用 UNIX 源代码
Andrew S. Tanenbaum(塔能鲍姆)教授为了能在课堂上教授学生操作系统运作的细节,决定在不使用任何 AT&T 的源代码前提下,自行开发与 UNIX 兼容的操作系统,以避免版权上的争议
以小型 UNIX(mini-UNIX)之意,将它称为MINIX
Linux
1991 年林纳斯(Linus)就读于赫尔辛基大学期间,对 Unix 产生浓厚兴趣,尝试着在Minix 上做一些开发工作因为Minix只是教学使用,因此功能并不强,林纳斯经常要用他的终端仿真器(Terminal Emulator)去访问大学主机上的新闻组和邮件,为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件系统,这些在后来成为了 Linux 第一个内核的雏形,当时,他年仅 21 岁!林纳斯利用 GNU 的 bash 当做开发环境,gcc 当做编译工具,编写了 Linux 内核,一开始 Linux 并不能兼容Unix即 Unix 上跑的应用程序不能在 Linux 上跑,即应用程序与内核之间的接口不一致一开始 Linux 只适用于 386,后来经过全世界的网友的帮助,最终能够兼容多种硬件
C 语言
在把UNIX移植到其他类型的计算机上使用时,C 语言强大的移植性(Portability)在此显现机器语言和汇编语言都不具有移植性,为x86开发的程序,不可能在 Alpha,SPARC和ARM等机器上运行而C语言程序则可以使用在任意架构的处理器上,只要那种架构的处理器具有对应的 C 语言编译器和库,然后将C 源代码编译、连接成目标二进制文件之后即可运行