千年计划——微软下一代操作系统揭秘 周鹏 顾慧君 2000年 第7期   早在1996年,微软就开始了下一代操作系统的研究计划(Project Millennium),准备开发出一种强大的分布式操作系统。 #1 由来已久   今天,分布式计算已被广泛应用,它能使用户共享程序和资源,如打印机和光驱。在不同的计算机上同时运行程序的不同部分要比在一台计算机上全部运行快得多,一台计算机的空间不够,可以借用别的计算机的存储空间来存放程序或文件。虽然分布式计算带来许多好处,但应用起来却很麻烦,因为程序员不得不花费大量时间考虑每台计算机该做什么,如果计算机太多,就不太可能编出好方案来,而且网络的管理、维护都需要专业人员。分布式操作系统的出现即将改变这一切,就像当年的PC有了DOS一样。   计算机科学家已经对分布式操作系统研究了二十多年,其理论、技术都已较为成熟,由于技术条件、市场等原因,分布式操作系统还只在科学家的实验室中,离实际应用还有一定的距离。然而,现在由于计算机处理能力的大幅提高,网络技术的迅速发展,特别是现今网络的普遍存在,给分布式操作系统的出现提供了强大的技术基础。按照大多数科学家的观点,分布式操作系统是一个任何代码可以运行在任何地方、任何数据可以存储在任何地方的、可以实现纯粹的位置透明性的系统。 #1 开发目标   微软早就把网络作为其开发重点,分布式操作系统很自然就成为下一代操作系统努力的方向,为此,微软确立了其开发操作系统的目标:   1.要能使分布计算无缝实现:操作系统将决定代码在哪里执行、数据放在哪里,并能按需移动它们,而用户则不必了解操作系统在幕后完成的这一切。也就是说,虽然用户的硬盘可能只有1G或根本没有,但能访问和拥有的数据则可能有几十G。虽然CPU只是586,但拥有的计算能力可能连“深蓝”都赶不上。而用户对这一切都不必知道。   2.强大的可伸缩性:逻辑上只有一个系统存在,虽然随时它们可能被分成几部分,如断开或弱连接操作导致的临时网络分区。这使得操作系统可以适应各种各样的分布计算情况,应付各种突然的变化。   3.容错能力:系统应该透明地处理错误、机器设备的移动和网络断开,而不会丢失数据和功能。而且应用程序也应和系统一样具有这样的能力。要实现这一目标是较为困难的,大家都有遭受Win98蓝屏炸弹多次轰炸的经历,而分布式系统要复杂得多,只能希望这不是微软的又一颗定心丸。   4.自我优化能力:系统能够推算出每一时刻的计算能力和资源的多少,并自动分配、复制、移动计算和数据,以达到整个系统的性能、资源使用率、容错能力的最优化。   5.自我配置能力:当新设备、新网络连接到系统时,系统不需人为干预而自动地把它们接入进来,它有点像微软的即插即用一样(微软即将推出的新的即插即用标准:UPP(Universal Plug and Play通用即插即用),它和SUN公司的Jini一样能使网络中的设备互相识别和通信),但 Millennium可以透明地完成这些,能使这些设备看起来像一台“大”计算机,比UPP具有更多的智能性。   6.安全:虽然整个网络是以单个系统的形式出现,但在不同信任域中的安全委托人对该域中的数据以及相应的计算负责。像Internet一样,系统在不须要集中认证的时候,提供无等级的信任域。   7.资源控制:资源的提供者和消费者应能在不同的信任域中各自对资源的使用管理。有人可能愿意把自己的数据和计算能力提供给任何人,但对一些商业竞争者之间来说,情况可能完全相反。 #1 设计原则   微软描绘的这样一个操作系统可以说是相当先进的,它将给我们的计算机应用带来极大的方便,将使我们的许多使用经验无用,甚至对整个计算机界乃至社会发展带来巨大影响。然而设计这样一个操作系统也是极为复杂的,微软提出设计的一些原则:   1.高度抽象:提高抽象层次以使程序员不必知道分布编程的一些机制,是怎样处理实际计算中出现的一些突发情况,从而使开发者专注于应用问题的解决,把现在程序员感到困难的数据放置、资源定位、负载平衡、容错等问题交给系统来解决。因为操作系统将保持对整个计算的最终控制,典型的程序甚至不能访问低层系统资源,从而使操作系统能够保护每个计算,透明地迁移和分配计算,并替它们访问资源。   2.存储无关性:不存在存储层次性,生成的信息能被一直访问,直至其无用。   3.位置无关性:对象间能够互相调用,且调用操作不须考虑它目前的位置或复制状态,系统具有一个无缝的外观,不用管实际的分布事实。这样便解决了无缝交互的课题,使信息独立于它的存储位置,交互式用户可以在任何计算机上运行它们的程序并控制自己的数据。同样地,程序也可以不考虑组件的分布情况而照样工作。   4.即时绑定:对一些特殊的计算机、数据、硬件与资源的绑定应当仅发生在实际需要的时候,而不是一直绑定,这样就可以避免绑定后干扰分布或容错的实现。   5.自省:系统应该具有自我检查和自我反省的特性。系统能对自身和程序进行广泛深入的监控,并对配置和性能问题进行推演,其自身的配置和运作模式应能够提供自我优化的机会,如当物理位置改变或机器升级的时候,自动提出建议以提高性能。   自省保证了系统能负责决定计算发生在哪里,数据存储在哪里,编程者不须要知道代码是作为客户机运行还是作为服务器执行。系统对硬件资源和使用情况的评估将决定计算机执行的地方和数据存储的位置,这将使得操作系统能为程序提供容错、高可靠性和自我优化的能力。 #1 开发进展   Millennium项目中的许多描述是十分诱人的,然而实践起来也是困难的,微软先已经成功地开发了一系列原型(原型是一个可以工作的系统,但它不包括最终的Millennium系统的所有特性,每个原型具有Millennium某些重要特征),并且从中论证了真正的无缝分布环境是可行的。   这些原型分成两类:一类是较高层的程序运行环境,如Coign和Continum。一类是较低层次的基础结构和分布式服务。目前的基础结构原型主要专注于解决:一是如何减少由系统区域网络(SAN)连接成的集群计算机系统中的通信量。二是把分布式基础结构组件化,从而为复杂程序提供更大的灵活性。   Coign是第一个可以把非分布式应用程序自动转换为分布式应用程序而不须要访问源代码的系统。它可以把由COM组件生成的Windows程序分布到多个计算机上。   根据基于使用情况的配置文件,生成程序的内部组件通讯模型(ICC),以后在程序执行的时候,Coign使用ICC模型来分割应用程序使之成为客户端和服务器端两部分,对选择一种恰当的分布方式通过网络分发出去,以减少网络通信量。用外行的话说,Coign调出基于单个计算机的程序,先观察你怎样使用它的,然后把它们分开,在两台计算机上同时运行以提高它的性能。Coign对程序的操作、分析、分割都是基于二进制代码,与语言无关。   Continuum将扩展Coign的最重要的特征,它可以用Windows API分布到多个计算机上,提供单个系统映像(SSI)的抽象(单个系统映像可以去除分布资源和本地资源之间的差别,对应用程序来说,所有的代码和数据就像存在于一台计算机中)给COM+程序。   Continuum是语言无关的,至少它可以支持VB,C,C++和Java,它支持自动分配(和Coign相似)和活动对象迁移。也就是在程序运行时,能把程序的对象从一台计算机移动到另一台计算机上。   微软已经在NT平台上进行了Coign的运行,Coign成功地实现了三个商业级程序的分布:PhotoDraw 2000、 Octarine文字处理器和MSDN中的 Corporate Benefits Sample。Coign不仅可以把非分布式程序分布化,而且可以对分布式程序进行再优化。这几个程序的代码不仅有VC++生成的,还有C、VB、X86汇编生成的代码,而完成这些转换却不需要任何关于Coign的知识。 #1 竞争对手   当然,从事分布式操作系统研究的不止微软一家,许多公司机构都在做不同的尝试。由加州伯克利分校等几所大学所开发的WEBOS则提出把分布式计算引入3W的新思路,WEBOS的核心是全局文件系统,WEBOS的程序具有分布的高度可靠、高可伸缩、动态配置的特性。   朗讯公司的Inferno则把操作系统和语言环境集成在一起,使得开发分布式服务变得很容易。像Java一样,Inferno为程序生成了一个虚拟机环境,Inferno还包含了网络协议和为分布式编程提供的服务(SUN也是朝这个方向走,并基于Java开发了JavaOS)。 #1 未来是什么   Millennium再次体现了微软的战略野心,首先,Millennium是基于Windows的,是构架在Windows 之上的,这样便可以继续控制庞大的Windows用户。再就是,Millennium是建立在微软的COM+结构上的,也就是说现在的基于COM的程序依然有效,而且将来也不须改变编程习惯,就可以进行分布式编程,使得软件开发商很乐意继续在Windows上开发基于COM的软件,反过来使得用户离不开微软。另外,微软的研究人员把精力集中在两个领域,一是提高抽象层次,二是自我配置、自我 优化的实现,这又突出了微软产品的一贯宗旨——易用,这是极易俘获消费者人心的。Millennium是一个长期目标的研究项目,当Millennium的一些特征的成功实现之后,它们会被加入到微软的产品中。在新一代操作系统大战中,微软会不会继续独领风骚呢?从现状来看,微软的把握很大,但或许历史会开个玩笑,操作系统说不定在新时代不能推动计算机的发展,退居二线,微软会成为另一个IBM。