Unix 和 C 语言的起源

20世纪60年代,麻省理工学院(MIT)正在大力开发不兼容分时系统(ITS)。与此同时,在美国东海岸的另一处地点,还有一家同样充满黑客精神的实验室:美国电话电报公司(AT&T)贝尔实验室。

改变世界的开创性Unix系统和C语言正是在此期间被开发出来。

图0:Unix 和 C 语言的起源

巧合的是,参与Multics开发的人员也参与了ITS和Unix的开发: 麻省理工学院的团队启动了ITS项目,而贝尔实验室的肯·汤普森丹尼斯·里奇乔·奥萨纳则共同创建了Unix。

 

图1:Unix 和 C 语言的起源

元素周期表

Multics项目始于1964年,但由于代码规模庞大且复杂,进度远落后于贝尔实验室的预期。

图2:Unix 和 C 语言的起源

1969年,贝尔实验室退出Multics的开发。

图3:Unix 和 C 语言的起源

基于在Multics项目中的开发经验,肯·汤普森在贝尔实验室独自创建了一个新的操作系统。

图4:Unix 和 C 语言的起源

肯·汤普森在Unix中重新实现了他在Multics中开发的许多关键功能。

图5:Unix 和 C 语言的起源

他将已在Multics中实现的文件系统适配到PDP-7上的Unix中。丹尼斯·里奇、乔·奥萨纳、鲁德·卡纳迪后来加入了他的开发团队。当开发工作进展顺利后,一个团队被组织起来,他们开始在PDP-7上首次实现我们今天使用的操作系统功能,如文件系统、进程模型、设备文件和命令行解释器。

图6:Unix 和 C 语言的起源

随后,PDP-11被引入,其CPU指令集与PDP-7存在差异。

图7:Unix 和 C 语言的起源

1969年,肯·汤普森和丹尼斯·里奇为Multics系统开发了B语言。

图8:Unix 和 C 语言的起源

1971年,丹尼斯·里奇为B语言添加了字符类型,并重写了编译器代码以生成PDP-11机器码[3])。

图9:Unix 和 C 语言的起源

1973年,基本功能完成,该语言被命名为C,它是B语言的下一版本。

图10:Unix 和 C 语言的起源

同年,丹尼斯·里奇开始用C语言重写Unix。

图11:Unix 和 C 语言的起源

丹尼斯为C语言添加了结构类型,用于定义用户自定义数据。如今,C语言已足够强大,可用于编写Unix内核。

图12:Unix 和 C 语言的起源

尽管Unix和C语言是由肯·汤普森和丹尼斯·里奇在短时间内创建的,但至今大多数计算机(包括手机)仍运行基于Unix的操作系统。此外,操作系统内核至今仍主要用C语言开发。

计算机历史博物馆的阅读材料

  1. 大卫·C·布罗克,最早的Unix代码:周年纪念源代码发布,CHM

参考文献

  1. Multics,维基百科
  2. Unix,维基百科
  3. Unix 历史,维基百科
  4. C 语言的发展 贝尔实验室
  5. Unix 时间共享系统的演变 www.read.seas.harvard.edu/~kohler

本文文字及图片出自 8. The Origins of Unix and the C Language

你也许感兴趣的:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注