当前位置: 首页 > 专利查询>微软公司专利>正文

VEX-虚拟扩展框架制造技术

技术编号:2856325 阅读:216 留言:0更新日期:2012-04-11 18:40
操作系统或软件应用程序的扩展可被主宿在虚拟环境中,以对扩展进行故障隔离。由主机进程调用的一般代理扩展可协调提供与主机进程相同的支持API的虚拟进程中适当扩展的调用。此外,可通过存储器复制或页表修改将用户模式环境提供给虚拟进程中的扩展。另外,虚拟进程,尤其是运行在虚拟机器上的虚拟操作系统进程,可通过克隆一相干状态来有效地创建。相干状态可以在虚拟机器启动时,或者在计算装置启动且观察并保存了适当的参数时起动。或者,操作系统在引导过程中可通过相信存在额外的CPU来创建相关状态。

【技术实现步骤摘要】

本专利技术一般涉及故障容许扩展,尤其涉及用于为扩展提供故障隔离的虚拟环境的系统和方法。
技术介绍
一种用于扩展操作系统或应用程序的越来越普及的机制是使用可提供额外的功能并可在个别的基础上传送和调用的扩展。例如,现代的操作系统依赖于硬件制造商提供的扩展以在由硬件制造商制造的硬件组件和操作系统软件之间接口。以此方式,操作系统作者只需提供通用硬件支持,而无需试图支持每一可想象的硬件设备。当新硬件设备被添加到运行操作系统的计算系统上时,特别地被设计成对在新硬件设备和操作系统之间接口的扩展可由硬件制造商提供,并可由操作系统用于控制新硬件设备和向用户提供对新硬件设备的功能的访问。除操作系统之外,许多其它软件应用程序依赖于扩展来提供额外的功能,同时降低主机应用程序的复杂性。例如,web浏览器应用程序可依赖于扩展来向用户提供解释各种数据类型或与其交互的能力。由此,web浏览器只需提供处理有限数据类型的能力,如以超文本标记语言(HTML)书写的网页或使用联合摄影专家组(JPEG)编码格式编码的图像。需要额外的浏览器应用程序能力的网页可依赖于浏览器应用程序的自定义扩展来提供需要的能力。例如,希望使用以很少使用的格式编码的图像的网页作者可提供一扩展,它可理解该特定的图像格式,并可与web浏览器接口以使web浏览器能够显示使用该格式编码的图像。其它应用程序也可使用扩展来提供增加的功能。例如,图像处理应用程序可使用由各种艺术家提供的扩展来允许用户访问由那些艺术家开发的许多不同的艺术图像处理算法。因此,图像处理程序能够提供基本的图像编辑特征,例如颜色和对比度控制。诸如看似将照片转换成油画的效果等更复杂的特征可由单独可用的扩展来提供。以此方式,图像处理应用程序的用户可个别地选择哪些扩展最适合于其需求,并可选择仅安装在给定那些要求时可能有用的那些扩展。一般而言,扩展通过各种应用程序接口(API)与主机软件应用程序交互。API定义了访问各种特征或能力的方法。由此,当一个组件包括用于实现一特定功能的代码和数据,并规定该功能以由API定义的方式来调用,且第二组件以由API定义的方式请求该功能时,这两个组件被认为是通过API交互。扩展和主机软件应用程序之间的交互一般通过两种类型的API发生服务API和支持API。支持API可由主机软件应用程序、操作系统或可由扩展用于访问由主机软件应用程序提供的功能的任一其它软件来实现。此外,支持API可被分层或堆叠,使得某些支持API可依赖于其它支持API,以执行请求的功能。另一方面,服务API可由扩展实现,并可由主机软件应用程序用于访问扩展所提供的功能。作为一个示例,使web浏览器能够显示以特定格式编码的图像的web浏览器扩展可展示服务API,web浏览器可使用该服务API将图像数据传递到扩展,并请求扩展解释该图像数据,而web浏览器可提供支持API,该支持API可提供扩展可向web浏览器请求的基本服务。许多扩展,尤其是操作系统扩展,如那些被设计成与硬件设备接口的扩展,可依赖于多个API来适当地与硬件接口。可被添加到现代计算装置的许多硬件设备通过由专用电路或处理单元控制的端口与计算装置物理地接口。操作系统的支持API可提供一些机制,通过这些机制,专用电路可由扩展使用以使扩展能够访问并控制为其设计它的那些硬件设备。例如,操作系统可提供允许扩展访问为硬件输入/输出通信留出的随机存取存储器的特定区域的支持API。或者,操作系统可提供允许扩展直接访问硬件输入/输出端口的支持API。另一方面,扩展可提供服务API以允许操作系统或其它软件应用程序访问由扩展提供的功能。例如,用于新显示设备的设备驱动程序可包括用于控制该显示设备的代码和数据。该显示设备驱动程序的代码和数据可由诸如操作系统代码或软件应用程序代码等其它代码以预定义的方式通过使用服务API来调用。在显示设备驱动程序的示例中,服务API可包括用于请求图像数据的显示的API、用于请求诸如其当前分辨率等显示信息的API、以及用于请求显示的能量节省特征的激活的API。不幸的是,由于主机软件应用程序和扩展一般由不同的个体创作,扩展不能与主机应用程序正确地接口是常见的。例如,某些扩展可能无法正确地使用由主机软件应用程序提供的支持API,从而传递不正确的参数、数据,或者不正确地请求各种功能。其它扩展可能试图完全绕过支持API,并直接访问功能而非通过主机软件应用程序来访问,如盘访问、屏幕访问等等。或者,扩展也可试图访问并非供扩展使用的支持API,如未被完整证明或仅供在软件应用程序本身内部使用的API。不正确地与其主机软件应用程序接口的扩展可导致整体主机软件应用程序的故障,甚至是整个计算系统的故障。当主机软件应用程序的用户被迫同时依赖于来自多方的多个扩展时,诸如通常由现代操作系统使用的第三方设备驱动程序的混合,则这尤其是有问题的。此外,这类故障通常难以诊断和正确地支持,因为尽管用户可责备主机软件应用程序,实际上是扩展导致了这一不稳定性。因此,期望创建一种扩展环境,它可向主机软件应用程序提供对特征的访问和扩展的能力,同时将主机软件应用程序与可由扩展引入的不稳定性隔离。
技术实现思路
本专利技术的实施例允许扩展在受保护的环境中执行,从该环境中,它们可向主机软件应用程序提供预期的好处,而同时将主机应用程序与由扩展导致的不稳定性隔离。在一个实施例中,扩展可在一虚拟环境中执行,它提供了扩展可正确地需要的支持API,同时将扩展与主机软件应用程序隔离。在另一实施例中,扩展可在一虚拟环境中执行,并且对应的代理扩展可以用代理扩展提供对原始扩展的能力的访问在主机软件应用程序的进程空间中执行,同时通过使用虚拟环境将主机软件应用程序与原始的扩展隔离。扩展和代理可以是类似的,以提供主机软件应用程序和被设计成与主机软件应用程序接口的扩展之间的故障隔离,或者扩展和代理可以是不同的,以不仅提供故障隔离,也通过使主机软件应用程序能够使用可能未被设计成与主机软件应用程序接口的扩展来扩展主机软件应用程序的功能。在又一实施例中,通过在虚拟环境中创建代用主机软件应用程序,或通过改变虚拟环境中的页表映射使得用户模式范围被映射到虚拟环境和主机环境中的同一物理存储器,需要用户模式环境的扩展可在虚拟环境中执行,或者作为另一替换方案,用户模式环境可被复制到虚拟环境中。为维持故障隔离,可以只读方式,或通过写复制(copy-on-write)技术来访问主机环境的物理存储器。在再一实施例中,通过引导具有扩展所需要的功能或功能的超集(superset),然后在需要虚拟环境的时间中随后的一点,克隆引导的原始虚拟环境的状态以创建需要的虚拟环境,可有效地创建其中可安全地执行扩展的虚拟环境。在另外一个实施例中,可在主机环境的初始启动序列期间,通过向主机环境指示在计算系统上存在第二处理单元,然后在主机环境完成了第二处理单元的相干状态的创建之后,向主机环境指示第二处理单元发生故障,随后向虚拟环境指示存在第二处理单元并使用在主机环境的启动期间创建的第二处理单元的相干状态来启动虚拟环境,可有效地创建其中可安全地执行扩展的虚拟环境。在还有一个实施例中,在主机环境的初始启动序列期间,通过向主机环境指示在计算系统中存在第二处理单元,允许主机环境创建第二本文档来自技高网
...

