1700435533
1700435534
1700435535
1700435536
这段程序能在任意一台计算机上编译和执行。
1700435537
1700435538
每个人都至少知道Windows或macOS这些现代操作系统的名字,手机上运行的是Android和iOS等操作系统。
1700435539
1700435540
操作系统是控制计算机的程序,它给正在运行的程序分配资源。它管理主存储器,当运行中的程序有需要时,将主存分配给它们。在台式计算机或笔记本式计算机上,操作系统让你能够同时运行浏览器、文字处理器、音乐播放器,或许还有我们的面积计算小程序,并且按需任意切换到其中之一。
1700435541
1700435542
操作系统也控制显示,在收到程序请求时,使其在屏幕上可见。它还管理磁盘之类存储设备,当你保存Word文档时,文档就会被存下来,以备之后恢复并继续工作。
1700435543
1700435544
操作系统还负责协调与互联网之类的网络进行通信,这样你就能用浏览器搜索、与朋友联络、购物、分享宠物猫视频,一切齐头并进。
1700435545
1700435546
在程序发生错误时,操作系统保护其他程序不受影响,还要防止有害程序或用户误操作对系统自身造成的危害。
1700435547
1700435548
手机上的操作系统也是如此工作的。在底层,需要做许多动作来维持经由移动网络或无线网络的通信。虽然细节常有不同,但手机应用与Word这样的程序在概念上完全一样,并且用同样的编程语言编写。
1700435549
1700435550
现今的操作系统程序体量庞大,纷繁复杂。在20世纪60年代,它简单得多,但相对于同时代的其他程序,它还是既庞大又复杂。一般而言,IBM或DEC(Digital Equipment Corporation,美国数字设备公司)等计算机制造商为各种不同硬件提供操作系统。每个制造商生产的硬件全无共通之处,有时甚至来自同一厂商的硬件都会有很大不同,所以操作系统也各自不同。
1700435551
1700435552
更加麻烦的是,操作系统用汇编语言写成。汇编语言是人能读懂的机器指令,与特定类型硬件的指令集紧密相关。每种计算机都有自己的汇编语言,所以操作系统是庞大且复杂的汇编语言程序,每个操作系统都针对特定硬件、使用特定语言编写。
1700435553
1700435554
系统之间缺乏共通性,使用相互不兼容的低级语言,导致同时需要多个版本的程序:为某一操作系统编写的程序,在移植到其他操作系统或硬件架构上时,必须完全重写。这种状况阻碍了进步。如后文所述,Unix操作系统在所有类型的硬件上都保持一致,而且用较高级的语言写成,只需付出相对较少的成本,即可从一种计算机移植到另一种计算机。
1700435555
1700435556
1700435557
1700435558
1700435560
UNIX传奇:历史与回忆 2.2 CTSS和Multics
1700435561
1700435562
当时最有创造性的操作系统是麻省理工学院于1964年推出的CTSS(兼容分时系统)。在那个时代,大多数操作系统都采用“批处理”技术。程序员将程序打到穿孔卡上(那是很久以前的事了!),交给操作员,然后苦等几小时甚至几天,等待结果出来。
1700435563
1700435564
穿孔卡用高品质硬纸制成,每张卡片能保存最多80个字符,容纳一行程序的内容。6行C语言程序得用6张卡片,如果要修改代码,就得替换卡片。图2-1展示了一张80列标准卡片。
1700435565
1700435566
1700435567
1700435568
1700435569
图2-1 穿孔卡,187.325 mm×82.55 mm
1700435570
1700435571
与此不同,CTSS程序员使用类似打字机的设备(如下一章图3-1所示的Model 33 Teletypes“终端机”),设备直接连接或通过电话线连接到一台大型计算机,如拥有两倍于通常型号32K(32 768)个字长内存的IBM 7094。操作系统看顾每位登录用户,在用户之间快速切换,令每位用户误以为整台计算机都为我所用。这种技术叫作“分时”,(以我个人体验而言)它比批处理更为令人愉悦和有生产力。多数情况下,真的让人感觉不到有其他用户存在。
1700435572
1700435573
见到CTSS编程环境如此高效,麻省理工学院的研究员们决定做一个更好的版本。他们想做一套信息处理工具,向大众提供计算服务。1965年,他们开始设计Multics系统。Multics意思是多路复用信息和计算服务(Multiplexed Information and Computing Service)。
1700435574
1700435575
Multics是个大项目,意图制造出强悍的新软件和比IBM 7094功能更丰富的新硬件,所以麻省理工学院邀请了两家公司来帮忙。计算机制造商通用电气(General Electric,GE)公司负责设计和生产拥有全新硬件特性、能更好地支持分时和多用户体系的新计算机。由于贝尔实验室在20世纪50年代初就打造了自己的操作系统,拥有极丰富的经验,因此在这个项目中帮忙做操作系统。
1700435576
1700435577
Multics本该前途无量,但其很快就陷入困境。回头看来,它算是第二系统效应(second system effect)的受害者。所谓第二系统效应,意思是在首个系统(如CTSS)创建成功后,打算创建一个新系统,修正旧系统的遗留问题,还要添加每个人期望的新特性,结果常常是塞了太多不同东西进去,最终得到过于复杂的系统。这就是Multics遇到的情况。在多份有关Multics的文件中都出现了“过度设计”(over-engineered)一词,用萨姆·摩根的话来说就是“同时爬好多棵树”。而且,项目参与方是一所高校和两家全无共性的公司,分布在美国的3个地方,即使对组织机构无甚研究的人也能料到会出问题。
1700435578
1700435579
1966年至1969年,有六七个贝尔实验室研究员从事Multics相关工作,其中有道格·麦基尔罗伊、丹尼斯·里奇、肯·汤普森和彼得·诺伊曼。维克·维索斯基搬去贝尔实验室的另一处驻地后,彼得接替了他的职位。道格致力于在Multics上实现PL/I[2]。还在哈佛大学读书时,丹尼斯就在为Multics编写文档,加入贝尔实验室后,又参加开发设备I/O(输入/输出)子系统。肯全力做I/O子系统,这段经历在他后来开发Unix时派上了用场。在2019年的一次采访中,他形容自己为Multics做的事是“巨轮上的一道凹槽,它搞出来的东西连我自己都不想用”。
1700435580
1700435581
到了1968年,尽管对能用上它的少数人而言,Multics算是一个优秀的计算环境,但在贝尔实验室看来,作为一套信息处理工具,它已无法实现以合理的代价为实验室提供计算服务的目标,并且它太贵了。1969年4月,贝尔实验室退出Multics项目,留下麻省理工学院和GE继续苦战。
1700435582
[
上一页 ]
[ :1.700435533e+09 ]
[
下一页 ]