存档

文章标签 ‘个体重复发展’

操作系统阅读笔记003

2011年3月11日 没有评论

在达尔文(Charles Darwin)的著作《物种起源》之后,德国的动物学家海克尔(Ernst Haeckel)指出了“个体重复发展”现象。他的意思是,一个胚胎(个体)重复物种(个体)的演化。换句话说,在卵子受精之后,一个人类的卵子在成为人类婴儿之前,经过了是鱼、是猪或其他物种的阶段。现代生物学家认为这是一种粗略的的简化说法,不过这个说法的内部包含有真理的成分。在计算机产业中有类似的情形。每一个新物种(大型机/小型机/个人计算机/嵌入式计算机/智能卡)似乎经历着它的前辈经历过的发展过程。

第一台真正的数字计算机是英国数学家Charles Babbage(1792-1871)设计的。尽管Babbage花费他几乎一生的时间和财产试图建造他的“分析机”,但是他始终未能让机器正常的运转,因为它是纯机械的,他所在的时代不可能生产出他所需要的高精度的齿轮和轮牙。Babbage认为他的分析机需要操作系统,于是雇用了世界上第一位程序员,一名叫Ada Loveplace的年轻妇女(她是英国著名诗人拜伦Byron的女儿)。程序设计语言Ada则是以她的名字为命名。

第一代计算机是在1945年-1955年间出现的,它们最初使用大规模的机械继电器,运行非常缓慢,后来被真空管取代。这些机器极为巨大,有成千上万根真空管,充满整个房间。同一个小组的人设计、建造、编程并维护一台机器。所有的程序设计是用纯粹的机械语言完成的,常常连线到插件板上以便控制机器的基本功能。通常的操作方式是程序员提前在墙上的机时表上预约一段时间,然后到机房中将他的插板放到计算机中。在此期间,他必须得祈祷几万根真空管没有任何一根出现问题(被烧坏)。后来插板被穿孔的卡片取代。此时计算机主要应用于数字运算。

第二代计算机(1955年-1965年)由于上世纪50年代中期晶体管的出现极大的改变了状况。计算机变得很可靠,厂商可以批量的生产并销售给最终用户,用户也可以指望计算机长期的运行。此时,设计人员,生产人员,操作人员,编程人员和维护人员之间第一次有了明确的分工。这些机器被称为大型机(MainFrame),被放置在有专用空调的机房里,由专业的人员操作。为了提高机器效率,批处理系统(Batch System)出现了。它首先会一次性收集程序员们的需求,然后输入执行运算的计算机系统,等到运算结束后,再批量的将运算结果输入。这一代计算机主要应用于工程运算,比如接微分方程。

第三代计算机(1965年-1980年)采用了集成电路和多道程序设计的思想。IBM公司的OS/360采用了小规模集成电路,成为当时的主流机型,与上代计算机相比,在性价比上有较大的提高。它们满足了当时大多数客户的需求,同时也使得第二代计算机几项关键技术得到了广泛的应用。其中最重要的是多道程序设计(Multiprogramming)。在上代的计算机系统中,如果当前作业因等待磁带或其他I/O操作而暂停时,CPU只能去等待该操作的完成。这样就必须采取措施提高CPU运行效率。解决方案是将内存划分为几个部分,每一个部分都存放不同的作业。当第一个作业等待I/O操作完成时,CPU转而去处理下一个作业。如果主存中能存放足够多的作业,那么CPU的效率将达到100%。不过要注意的是,在内存中同时存放多个作业需要特殊的硬件来对其进行保护,以免作业的信息被窃取或受到攻击。多道程序设计的思想后来导致了分时系统(timesharing system)的出现。分时系统中最著名的是MULTICS(MULTiplexed Information and Computer Service),通用汽车,福特和美国国家安全局一直使用到上世纪90年代后期才关闭他们机房中的MULTICS。

目前,公用计算服务系统的概念已经被遗弃,但是这个概念是可以回归的,以大量的,附有相对简单的单用户机器、集中式的网络服务器形式回归。在这种形式中,主要工作将在大型服务器上完成。而回归的动机可能是多数人不愿意管理日益复杂的计算机系统,宁可让那些运行服务器公司的专业团队去做。现在来看,Tanenbaum的预言有了初步的实现的迹象,比如近年来非常火爆的云计算/云存储等概念。

第三代计算机另外一个主要进展是小型计算机的崛起,以1961年DEC的PDP-1为起点。Ken Thompson,一位参加作MULTICS开发的贝尔实验室的科学家,在一台PDP-7上开发了一个简单的单用户版MULTICS,即后来的UNIX。这是计算机操作系统历史中具有非常重要意义的一件大事。

第四代计算机(1980年至今)随着大规模集成电路的发展,迎来了个人计算机时代。Intel在1974年推出8080处理器,后来Kildall受邀在上面开发了CP/M操作系统,该系统当时大受欢迎,Kildall取得了专利权并成立了Digital Research公司持续开发该系统。80年代IBM公司找到Bill Gates,请他推荐一个能在PC上运行的操作系统,Bill推荐了CP/M,但是Kildall并不热心与IBM的合作。最后IBM回过头来找Bill Gates,询问他是否可以接受开发操作系统的任务。Gates把握了这个历史上最好的机会,收购了西雅图一家计算机制造商(DOS),改名为MSDOS并与IBM PC捆绑销售,最后大获成功。而Kildall坚持硬件要为自己的CP/M所兼容,不愿意拓宽自己的视野和思路,导致CP/M在市场上迅速消亡和被MSDOS取代。

上世纪80年代中期出现了网络操作系统和分布式操作系统的雏形。网络操作系统与单机操作系统没有本质区别,它需要一个网络接口控制器以及一些底层软件驱动它,同时需要一些程序来进行远程登录和远程文件访问,但这些附件内容并未改变操作系统的本质结构。相反,分布式操作系统是一种传统的单处理操作系统的形式出现的,尽管它实际上是多个处理机组成的。用户不知道他们的程序在何处运行或他们的文件存放在何处,这些是由操作系统自动和有效的处理的。真正的分布式操作系统不仅仅实在单处理机操许系统上增添一小段代码,因为分布式系统和集中式系统有本质的区别。分布式系统常允许一个应用在多个处理机上运行,因此,需要复杂的处理机调度算法来获得最大的并行优化。网络中的通信延迟往往导致这些算法必须能适应信息的不完备、信息过时甚至信息不正确的环境。这个单处理机操作系统完全不同,对于后者,操作系统掌握这整个系统状态的完全信息。