【技术保护点】
一种用于隔离由主机进程使用的扩展的方法,其特征在于所述方法包括以下步骤:检测所述主机进程的操作,其中,所述操作与所述扩展的功能有关;为所述扩展标识一代理,其中,所述代理支持与所述操作有关的功能;将所述代理加载到所述主 机进程中;将所述扩展加载到一虚拟进程中,其中,所述虚拟进程是所述主机进程的虚拟实例;将与所述操作相关联的请求从所述主机进程中的代理转发到所述虚拟进程中的扩展;以及将来自所述扩展的响应转发到所述主机进程中的代理,其中, 所述响应可由所述代理用于支持所述主机进程的操作。

【技术特征摘要】
US 2004-4-30 10/837,9711.一种用于隔离由主机进程使用的扩展的方法,其特征在于所述方法包括以下步骤检测所述主机进程的操作,其中,所述操作与所述扩展的功能有关;为所述扩展标识一代理,其中,所述代理支持与所述操作有关的功能;将所述代理加载到所述主机进程中;将所述扩展加载到一虚拟进程中,其中,所述虚拟进程是所述主机进程的虚拟实例;将与所述操作相关联的请求从所述主机进程中的代理转发到所述虚拟进程中的扩展;以及将来自所述扩展的响应转发到所述主机进程中的代理,其中,所述响应可由所述代理用于支持所述主机进程的操作。2.如权利要求1所述的方法,其特征在于,还包括以下步骤检测所述虚拟进程中的错误;以及用错误指示将控制返回给所述主机进程。3.如权利要求1所述的方法,其特征在于,所述操作是对所述扩展的调用,并且其中,所述代理向所述主机进程展示与所述扩展相关联的服务API。4.如权利要求1所述的方法,其特征在于,所述虚拟进程向所述扩展提供与所述主机进程相关联的支持API。5.如权利要求1所述的方法,其特征在于,转发所述请求包括将来自所述主机进程的请求转发到所述虚拟进程中的一占位程序,其中,如果所述扩展已被加载到所述主机进程中,则所述扩展以与所述扩展接收来自所述主机进程的请求一样的方式接收来自所述占位程序的请求。6.如权利要求1所述的方法,其特征在于,转发所述响应包括检测所述扩展或所述虚拟进程的非相容响应或故障;并且由所述代理向所述主机进程提供令所述主机进程提供的功能能够温和地退化的适当指示。7.如权利要求1所述的方法,其特征在于,还包括以下步骤通过将用户模式环境从所述主机进程复制到所述虚拟进程,在所述虚拟进程中提供所述主机进程的用户模式环境。8.如权利要求1所述的方法,其特征在于,还包括以下步骤通过将主机进程存储器和虚拟进程存储器映射到一公用物理存储器,在所述虚拟进程中提供所述主机进程的用户模式环境;以及保护所述公用物理存储器不受所述虚拟进程的写访问。9.如权利要求1所述的方法,其特征在于,所述虚拟进程是使用一保存的相干状态创建的虚拟机器进程,所保存的相干状态通过执行以下步骤来创建引导一初始虚拟机器;以及保存由所述初始虚拟机器的引导所创建的相干状态。10.如权利要求1所述的方法,其特征在于,所述主机进程是操作系统进程,而所述虚拟进程是使用所保存的相干状态创建的虚拟机器进程,所保存的相干状态通过记录所述操作系统进程的引导期间的状态来创建。11.一种有效地创建虚拟操作系统环境的方法,其特征在于,所述方法包括以下步骤在具有至少一个处理器的计算装置上开始一操作系统环境的引导;在所述操作系统环境的引导期间,向所述至少一个处理器指示所述计算装置具有一个或多个额外的处理器;在所述至少一个处理器和所述一个或多个额外处理器被初始化之后,保存所述操作系统环境引导期间的状态;在所述操作系统环境完成了与所述至少一个处理器相关联的至少一个组件绑定之后,向所述操作系统环境指示所述一个或多个额外处理器发生故障;向所述虚拟操作系统环境提供所保存的状态;使用所保存的状态引导所述虚拟操作系统环境,其中,引导所述虚拟操作系统环境包括防止所述至少一个处理器访问与所述至少一个组件绑定相关联的至少一个组件;以及使用用于向所述一个或多个额外处理器提供对与所述至少一个处理器相关联的至少一个组件绑定的访问的预先存在的支持,向所述虚拟操作系统环境提供对所述至少一个组件绑定的访问。12.如权利要求11所述的方法,其特征在于,引导所述虚拟操作系统环境还包括依赖于与所述至少一个处理器相关联的至少一个组件绑定;以及使用所述一个或多个额外处理器来完成所述虚拟操作系统环境的引导。13.如权利要求11所述的方法,其特征在于,还包括创建所述虚拟操作系统环境中对一指定组件的指定组件绑定,其中,所述指定组件与主宿在所述虚拟操作系统环境中的设备驱动程序接口。14.如权利要求13所述的方法,其特征在于,创建所述指定组件绑定包括在所述主机操作系统环境的引导期间高速缓存与所述指定组件有关的通信;以及向所述虚拟操作系统环境提供高速缓存的通信。15.如权利要求13所述的方法,其特征在于,创建所述指定组件绑定包括将所述指定组件绑定到所述主机操作系统环境;从所述主机操作系统环境内休眠所述指定组件,其中,所述休眠清楚地清洗了与所述指定组件有关的通信队列;以及将所述指定组件绑定到所述虚拟操作系统环境。16.一种具有计算机可执行指令的计算机可读介质,所述计算机可执行指令用于隔离由一主机进程使用的扩展,所述计算机可读介质包括计算机可执行指令,用于检测所述主机进程的操作,其中,所述操作与所述扩展的功能有关;为所述扩展标识一代理,其中,所述代理支持与所述操作有关的功能;将所述代理加载到所述主机进程中;将所述扩展加载到一虚拟进程中,其中,所述虚拟进程是所述主机进程的实例;将与所述操作相关联的请求从所述主机进程中的代理转发到所述虚拟进程中的扩展;以及将来自所述扩展的响应转发到所述主机进程中的代理,其中,所述响应可由所述代理用于支持所述主机进程的操作。17.如权利要求16所述的计算机可读介质,其特征在于,所述主机进程不被设计成调用所述扩展。18.如权利要求16所述的计算机可读介质,其特征在于,还包括计算机可执行指令,用于检测所述虚拟进程中的错误;以及用一错误指示将控制返回给所述主机进程。19.如权利要求16所述的计算机可读介质,其特征在于,所述操作是对所述扩展的调用,并且其中,所述代理向所述主机进程展示与所述扩展相关联的服务。20.如权利要求16所述的计算机可读介质,其特征在于,还包括用于使用软件故障隔离技术执行所述主机进程中的扩展的通常被调用的轻量级功能的计算机可执行指令。21.如权利要求16所述的计算机可读介质,其特征在于,所述虚拟进程向所述扩展提供与所述主机进程相关联的支持API。22.如权利要求16所述的计算机可读介质,其特征在于,用于转发所述请求的计算机可执行指令包括用于将来自所述主机进程的请求转发到所述虚拟进程中一占位程序的计算机可执行指令,其中,如果所述扩展已被加载到所述主机进程中,则所述扩展以与所述扩展接收来自所述主机进程的请求的同一方式接收来自所述占位程序的请求。23.如权利要求16所述的计算机可读介质,其特征在于,用于转发所述响应的计算机可执行指令包括计算机可执行指令,用于检测所述扩展或所述虚拟进程的非相容响应或故障;以及由所述代理向所述主机进程提供令所述主机进程提供的功能能够温和地退化的适当指示。24.如...

【专利技术属性】
技术研发人员:EP沃伯P巴勒姆T罗德U埃林松
申请(专利权)人:微软公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1