UNIX历史

来自运维百科

贝尔实验室的早期研究涉及物理、化学、材料学和通信系统。

研究员们有追随兴趣的自由,相关问题的环境资源也非常丰富,若想探索既满足科学兴趣又能有益于贝尔系统(Bell System)乃至全世界的领域。贝尔实验室做出了大量改变世界的科技成果。

最早的是晶体管,由约翰·巴丁(John Bardeen)、沃尔特·布拉顿(Walter Brattain)和威廉·肖克利(WilliamShockley)于1947年在尝试为远距电话线路改进放大器时发明。

20世纪40年代,业界亟待出现比真空管在物理上更可靠、耗能更少的设备,这是制造通信装备和构建最早的计算机的必要条件。这种需求推动了对半导体材料的基础研究,晶体管应运而生。

1956年,晶体管的发明者荣获诺贝尔奖。共有9项诺贝尔奖是因获奖者在贝尔实验室工作期间的成果而颁发的。

贝尔实验室雇员还发明了负反馈放大器、太阳能电池、激光器、手机、通信卫星和电荷耦合器件(有了它,手机上的摄像头才能工作)等。粗略估算,从20世纪60年代到20世纪80年代,贝尔实验室科研部门(主要在墨里山)拥有3 000名员工,另外还有15 000至20 000名员工隶属于其他地区的开发团队。这些开发团队利用科研部门的成果,为贝尔系统设计装备和系统。

贝尔实验室生来就是通信系统的设计、建造与改进先锋,研发范围涵盖从电话之类的消费类硬件到交换机基础设施、微波传输塔和光缆。有时,对实践领域的广泛关注会带来基础科学的进步。

贝尔实验室还有一项任务,那就是构建对通信系统工作机制的数学理解。克劳德·香农(Claude Shannon)基于第二次世界大战期间的密码学研究创建了信息论,这是最重要的成果。

CTSS和Multics

当时最有创造性的操作系统是麻省理工学院于1964年推出的CTSS(兼容分时系统)。在那个时代,大多数操作系统都采用“批处理”技术。程序员将程序打到穿孔卡上,交给操作员,然后苦等几小时甚至几天,等待结果出来。穿孔卡用高品质硬纸制成,每张卡片能保存最多80个字符,容纳一行程序的内容。6行C语言程序得用6张卡片,如果要修改代码,就得替换卡片。

Multics是个大项目,意图制造出强悍的新软件和比IBM 7094功能更丰富的新硬件,所以麻省理工学院邀请了两家公司来帮忙。计算机制造商通用电气(GeneralElectric,GE)公司负责设计和生产拥有全新硬件特性、能更好地支持分时和多用户体系的新计算机。由于贝尔实验室在20世纪50年代初就打造了自己的操作系统,拥有极丰富的经验,因此在这个项目中帮忙做操作系统。

道格致力于在Multics上实现PL/I[2]。还在哈佛大学读书时,丹尼斯就在为Multics编写文档,加入贝尔实验室后,又参加开发设备I/O(输入/输出)子系统。肯全力做I/O子系统,这段经历在他后来开发Unix时派上了用场。

贝尔实验室看来作为一套信息处理工具,已无法实现以合理的代价为实验室提供计算服务的目标,并且太贵了。1969年4月,贝尔实验室退出Multics项目,留下麻省理工学院和GE继续苦战。影响了一个叫Unix的小操作系统,这个小系统诞生的部分原因是想摈弃Multics的复杂架构。

Unix起源

贝尔实验室退出Multics项目后,项目组成员得找其他事来做。肯·汤普森还是想做操作系统,但实验室管理层被Multics伤透了心,不肯给操作系统项目买硬件。肯和其他人只能纸上谈兵,设计操作系统的各种组件,无法开展具体的实现工作。

恰在此时,肯找到一台没怎么用过的DEC PDP-7计算机。这种计算机的主要功能是做电路设计的输入设备。

PDP-7于1964年推出,但计算机领域演进太快,到了1969年,它已经过时。

在某一时刻,肯发现离实现一个操作系统仅有3周之遥了。”肯需要写三个程序,每周写一个:用来创建代码的编辑器;将代码转换为PDP-7能运行的机器语言的汇编器;再加上“内核的外层——操作系统齐活了”