首页 / 专利库 / 车轮和轮胎 / 安全模式 / 虚拟机的虚拟安全模式

虚拟机的虚拟安全模式

阅读:1021发布:2020-05-11

专利汇可以提供虚拟机的虚拟安全模式专利检索,专利查询,专利分析的服务。并且虚拟机 管理器(例如管理程序)实现虚拟 安全模式 ,该虚拟安全模式使得多个不同的虚拟信任等级对虚拟机的虚拟处理器可用。不同 存储器 访问 保护(如读、写、和/或执行存储器的能 力 )可针对每个虚拟信任等级与不同的存储器部分(例如存储器页)相关联。虚拟信任等级被组织为层次结构,其中更高等级的虚拟信任等级比更低的虚拟信任等级具有更多特权,且运行在更高虚拟信任等级中的程序能够改变更低虚拟信任等级的存储器访问保护。虚拟信任等级的数量可以变化,且可针对不同虚拟机以及针对同一虚拟机中的不同虚拟处理器变化。,下面是虚拟机的虚拟安全模式专利的具体信息内容。

1.一种用于虚拟机的虚拟安全模式的方法,包括:
针对虚拟机(106)实现(402)虚拟安全模式,所述虚拟安全模式具有多个虚拟信任等级(204(0)-204(x)),所述多个虚拟信任等级(204(0)-204(x))被组织为层次结构以使得更高等级的虚拟信任等级(204(x))比更低虚拟信任等级(204(0))具有更多特权,其中每一个虚拟信任等级具有与其相关联的独立的存储器访问保护集合,每一个虚拟信任等级具有与其相关联的独立的虚拟处理器状态,并且每一个虚拟信任等级具有与其相关联的独立的中断子系统;
允许(404)所述虚拟机(106)的虚拟处理器(202)在所述多个虚拟信任等级(204(0)-
204(x))中的任何虚拟信任等级中运行,所述虚拟处理器(202)每次仅在一个虚拟信任等级中运行,且所述虚拟处理器(202)正在其中运行的虚拟信任等级是活动虚拟信任等级;以及通过管理所述虚拟机(106)的虚拟机管理器(102)允许(406)在所述虚拟处理器(202)上运行的程序基于为所述活动虚拟信任等级配置的存储器访问保护(206(0)-206(x))来访问所述虚拟机的存储器。
2.如权利要求1所述的方法,其特征在于,所述存储器访问保护(206(0)-206(x))包括针对所述虚拟机(106)的虚拟存储器空间中的多个存储器页中的每个页的存储器访问保护(206(0)-206(x))。
3.如权利要求2所述的方法,其特征在于,允许所述程序访问存储器包括:
接收对存储器地址的特定类型的访问的请求,所述特定类型的访问包括读访问、写访问、或执行访问;
检查所述多个存储器页中包括所述存储器地址的一个存储器页的活动虚拟信任等级的存储器访问保护(206(0)-206(x))是否指示所述特定类型的访问被允许;以及仅响应于所述一个存储器的活动虚拟信任等级的存储器访问保护(206(0)-206(x))指示所述特定类型的访问被允许而允许所述程序执行对所处存储器地址的所述特定类型的访问。
4.如权利要求1所述的方法,其特征在于,进一步包括:
通过所述虚拟机管理器(102)允许在所述虚拟处理器(202)正在所述更高虚拟信任等级中操作时运行的程序改变针对所述更低虚拟信任等级的存储器访问保护(206(0)-206(x));以及
通过所述虚拟机管理器(102)阻止在所述虚拟处理器(202)正在所述更低虚拟信任等级中操作时运行的程序改变针对所述更高虚拟信任等级的存储器访问保护(206(0)-206(x))。
5.如权利要求1所述的方法,其特征在于,进一步包括响应于一个或多个指令被执行、响应于接收到以所述更高虚拟信任等级为目标的中断、或者响应于访问所述更高虚拟信任等级的受保护地址或受保护组件的操作,将所述活动虚拟信任等级从所述更低虚拟信任等级切换到所述更高虚拟信任等级。
6.如权利要求1所述的方法,其特征在于,所述活动虚拟信任等级包括所述更高虚拟信任等级,所述方法进一步包括当接收到针对所述更低虚拟信任等级的中断时通知所述活动虚拟信任等级的程序。
7.一种计算设备,具有一个或多个处理器、操作系统(112)、以及实现具有多个虚拟信任等级(204(0)-204(x))的虚拟安全模式的虚拟机管理器(102),其中每一个虚拟信任等级具有与其相关联的独立的存储器访问保护集合,每一个虚拟信任等级具有与其相关联的独立的虚拟处理器状态,并且每一个虚拟信任等级具有与其相关联的独立的中断子系统,针对一个或多个虚拟处理器(202)中的每个虚拟处理器,所述虚拟机管理器(102)允许(404)该虚拟处理器(202)基于所述多个虚拟信任等级(204(0)-204(x))中该虚拟处理器(202)正在其中运行的一个虚拟信任等级配置的存储器访问保护(206(0)-206(x))来访问物理存储器,所述多个虚拟信任等级(204(0)-204(x))中该虚拟处理器(202)正在其中运行的所述一个虚拟信任等级是活动虚拟信任等级。
8.如权利要求7所述的计算设备,其特征在于,所述一个或多个虚拟处理器(202)包括多个虚拟处理器(202),且所述多个虚拟处理器(202)中的每个虚拟处理器并行运行在不同的虚拟信任等级(204(0)-204(x))中。
9.如权利要求7所述的计算设备,其特征在于,所述存储器访问保护(206(0)-206(x))包括针对被映射到所述物理存储器的虚拟存储器空间的多个存储器页中的每一个存储器页的存储器访问保护(206(0)-206(x)),允许所述一个或多个虚拟处理器(202)中的每一个虚拟处理器访问所述物理存储器包括:
接收对映射到所述物理存储器的存储器地址的特定类型的访问的请求,所述特定类型的访问包括读访问、写访问、或执行访问;
检查所述多个存储器页中包括所述存储器地址的一个存储器页的活动虚拟信任等级的存储器访问保护(206(0)-206(x))是否指示所述特定类型的访问被允许;以及仅响应于所述一个存储器的活动虚拟信任等级的存储器访问保护(206(0)-206(x))指示所述特定类型的访问被允许而允许程序执行对所处存储器地址的所述特定类型的访问。
10.如权利要求7所述的计算设备,其特征在于,所述计算设备进一步具有执行直接存储器访问的一个或多个附加设备,针对所述一个或多个附加设备中的每个附加设备,所述虚拟机管理器(102)进一步允许该附加设备基于所述多个虚拟信任等级(204(0)-204(x))中该附加设备正在其中运行的一个虚拟信任等级配置的存储器访问保护(206(0)-206(x))来访问所述物理存储器。
11.一种包括用于执行如权利要求1-6中的任一项所述的方法的装置的计算机系统
12.一种具有指令的计算机可读存储介质,所述指令在被执行时使机器执行如权利要求1-6中的任一项所述的方法。

说明书全文

虚拟机的虚拟安全模式

[0001] 背景
[0002] 随着计算技术发展,计算设备已经变得越来越互连。尽管这种互连提供了许多益处,但它并非没有其问题。一种这样的问题是计算设备越来越多地暴露于恶意程序。恶意程序能以不同方式操作,诸如通过从计算设备窃取信息、禁用计算设备、使用计算设备发起针对其他计算设备的攻击等等。尽管已经开发了一些技术来保护计算设备以防范恶意程序,但是这样的恶意程序仍然存在且在它们感染用户的计算机时能导致破坏用户体验。
[0003] 概述
[0004] 提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
[0005] 根据一个或多个方面,针对虚拟机实现虚拟安全模式,该虚拟安全模式具有多个虚拟信任等级。该多个虚拟信任等级被组织为层次结构以使得更高等级的虚拟信任等级比更低的虚拟信任等级更享有特权。允许该虚拟机的虚拟处理器在该多个虚拟信任等级中的任何虚拟信任等级中运行,但是该虚拟处理器每次仅在一个虚拟信任等级中运行,且该虚拟处理器正在其中运行的虚拟信任等级是活动虚拟信任等级。管理虚拟机的虚拟机管理器允许在虚拟处理器上运行的程序基于为该活动虚拟信任等级配置的存储器访问保护来访问该虚拟机的存储器。
[0006] 根据一个或多个方面,计算设备具有一个或多个处理器、操作系统、以及实现具有多个虚拟信任等级的虚拟安全模式的虚拟机管理器。该虚拟机管理器针对一个或多个虚拟处理器中的每个虚拟处理器允许该虚拟处理器基于为该多个虚拟信任等级中的该虚拟处理器在其中运行的一个虚拟信任等级配置的存储器访问保护来访问物理存储器,该多个虚拟信任等级中的该虚拟处理器在其中运行的该一个虚拟信任等级是该活动虚拟信任等级。
[0007] 附图简述
[0008] 在全部附图中,使用相同的附图标记来指示相同的特征。
[0009] 图1是例示出根据一个或多个实施例的实现本文所讨论的技术的示例计算设备的框图
[0010] 图2示出根据一个或多个实施例的多个虚拟信任等级的示例。
[0011] 图3示出根据一个或多个实施例的实现多个虚拟信任等级的示例系统。
[0012] 图4是示出根据一个或多个实施例的实现针对虚拟机的虚拟安全模式的示例过程的流程图
[0013] 图5是示出根据一个或多个实施例的针对虚拟机启用该虚拟安全模式的示例过程的流程图。
[0014] 图6示出一般的包括示例计算设备的示例系统,该示例计算设备表示可以实现本文中描述的各种技术的一个或多个系统和/或设备。
[0015] 详细描述
[0016] 本文讨论针对虚拟机的虚拟安全模式。虚拟机管理器实现虚拟安全模式,该虚拟安全模式使得多个不同的虚拟信任等级对虚拟机的虚拟处理器可用。不同存储器访问保护(如读、写、和/或执行存储器的能)可针对每个虚拟信任等级与不同的存储器部分(例如存储器页)相关联。虚拟信任等级被组织为层次结构,其中更高等级的虚拟信任等级比更低的虚拟信任等级具有更多特权,且运行在更高虚拟信任等级中的程序能够改变更低虚拟信任等级的存储器访问保护。虚拟信任等级的数量可以变化,且可针对不同虚拟机以及针对同一虚拟机中的不同虚拟处理器变化。
[0017] 图1是例示出根据一个或多个实施例的实现本文所讨论的技术的示例计算设备100的框图。计算设备100可以是各种各样不同类型的设备中的任何设备。例如,计算设备
100可以是台式计算机、服务器计算机、膝上型或上网本计算机、平板或笔记本计算机、移动站、娱乐设备、通信上耦合到显示设备的机顶盒、电视机或其他显示设备、蜂窝式或其他无线电话、游戏控制台、车载计算机、可穿戴计算机等等。
[0018] 计算设备100包括虚拟机管理器102(也称为管理程序)以及一个或多个组件104。虚拟机管理器102管理对由组件104所提供的功能的访问。替代地,虚拟机管理器102可运行主机操作系统(未示出),在该情况下主机操作系统管理对由组件104所提供的功能的访问。
[0019] 组件104可以是各种各样的不同处理器组件、输入/输出(I/O)组件、和/或其他组件或设备。例如,组件104可包括一个或多个处理器或处理器核心、一个或多个存储器组件(如易失性和/或非易失性存储器)、一个或多个存储设备(如光盘和/或磁盘、闪存驱动器)、一个或多个通信组件(如有线和/或无线网络适配器)、它们的组合等等。尽管被例示为计算设备100的一部分,但是组件104中的一个或多个(如一个或多个存储设备)可被实现在计算设备100的外部。运行在计算设备100上的包括虚拟机管理器102在内的各种组件或模可直接地和/或经由其他组件或模块间接地访问由组件104所提供的该功能。
[0020] 虚拟机管理器102允许虚拟机106在计算设备100上运行。单个虚拟机106被例示在计算设备100中,尽管另选地多个虚拟机可在计算设备100上运行。虚拟机指的是物理计算设备(或其他机器或系统)的软件实现,该软件实现能够类似于物理计算设备运行程序。虚拟机包括类似于组件104(但却是组件104的软件实现)的一个或多个虚拟组件。操作系统以及其他应用可使用虚拟组件就好像它们在使用组件104时那样来执行,包括在虚拟处理器或虚拟处理器核心上运行、访问虚拟存储器等等。虚拟机106中执行的操作系统和其他应用不需要知道且通常不知道它们正在虚拟机中执行。
[0021] 虚拟机106包括操作系统112、一个或多个应用114、以及一个或多个虚拟组件116。操作系统112在作为组件116中的一个或多个组件而被包括在内的一个或多个虚拟处理器或处理器核心上运行或执行,并管理应用114的执行。
[0022] 虚拟机管理器102包括虚拟机(VM)控制模块122和虚拟安全模式(VSM)模块124。虚拟机控制模块122管理虚拟组件116到组件104的映射,包括对虚拟处理器或处理器核心的调度以在物理处理器或处理器核心上执行。虚拟安全模式模块124管理虚拟机106的虚拟安全模式,从而为虚拟组件116提供不同的虚拟信任等级,如下面更详细地讨论的。虚拟信任等级是虚拟处理器的执行环境,且每个虚拟处理器可独立于任何其它虚拟处理器进入或退出虚拟信任等级。尽管被例示为两个分开的模块,但是应注意模块122和124的功能可被组合成单个模块(如虚拟安全模式模块124的功能可被包括在VM控制模块122中)。
[0023] 当针对虚拟机106启用虚拟安全模式时,虚拟安全模式模块124使得多个不同虚拟信任等级(VTL)对虚拟机106的虚拟处理器(一个或多个虚拟组件116)可用。虚拟安全模式可按不同方式被启用或禁用,诸如响应于来自运行在虚拟处理器上的程序(例如,虚拟安全模式加载程序)的请求、响应于虚拟机管理器102的配置设置、响应于计算设备100的管理员或用户提供的输入等等。计算设备100可任选地包括多个虚拟机,且可独立地针对不同的虚拟机器启用或禁用虚拟安全模式。从而,在任何给定时间,可针对计算设备100的一个或多个虚拟机启用虚拟安全模式,而针对计算设备100的一个或多个其它虚拟机禁用虚拟安全模式。
[0024] 虚拟机管理器102提供一种机制,借助该机制,操作系统112能够检测对虚拟安全模式的支持的存在,以及关于虚拟安全模式的其它信息,诸如所支持的虚拟信任等级的数量。作为示例,虚拟机管理器102可经由可被操作系统112读取的虚拟寄存器(例如,经由CPUID叶)来报告对虚拟安全模式的支持的存在以及虚拟信任等级的数量。
[0025] 操作系统112和虚拟机管理器102管理由多个块或部分(称为存储器页(或简称为页))组成的存储器的存储和访问。存储器可以是例如任何类型的CPU(中央处理单元)可寻址的存储器,诸如易失性存储器(如RAM)或非易失性存储器(如闪存)。不同程序可被分配存储器页,且这些程序可以是应用114、操作系统112的程序、或其他组件或模块。
[0026] 操作系统112和虚拟机管理器102可允许一程序对存储器页的不同类型的访问,诸如读取访问、写入访问、以及执行访问。如果读取访问(也称为读取权限)给予一存储器页,则该存储器页的内容就允许被读取(例如由特定的一个或多个程序)。如果写入访问(也称为写入权限)给予一存储器页,则内容就允许被写入该存储器页(例如由特定的一个或多个程序)。如果执行访问(也称为执行权限)给予一存储器页,则存储在该存储器页中(也称为存储在该存储器页上)的代码就允许被执行。
[0027] 计算设备100采用虚拟存储器,其是被映射到另一地址空间(如物理存储器)的地址空间。应用被指派了虚拟存储器空间,在该虚拟存储器空间中应用代码被执行且数据被存储。存储器管理器(例如处理器的)管理虚拟存储器空间中的虚拟存储器地址到另一存储器空间中的地址的映射。当将虚拟存储器地址从虚拟存储器地址空间映射到另一存储器空间时,执行地址转换。地址转换表被用于执行该映射,且可被充分利用来实现本文所讨论的技术。
[0028] 图2示出根据一个或多个实施例的多个虚拟信任等级的示例。虚拟处理器202(其可以是图1的虚拟组件116)可在任何数量(x个)的不同虚拟信任等级204(0),…,204(x)中运行。虚拟信任等级204被包括为图1的虚拟安全模式模块124所提供的虚拟安全模式的一部分。在一个或多个实施例中,虚拟处理器202可在两个不同虚拟信任等级中运行,它们被称为正常模式(例如,VTL 0)和安全模式(例如,VTL 1)。
[0029] 每个虚拟信任等级具有与其相关联的存储器访问保护集合206。不同的虚拟信任等级可具有不同的访问保护集合,且虚拟信任等级的访问保护集合可被用来在该虚拟处理器在该虚拟信任等级中运行时限制什么存储器可被访问和/或该存储器可如何被访问。
[0030] 每个虚拟信任等级还具有与其相关联的虚拟处理器状态208。虚拟处理器状态是指虚拟处理器202的各种不同的寄存器设置、配置值等等。针对不同虚拟信任等级维护独立的虚拟处理器状态208,从而阻止一个虚拟信任等级访问另一虚拟信任等级的处理器状态。尽管某一虚拟处理器状态是针对不同虚拟信任等级独立维护的(也被称为私有处理器状态),然而其它处理器状态(也被称为共享处理器状态)可跨多个虚拟信任等级共享,如下面更详细地讨论的。
[0031] 每个虚拟信任等级还具有与其相关联的中断子系统210。中断子系统指代用于管理虚拟处理器202的中断的各个不同的模块、程序、设置等。针对不同虚拟信任等级维护独立的中断子系统210,从而允许在一个虚拟信任等级安全地管理中断同时阻止运行在另一虚拟信任等级(例如,较低的虚拟信任等级,如下面更详细地讨论的)的程序生成意外中断或掩蔽中断。
[0032] 虚拟信任等级被组织为层次结构,其中更高等级的虚拟信任等级比更低的虚拟信任等级具有更多特权,且更低虚拟信任等级比更高虚拟信任等级具有更少特权。运行在比另一虚拟信任等级具有更多特权的虚拟信任等级中操作的虚拟处理器202上的程序可限制在该另一虚拟信任等级中操作的程序或设备对存储器位置的访问。运行在虚拟处理器202上的程序还可任选地改变针对虚拟处理器202正在其中运行的虚拟信任等级的存储器访问保护。然而,在比另一虚拟信任等级具有更少特权的虚拟信任等级中操作的虚拟处理器202上运行的程序不能限制在该另一虚拟信任等级中操作的程序或设备对存储器位置的访问。在一个或多个实施例中,用整数值(例如,0、1、2等)来标记虚拟信任等级,其中具有更大整数值的虚拟信任等级是比具有更小整数值的虚拟信任等级更高等级的虚拟信任等级。替换地,具有更小整数值的虚拟信任等级可以是比具有更大整数值的虚拟信任等级更高等级的虚拟信任等级,或者可使用其它标记技术(例如字母、其它字符或符号等等)。
[0033] 在一个或多个实施例中,在每页(每存储器页)的基础上实现存储器访问保护。每个存储器页具有相关联的存储器访问保护,且针对一存储器页的存储器访问保护可以与其它存储器页的存储器访问保护独立地改变。存储器访问保护也独立于特定页或连贯地址范围具有相同存储器访问保护的任何要求做出。尽管本文参考了在每页基础上实现的存储器访问保护,然而应当注意,存储器访问保护可替换地在其它存储器地址组或存储器地址块中实现,诸如存储器页的部分、多个存储器页、地址范围等等。
[0034] 针对一虚拟信任等级的存储器访问保护可按各种不同方式改变。在一个或多个实施例中,虚拟安全模式模块124展现接口(例如函数调用),该接口由运行在虚拟处理器202上的程序调用以改变针对一虚拟信任等级的存储器访问保护,从而标识要被改变的存储器访问保护。响应于接口被调用,虚拟安全模块124根据请求改变存储器访问保护(假定该改变是用于较低(或任选地相同)虚拟信任等级的)。
[0035] 虚拟处理器202在任何给定时间可运行或操作在仅一个虚拟信任等级中,且在特定时间处理器202在其中运行或操作的虚拟信任等级被称为在该特定时间该处理器202的活动虚拟信任等级。虚拟处理器202可按不同方式从一个虚拟信任等级切换到另一虚拟信任等级,诸如响应于特定事件(例如,中断、特定代码序列的执行等等)。
[0036] 返回图1,作为组件104的物理处理器向作为虚拟组件116的虚拟处理器指派虚拟机存储器空间,且维护地址转换表。地址转换表将被指派到虚拟机106的虚拟机存储器空间中的地址映射到物理存储器空间(作为组件104的物理存储器)中的地址。在任何给定时间虚拟机存储器空间中的特定地址映射到物理存储器空间的哪一地址可改变,且由存储器管理器(例如,物理处理器的一部分)控制。使用各种各样的公共和/或专有技术中的任何技术,存储器管理器可改变映射,允许多个不同的虚拟处理器共享物理存储器空间,和/或允许虚拟机存储器空间比物理存储器空间更大。
[0037] 虚拟安全模式模块124维护针对该虚拟机存储器空间的每个存储器页的存储器访问保护,从而标识针对虚拟机106中的每个虚拟处理器的每个虚拟信任等级的存储器访问保护。虚拟安全模式模块124可按各种不同方式维护针对存储器页的存储器访问保护。在一个或多个实施例中,虚拟安全模式模块124为虚拟机106中的每个虚拟处理器的每个虚拟信任等级维护存储器访问保护的表格、列表或其它记录。替换地,虚拟安全模式模块124可按其它方式维护存储器访问保护,诸如将被指派给虚拟机106的虚拟机存储器空间中的地址映射到物理存储器空间中的地址的地址转换表的部分。
[0038] 在一个或多个实施例中,物理处理器可支持多个虚拟到物理转换层。每个虚拟机可管理器自己的虚拟到访客物理页映射。虚拟机管理器管理从访客物理页到真实物理页的映射。此外,每个虚拟信任等级可在其向任何较低等级的虚拟信任等级应用时编辑到机器物理页的此最终映射。
[0039] 图3示出根据一个或多个实施例的实现多个虚拟信任等级的示例系统300。示例系统300包括两个虚拟处理器:虚拟处理器302和虚拟处理器304。虚拟处理器302和304可各自为图1的虚拟组件116和/或图2的虚拟处理器202。
[0040] 虚拟处理器302和304实现了被称为VTL 0和VTL 1的两个不同的虚拟信任等级。每个虚拟处理器的每个虚拟信任等级具有其自己的本地中断子系统,被解说为高级可编程中断控制器(APIC)306(用于虚拟处理器302的VTL 0的中断控制器)、APIC 308(用于虚拟处理器302的VTL 1的中断控制器)、APIC 310(用于虚拟处理器304的VTL 0的中断控制器)、以及APIC 312(用于虚拟处理器304的VTL 1的中断控制器)。在任何给定时间,虚拟处理器302和304可在相同或不同虚拟信任等级中操作。从而,多个虚拟处理器可并行地在不同虚拟信任等级中运行。
[0041] 系统300维护VTL 0的存储器访问保护314的记录以及VTL 1的存储器访问保护316的记录。虚拟机管理器(例如,图1的虚拟安全模式模块124)维护存储器访问保护314和316。对于从运行在VTL 0的虚拟处理器302或304对存储器页的地址的每个访问,虚拟机管理器检查包括被访问的页的存储器页的VTL 0访问存储器保护314。如果VTL 0访问指示该访问被允许的存储器保护314,则访客物理到系统物理存储器映射318被用来将该地址映射到系统物理存储器320的存储器地址,且所请求的访问被执行。访客物理到系统物理存储器映射
318例如是地址转换表,其将虚拟机存储器空间(访客物理地址,或即GPA)中的地址映射到物理存储器空间中的地址(系统物理地址,或即SPA),如同上面讨论的。然而,如果VTL 0访问指示该访问不被允许的存储器保护314,则所请求的访问被拒绝(不被执行)。因为所请求的访问被拒绝,所以不需要执行该地址到物理存储器320的存储器地址的映射。
[0042] 类似地,对于从运行在VTL 1的虚拟处理器302或304对存储器页的地址的每个访问,虚拟机管理器检查包括被访问的页的存储器页的VTL 1访问存储器保护316。如果VTL 1访问指示该访问被允许的存储器保护316,则访客物理到系统物理存储器映射318被用来将该地址映射到系统物理存储器320的存储器地址,且所请求的访问被执行。然而,如果VTL 1访问指示该访问不被允许的存储器保护316,则所请求的访问被拒绝(不被执行)。因为所请求的访问被拒绝,所以不需要执行该地址到物理存储器320的存储器地址的映射。
[0043] 各不同存储器访问保护可被标识为存储器访问保护314和316。例如,存储器访问保护可包括以下保护:不可访问(该存储器页上的地址不能被读、写或执行);只读、不可执行(该存储器页上的地址可被读但不能被写或执行);只读、可执行(该存储器页上的地址可被读或执行,但是不能被写);读/写、不可执行(该存储器页上的地址可被读或写,但是不能被执行);以及读/写、可执行(该存储器页上的地址可被读、写或执行)。
[0044] 这些不同的存储器访问保护支持各种不同使用场景。例如,当运行在VTL 1中时,一存储器页的VTL 0存储器访问保护可被设置为“不可访问”。此设置将存储器页设为“安全”模式,使得该存储器页对运行在VTL 0中的虚拟处理器302和/或304上的程序不可访问。作为另一示例,当运行在VTL 1中时,一存储器页的VTL 0存储器访问保护可被设置为“只读、可执行”。此设置将该存储器页放在其中其可被运行在VTL 0中的虚拟处理器302和/或
304上的程序读和执行但是不能被运行在VTL 1中的虚拟处理器302和/或304更改的模式中。从而,各代码完整性和其它安全程序可被存储在VTL 1中的存储器页中,并由VTL 0中的程序运行,同时确保运行在VTL 0中的那些程序不能更改所述程序。
[0045] 附加设备也可任选地与特定虚拟信任等级相关联。访问存储器页(例如,执行直接存储器访问(DMA))的任何附加设备可与虚拟信任等级相关联。系统300包括示例设备322和324。设备322与VTL 0相关联,且与运行在VTL 0中的虚拟处理器302和304类似,设备322被允许根据VTL 0存储器访问保护314来访问存储器页。类似地,设备324与VTL 1相关联,且与运行在VTL 1中的虚拟处理器302和304类似,设备324被允许根据VTL 1存储器访问保护316来访问存储器页。
[0046] 在一个或多个实施例中,每个设备322和324被初始化以在最低虚拟信任等级(例如,VTL 0)中操作。虚拟处理器302或304可将设备配置成与活动VTL相关联或任选地与任何较低等级VTL相关联。虚拟处理器302或304可按各种方式将设备配置成与特定VTL相关联,诸如通过调用虚拟机管理器102所展示的调用(例如函数)。
[0047] 图1的虚拟安全模式模块124维护哪些设备与哪些虚拟信任等级相关联的记录。模块124更新该记录以反映哪些虚拟安全信任等级与哪些设备相关联中的改变。虚拟安全模式模块124还维护在任何给定时间每个虚拟处理器302和305正在哪些虚拟信任等级中操作的记录。虚拟处理器302和304可按不同方式从一个虚拟信任等级切换到另一虚拟信任等级,且每当这种切换发生时,被切换到的虚拟信任等级的指示被包括在模块124所维护的记录中。
[0048] 在所解说的示例系统300中,针对不同虚拟信任等级的存储器访问保护314和316被独立实现,且公共存储器映射318被所有虚拟信任等级共享。替换地,存储器访问保护314和316被作为存储器映射318的一部分实现。在这种情形中,单一存储器映射318可被实现,该单一存储器映射包括针对所有虚拟信任等级的存储器访问保护,或替换地独立存储器映射可被实现(类似于存储器映射318),每个存储器映射包括针对一不同虚拟信任等级的存储器访问保护。
[0049] 图4是示出根据一个或多个实施例的实现虚拟机的虚拟安全模式的示例过程400的流程图。过程400由诸如图1的虚拟机管理器102等虚拟机管理器来执行,并可以用软件、固件硬件、或其组合来实现。过程400被示为一组动作,并且不仅限于所示出的用于执行各种动作的操作的顺序。过程400是用于实现虚拟机的虚拟安全模式的示例过程;实现虚拟机的虚拟安全模式的附加讨论参考不同附图包括在本文中。
[0050] 在过程400中,实现虚拟机的虚拟安全模式(动作402)。虚拟安全模式具有被组织为层次结构的多个虚拟信任等级以使得更高的虚拟信任等级比更低的虚拟信任等级具有更多特权。运行在具有更多特权的虚拟信任等级中的程序能够改变具有更少特权的虚拟信任等级的存储器访问保护。然而,运行在具有更少特权的虚拟信任等级中的程序不能改变具有更多特权的虚拟信任等级的存储器访问保护。
[0051] 虚拟机的每个虚拟处理器被允许在多个虚拟信任等级中的任何一个虚拟信任等级中运行(动作404)。在任何给定时间虚拟处理器在其中运行的虚拟信任等级被称为活动虚拟信任等级,且虚拟处理器可按不同方式切换虚拟处理器在其中运行的虚拟信任等级,如下面更详细地讨论的。
[0052] 虚拟机管理器允许在虚拟机的虚拟处理器上运行的程序基于该活动虚拟信任等级的存储器访问保护来访问该虚拟机的存储器(动作406)。存储器访问保护可允许或禁止特定类型的访问,诸如读、写和/或执行访问。存储器访问保护可在每存储器页的基础上实现,如上面讨论的。
[0053] 返回图1,在一个或多个实施例中,虚拟机106的虚拟处理器被初始化以在单一虚拟信任等级(诸如VTL 0)中运行。在仅单一虚拟信任等级的情况下,虚拟机106也可被称为没有针对该虚拟机106启用虚拟安全模式。为了在更高虚拟信任等级中运行,虚拟机106被针对一个或多个更高虚拟信任等级启用(也被称为针对该虚拟机106启用虚拟安全模式)。在启用更高虚拟信任等级之后,运行在该更高虚拟信任等级中的程序可改变针对更低虚拟信任等级的存储器访问保护。
[0054] 在一个或多个实施例中,在各种不同时间可针对虚拟机106启用一个或多个更高虚拟信任等级。例如,在虚拟机106的创建和/或虚拟机管理器102的引导期间、在虚拟机106引导且运行了阈值时间量之后(例如,数分钟或数小时),可针对虚拟机106启用一个或多个更高虚拟信任等级。
[0055] 图5是示出根据一个或多个实施例的针对虚拟机启用该虚拟安全模式的示例过程500的流程图。过程500由运行在虚拟机中的程序和虚拟机管理器(诸如运行在图1的虚拟机
106中的程序和图1的虚拟机管理器102)执行,且可用软件、固件、硬件或其组合来实现。过程500被示为一组动作,并且不仅限于所示出的用于执行各种动作的操作的顺序。过程500是用于针对虚拟机启用虚拟安全模式的示例过程;针对虚拟机启用虚拟安全模式的附加讨论参考不同附图包括在本文中。
[0056] 在过程500中,运行在虚拟机中的程序将虚拟安全模式镜像加载到存储器中(动作502)。该程序可被视为运行在最低虚拟信任等级中(即使虚拟安全模式尚未被启用)。该程序在其中运行的虚拟信任等级也被称为启动虚拟信任等级。在一个或多个实施例中,虚拟安全模式镜像被该程序(其可被称为虚拟安全模式加载器)加载到存储器中,从而将虚拟安全模式镜像复制到或以其它方式放到该虚拟机的虚拟存储器空间的存储器页中。虚拟安全模式镜像是指在执行时实现虚拟安全模式的代码和数据(例如,可由处理器执行的对象代码)。
[0057] 还(例如由加载虚拟安全模式镜像的程序)向虚拟机管理器通知虚拟安全模式镜像被加载到的存储器页。还按不同方式通知虚拟机管理器,诸如通过虚拟安全模式加载器调用虚拟机管理器所展示的调用(也被称为超级调用(hypercall)并提供该虚拟安全模式镜像被加载到的存储器页的指示作为超级调用的参数。超级调用可以例如是HvLoadVsmImage()超级调用。
[0058] 响应于虚拟安全模式镜像被加载到的存储器页的通知,虚拟机管理器使得那些存储器页对该启动虚拟信任等级不可访问(动作504)。虚拟机管理器还使得那些存储器页对比该启动虚拟信任等级更低等级的虚拟信任等级(如果存在)不可访问。可按不同方式使得存储器页不可访问,诸如使得存储器页的存储器访问保护对该启动虚拟信任等级(以及比该启动虚拟信任等级更低等级的任何虚拟信任等级)“不可访问”。
[0059] 此外,虚拟机管理器准备虚拟安全模式镜像(动作506)。准备虚拟安全模式镜像是指将虚拟机管理器置于能够执行并验证虚拟安全模式镜像的状态。这种准备可包括记录关于虚拟安全模式镜像被存储的位置(例如,存储器页)的各种内部状态,并且还生成虚拟安全模式镜像的散列值。在虚拟处理器上启用更高等级的虚拟信任等级之后首次进入该更高等级的虚拟信任等级时,预期虚拟处理器以良好定义的状态执行。这允许确保该初始程序或运行在该更高等级虚拟信任等级中的程序正确地操作。初始程序或运行在更高等级虚拟信任等级的程序可在其在更高等级虚拟信任等级将其执行环境开机时使用此信息。
[0060] 虚拟安全模式镜像的散列值可使用各种公开和/或专有散列函数中的任何函数来生成,诸如安全散列算法(SHA)散列函数族中的任何散列函数。散列值可以是跨所有存储器页的虚拟安全模式镜像的散列值,或替换地是虚拟安全模式镜像的至少部分被加载到的存储器页中的每个存储器页的散列值的集合。散列值可例如被虚拟机管理器用于随后验证虚拟安全模式图像在被加载到存储器之后没有被更改。
[0061] 虚拟机管理器随后在该启动虚拟处理器上启用目标虚拟信任等级(动作508)。目标虚拟信任等级是指比该启动虚拟信任等级更高的虚拟信任等级。启动虚拟处理器是指运行虚拟安全模式加载器的虚拟处理器。在一个或多个实施例中,虚拟机管理器响应于虚拟机管理器所展示的超级调用被虚拟安全模式加载器调用而启用该启动虚拟处理器上的目标虚拟信任等级。超级调用可以例如是HvEnableVtl()超级调用。
[0062] 虚拟机管理器随后在该虚拟机中的其它虚拟处理器上启用目标虚拟信任等级(动作510)。在一个或多个实施例中,虚拟机管理器响应于虚拟机管理器所展示的超级调用被虚拟安全模式加载器调用而启用该其它虚拟处理器上的目标虚拟信任等级。虚拟安全模式加载器可提供该目标虚拟安全等级要在其上被启用的虚拟处理器的标识符作为超级调用的参数,或替换地,超级调用可指示启用虚拟机中的所有其它虚拟处理器上的目标虚拟信任等级。虚拟安全模式加载器还可任选地提供用于目标虚拟信任等级在其上被启用的其它处理器的目标虚拟信任等级的初始虚拟处理器上下文。超级调用可以例如是HvEnableVtl()超级调用。
[0063] 在其中三个或更多虚拟信任等级被实现的实施例中,动作508和510可针对要被启用的每个附加更高等级虚拟信任等级重复。对于每个更高等级虚拟信任等级,虚拟机管理器所展示的超级调用被虚拟安全模式加载器(或运行在比被启用的目标虚拟信任等级更低的虚拟信任等级中的其它程序)调用。
[0064] 在一个或多个实施例中,虚拟机的每个虚拟信任等级可被分别地启用或禁用。虚拟信任等级可通过调用虚拟机管理器(例如,HvDisableVtlVp超级调用)的调用在处理器上禁用,该调用标识其上的虚拟信任等级要被禁用的虚拟处理器。该调用由在被禁用的虚拟信任等级中操作的虚拟处理器调用。响应于该调用,虚拟机管理器禁用所标识的虚拟处理器上的虚拟信任等级。虚拟机管理器任选地触发到所标识虚拟处理器上的更低虚拟信任等级的退出,以使得所标识的虚拟处理器运行在该更低虚拟信任等级中。
[0065] 此外,在一个或多个实施例中,虚拟机的所有更高虚拟信任等级可被禁用,从而有效地移除虚拟机的虚拟安全模式。可通过禁用虚拟机的除一个虚拟处理器(被称为最终虚拟处理器)之外的所有虚拟处理器上的除最低等级之外的所有虚拟信任等级来从虚拟机移除虚拟安全模式。更高等级的虚拟信任等级可通过调用虚拟机管理器(例如,HvDisableVtlVp超级调用)的调用在处理器上禁用,其标识其上更高虚拟信任等级要被禁用的虚拟处理器。该调用由在被禁用的更高虚拟信任等级中操作的虚拟处理器调用。响应于该调用,虚拟机管理器禁用所标识的虚拟处理器上的除最低虚拟信任等级之外的所有虚拟信任等级。
[0066] 除最低虚拟信任等级之外的所有虚拟信任等级随后在该虚拟机的最终虚拟处理器上被禁用。通过调用虚拟机管理器的调用(例如,HvDisableVTL超级调用)来禁用更高虚拟信任等级。该调用由在正被禁用的更高虚拟信任等级中操作的最终虚拟处理器调用。响应于该调用,虚拟机管理器触发到最终虚拟处理器上的最低等级虚拟信任等级的退出。此时,虚拟机中的所有虚拟处理器运行在最低等级虚拟信任等级中。随后通过调用虚拟机管理器的调用(例如,HvUnloadVsm超级调用)来卸载虚拟安全模式镜像。响应于此调用,所有存储器访问保护被回复到其初始状态,从而导致存储器页对最低等级的虚拟信任等级可访问,包括存储虚拟安全模式镜像的存储器页可访问(例如,在动作504时被置为不可访问的存储器)。
[0067] 返回图2,虚拟处理器202可按各种不同方式改变活动虚拟信任等级。从更低虚拟信任等级切换或改变到更高虚拟信任等级也被称为进入更高虚拟信任等级,而从更高虚拟信任等级切换或改变到更低虚拟信任等级也被称为退出更高虚拟信任等级。
[0068] 在一个或多个实施例中,虚拟处理器202可响应于一个或多个事件发生而从更低虚拟信任等级切换或改变到更高虚拟信任等级,所述事件诸如是虚拟信任等级调用、针对更高虚拟信任等级的中断、陷阱(例如,以允许更高虚拟信任等级处理针对更低虚拟信任等级的特定类型的故障,诸如页故障)、或到更高虚拟信任等级中的截取。虚拟信任等级调用是指被执行以从当前虚拟信任等级过渡到更高虚拟信任等级的特定一个或多个指令(例如,特定指令序列)。针对更高虚拟信任等级的中断是接收到指针对比当前虚拟信任等级更高的虚拟信任等级的中断(或目标在所述更高的虚拟信任等级的中断)。到更高虚拟信任等级中的截取是指访问更高虚拟信任等级的受保护地址或受保护组件的操作,受保护地址或受保护组件为诸如更高信任等级的寄存器、与更高虚拟信任等级相关联的I/O端口、或与更高虚拟信任等级相关联的存储器页。
[0069] 虚拟处理器202的一些处理器状态被跨不同虚拟信任等级共享,且也被称为共享处理器状态。共享处理器状态在改变活动虚拟信任等级时不需要改变,从而改善了改变虚拟信任等级的效率。然而,虚拟处理器202的其它处理器状态不被跨不同虚拟信任等级共享,且也被称为私有处理器状态。私有处理器状态(被示为虚拟处理器状态208)在改变活动虚拟信任等级时被改变。
[0070] 应当注意,尽管在改变活动虚拟信任等级时共享处理器状态保持不变,然而运行在虚拟信任等级中的程序可能取决于虚拟信任等级为何变得活动的原因而具有关于它们如何处理共享处理器状态的不同策略。例如,如果一虚拟信任等级由于虚拟信任等级调用而变得活动,则运行在新活动的虚拟信任等级中的程序可能不需要保存共享处理器状态,因为先前虚拟信任等级(调用对新活动的虚拟信任等级的调用的虚拟信任等级)中的程序能容许该共享处理器状态改变。然而,如果虚拟信任等级由于中断而变得活动,则运行在先前虚拟信任等级(被打断了的虚拟信任等级)中的程序很可能不容许该共享处理器状态改变,因为它们没有意识到虚拟信任等级改变发生了。在此情况下,运行在新活动的虚拟信任等级中的程序可在改变共享处理器状态之前保存共享处理器状态,以使得运行在新活动的虚拟信任等级中的程序可在完成中断处理之际还原共享处理器状态(以使得先前虚拟信任等级可被回复到其原始状态中,使得中断对运行在先前虚拟信任等级中的程序透明)。
[0071] 在一个或多个实施例中,私有处理器状态包括指令指针(或程序计数器)寄存器和栈指针寄存器。活动虚拟信任等级的私有处理器状态在改变活动虚拟信任等级时被虚拟机管理器保存,且被用被改变到的虚拟信任等级的私有处理器状态替换。被改变到的虚拟信任等级的私有处理器状态可以是默认/初始状态(如果虚拟信任等级先前没有被进入),或针对该虚拟信任等级的先前被保存的私有处理器状态(在虚拟处理器212上次从该虚拟信任等级改变之前保存的)。
[0072] 在一个或多个实施例中,虚拟机管理器为每个虚拟信任等级204(除了最低等级虚拟信任等级外)维护控制页以供虚拟机管理器和运行在该虚拟信任等级中的程序之间的双向通信使用。控制页包括为何进入该虚拟信任等级的原因的指示(例如,所发生的导致进入更高虚拟信任等级的事件)、先前虚拟信任等级的指示(在所发生的导致进入更高虚拟信任等级的事件之前的时间的活动虚拟信任等级)、以及任选地描述所发生的导致进入更高虚拟信任等级的事件或与该事件有关的附加信息的指示。
[0073] 在一个或多个实施例中,虚拟处理器202可从一个虚拟信任等级切换到仅下一更高虚拟信任等级。例如,虚拟处理器202可从VTL 0切换到VTL 1,从VTL 1切换到VTL 2,从VTL 2切换到VTL 3,如此等等,但是不能从VTL 0切换到VTL 3。替换地,虚拟处理器可从一个虚拟信任等级切换到任何更高的虚拟信任等级。例如,在虚拟信任等级调用中,虚拟处理器202可指定要切换到哪个更高的虚拟信任等级,从而允许从VTL 0切换到VTL 3。
[0074] 在从更低虚拟信任等级切换到更高虚拟信任等级之后,虚拟处理器202可响应于各种不同事件切换或改变回到更低虚拟信任等级(退出更高虚拟信任等级)。在一个或多个实施例中,虚拟处理器202执行一个或多个动作(例如,执行一个或多个操作,处理中断等)并随后返回到更低虚拟信任等级。虚拟处理器202通过执行特定的一个或多个指令以从当前虚拟信任等级过渡到更低虚拟信任等级来返回到更低虚拟信任等级。这些指令任选地被存储在被称为虚拟信任等级退出代码页的存储器页上,其允许虚拟机管理器提取代码序列来切换虚拟信任等级。在一个或多个实施例中,虚拟处理器202返回到从其进入活动虚拟信任等级的更低虚拟信任等级,然而替换地,虚拟处理器202可返回到一不同虚拟信任等级。
[0075] 对于共享处理器状态,该处理器状态在改变虚拟信任等级时不改变,这允许使用共享处理器状态在虚拟信任等级之间传递信息。对于私有处理器状态,每个虚拟信任等级具有其自己的处理器状态的实例(例如寄存器),其仅可由该虚拟信任等级访问。虚拟机管理器管理在各虚拟信任等级之间切换时保存和还原这一处理器状态(例如,寄存器的内容)。当进入虚拟信任等级204时,私有处理器状态与虚拟处理器202上次在该虚拟信任等级202中运行时相同(例如,寄存器包含相同值)。
[0076] 一般而言,在进入虚拟信任等级之际要被适当配置以便代码在该虚拟信任呢等级中执行的寄存器是私有处理器状态。确保了更高等级的虚拟信任等级,其可可靠地获得处于不能被更低等级的虚拟信任等级改变的良好定义的状态的虚拟处理器的执行控制。从而,关键的控制寄存器和对控制执行流而言很重要的寄存器是针对每个虚拟信任等级的私有处理器状态。在进入一虚拟信任等级之际不直接更改代码流的通用寄存器状态可以是共享处理器状态或私有处理器状态。
[0077] 在一个或多个实施例中,除了指令指针(或程序计数器)寄存器和栈指针寄存器之外,通用寄存器、向量寄存器、以及浮点寄存器是共享处理器状态。指令指针(或程序计数器)寄存器和栈指针寄存器是私有处理器状态。除了页故障寄存器之外,控制寄存器也是私有处理器状态。页故障寄存器(例如,用于X64架构处理器的CR2寄存器)是共享处理器状态。
[0078] 表格I解说了是共享处理器状态的寄存器的示例(在表格I中被列为类型“共享”),以及是私有处理器状态的寄存器的示例(在表格I中被列为类型“私有”)。表格1中解说的寄存器是用于X64架构的处理器的示例。要领会,这些寄存器是示例,不是所有处理器架构均包括所有这些寄存器,且不同处理器架构可包括不同(但任选地类似的)寄存器。
[0079] 表格I
[0080]
[0081] 在一个或多个实施例中,虚拟机管理器还维护各种不同机器状态寄存器(MSR),它们也被称为虚拟寄存器,一些虚拟寄存器是共享处理器状态而一些虚拟寄存器是私有处理器状态。表格II解说了是共享处理器状态的MSR的示例(在表格II中被列为类型“共享”),以及是私有处理器状态的MSR的示例(在表格II中被列为类型“私有”)。表格II中具有前缀“HV_X64”的寄存器指代可从华盛顿州雷蒙德市的微软公司获得的 虚拟化软件中的寄存器,而表格II中不具有前缀“HV_X64”的寄存器指代标准X64架构寄存器。表格II中所解说的MSR是用于运行在X64架构处理器上的虚拟机的示例。要领会,这些MSR是示例,不是所有虚拟安全模式均需要包括所有这些MSR,且不同处理器架构可包括不同(但任选地类似的)寄存器。
[0082] 表格II
[0083]
[0084]
[0085] 此外,如同上面讨论的,虚拟信任等级204具有独立的中断子系统,其中每个虚拟信任等级204具有其自己的中断子系统210。独立的中断子系统210允许运行在一虚拟信任等级中的程序在各虚拟处理器之间安全地发送处理器间中断而不存在来自更低虚拟信任等级的干扰。独立的中断子系统210还允许一虚拟信任等级的中断子系统从与该相同虚拟信任等级相关联的设备安全地接收中断而不存在来自更低虚拟信任等级中的程序的干扰。独立的中断子系统210还允许每个中断子系统210具有不会受更低虚拟信任等级中的程序干扰的安全计时器设施。独立的中断子系统210还允许中断子系统210在接收到针对更低信任等级的中断(以更低信任等级作为目标的中断)之际接收通知,以便允许各中断在各虚拟信任等级之间的协作式调度。
[0086] 对于活动虚拟信任等级,虚拟机管理器可针对活动虚拟信任等级、针对比活动虚拟信任等级更高的虚拟信任等级(除非活动虚拟信任等级是该虚拟机的最高虚拟信任等级)、或针对比活动虚拟信任等级更低的虚拟信任等级(除非活动虚拟信任等级是该虚拟机的最低虚拟信任等级)接收中断。在一个或多个实施例中,中断包括该中断所针对的(该中断作为目标的)虚拟信任等级的指示。响应于接收到以活动虚拟信任等级作为目标的中断,活动虚拟信任等级的中断子系统210处理该中断。
[0087] 响应于接收到以比活动虚拟信任等级更高的虚拟信任等级为目标的中断,虚拟机管理器可采取各种不同的动作。在一个或多个实施例中,中断控制MSR(例如HV_X64_MSR_VSM_INTERCEPT_CTL MSR)包括确定要采取的动作的中断VTL退出设置。如果中断VTL退出设置具有一个值(例如,指示总是退出),则虚拟机管理器将活动虚拟信任等级切换到该更高虚拟信任等级,且该更高虚拟信任等级的中断子系统210处理该中断。然而,如果中断VTL退出设置具有另一值(例如,指示检查可中断性),则虚拟机管理器仅在该更高虚拟信任等级的处理器状态指示该更高虚拟信任等级可被中断时将活动虚拟信任等级切换到该更高虚拟信任等级。替换地,中断VTL退出设置可被维护在其它位置中,诸如该活动虚拟信任等级(或更高虚拟信任等级)的控制页中。
[0088] 替换地,要采取的活动可按不同方式确定。例如,虚拟机管理器可提供一种机制,以允许更高虚拟信任等级指定将触发活动虚拟信任等级到更高虚拟信任等级的切换的特定中断向量,以由更高虚拟信任等级的中断子系统210处理该中断。替换地,各种不同状态准则可被虚拟机管理器应用,且虚拟机管理器可将活动虚拟信任等级切换到该更高虚拟信任等级以用于仅在活动虚拟信任等级满足状态准则时由该更高虚拟信任等级的中断子系统210处理该中断。
[0089] 响应于接收到以比该活动虚拟信任等级更低的虚拟信任等级为目标的中断,虚拟机管理器维护该中断的记录以随后被递送到该更低虚拟信任等级的中断子系统210。在一个或多个实施例中,中断不抢占活动虚拟信任等级中的该虚拟处理器202的操作。相反,在虚拟处理器202下次切换到该更低虚拟信任等级中操作时,虚拟机管理器将该中断提供给该更低虚拟信任等级的中断子系统2210。
[0090] 应当注意,可能出现以下情形:其中期望在向更低虚拟信任等级发送中断时通知更高虚拟信任等级。例如,这在以下情形中可能是期望的:其中更高虚拟信任等级的程序希望允许虚拟处理器返回到更低虚拟信任等级来处理中断。在一个或多个实施例中,提供中断通知设施,以促进在向更低虚拟信任等级发送中断时通知更高虚拟信任等级。此中断通知设施可按不同方式提供,诸如控制MSR(例如HV_X64_MSR_VTL_CTL MSR)。此中断通知设施可防止更高虚拟信任等级延迟对更新虚拟信任等级的中断处理达长时间段。
[0091] 在使用中断通知设施时,响应于接收到以比活动虚拟信任等级更低的虚拟信任等级为目标的中断,虚拟机管理器评价私有处理器状态和更低虚拟信任等级的中断子系统210的状态来确定该中断是否能被呈现给该更低虚拟信任等级的中断子系统210。如果,由于各种私有处理器状态或中断子系统210状态,中断不能被呈现给更低虚拟信任等级中断子系统210,则该中断被标记为待决且不对该中断采取进一步动作。然而,如果该中断可被呈现给更低信任等级中断子系统210,则虚拟机管理器维护该中断的记录以如上所讨论的随后递送给该更新虚拟信任等级的中断子系统210,并在活动虚拟信任等级处生成中断。在活动虚拟信任等级处生成的中断(例如,到在HV_X64_MSR_VTL_CTL MSR中指定的中断向量的中断)导致运行在活动虚拟信任等级处的程序决定如何对该中断进行响应。该程序可使得虚拟机管理器退出该更高虚拟信任等级,从而允许该更低虚拟信任等级处理以该更低虚拟信任等级为目标的中断。然而,虚拟机管理器不需要退出该更高虚拟信任等级,或该程序可延迟使得虚拟机管理器退出该更高虚拟信任等级达各种时间量。
[0092] 此外,如同上面讨论的,虚拟机管理器可响应于到更高虚拟信任等级中的中断而切换到更高虚拟信任等级。在一个或多个实施例中,虚拟机管理器允许更高虚拟信任等级指定定并对处于更低虚拟信任等级中的程序不可访问的特定资源或组件。虚拟机管理器可允许更高虚拟信任等级将例如特定输入/输出(I/O)端口访问控制、MSR访问控制、存储器访问控制、和/或控制寄存器锁定并使其不可访问。更高虚拟信任等级可(例如,经由各种MSR设置或按其它方式)指定哪些特定I/O端口访问控制、MSR访问控制、存储器访问控制、和/或控制寄存器被锁定。响应于(例如,由程序或设备)做出尝试来访问由更高虚拟信任等级锁定的资源或组件,生成到较高虚拟信任等级中的截取。响应于该截取,虚拟机管理器将虚拟处理器切换到更高虚拟信任等级(或替换地切换到该虚拟处理器支持的最高虚拟信任等级)。
[0093] 更高虚拟信任等级能够按各种不同方式对该截取进行响应。例如,处于更高虚拟信任等级中的程序可认为该访问是致命的并且触发某种故障指示。作为另一示例,处于更高虚拟信任等级中的程序可模仿对该资源或组件的访问。为了允许这种模仿,虚拟机管理器提供超级调用,该超级调用可被用来操纵导致该截取的该更低虚拟信任等级的上下文。作为另一示例,处于更高虚拟信任等级中的程序可代理对该资源或组件的访问的执行。作为又一示例,处于更高虚拟信任等级中的程序可反映对更低虚拟信任等级的安全截取。
[0094] 在一个或多个实施例中,在其中虚拟处理器202包括三个或更多虚拟信任等级的情形中,不是支持安全截取设施的嵌套,该虚拟机管理器提供跨所有虚拟信任等级共享的单一访问控制MRS集合。期望使用访问控制MSR的虚拟信任等级中的程序可使用其自己的定义的接口来协作,或替换地处于最高虚拟信任等级中的程序可模仿对到更低虚拟信任等级的截取设施的支持(例如,更高虚拟信任等级将安全截取注入到更新虚拟信任等级中)。替换地,安全截取设施的嵌套可被虚拟机管理器支持,且独立的访问控制MSR可被用于不同的虚拟信任等级。
[0095] 各种不同的MSR被该虚拟机管理器支持。以下是可被虚拟机管理器支持的若干MSR的示例。列出了针对所述MSR的特定字段。然而要领会,这些MSR是示例,且替换地可使用其它寄存器、寄存器的位布局、字段等等。
[0096] 表格III解说了HV_X64_MSR_VTL_CTL MSR的示例,其对每个虚拟处理器上的每个更高虚拟信任等级(除了最低等级虚拟信任等级之外的所有虚拟信任等级)可用。除了VTL 0之外,每个更高虚拟信任等级具有其自己的HV_X64_MSR_VTL_CTL MSR的实例。HV_X64_MSR_VTL_CTL MSR控制VSM针对更高虚拟信任等级如何操作的各种属性。
[0097] 表格III
[0098]
[0099] 表格IV解说了HV_X64_MSR_VTL_CALL MSR的示例,其被用于标识将VTL调用代码页映射到的GPA页。HV_X64_MSR_VTL_CALL MSR跨该虚拟机被共享。每个虚拟信任等级(除了最高虚拟信任等级之外)均在虚拟机中存在HV_X64_MSR_VTL_CALL MSR的一个实例。当HV_X64_MSR_VTL_CALL MSR被使能时,在代码页GPA字段中指定的地址被用虚拟信任等级调用代码页(如上讨论的用于虚拟机管理器和运行在虚拟信任等级中的程序之间的双向通信的控制页)覆盖
[0100] 表格IV
[0101]
[0102] 表格V解说了HV_X64_MSR_VTL_STATUS MSR的示例,其提供了关于虚拟处理器的虚拟信任等级状态的信息。HV_X64_MSR_VTL_STATUS MSR是针对个体虚拟处理器的,且该虚拟处理器的每个虚拟信任等级均存在HV_X64_MSR_VTL_STATUS MSR的一个实例。
[0103] 表格V
[0104]
[0105] 表格VI解说了HV_X64_MSR_VTL_EXIT MSR的示例,其被用于标识将虚拟信任等级退出代码页映射到的GPA页。The HV_X64_MSR_VTL_EXIT MSR跨该虚拟机被共享。每个虚拟信任等级(除了最低虚拟信任等级之外)均在虚拟机中存在HV_X64_MSR_VTL_EXIT MSR的一个实例。当HV_X64_MSR_VTL_EXIT MSR被使能时,在VTL退出代码页GPA字段中被指定的地址被用虚拟信任等级退出代码页覆盖。
[0106] 表格VI
[0107]
[0108] 表格VII解说了HV_X64_MSR_VSM_INTERCEPT_CTL MSR的示例,其控制什么类型的截取将触发对更高虚拟信任等级的进入。HV_X64_MSR_VSM_INTERCEPT_CTL MSR是针对个体虚拟处理器的,且被该虚拟处理器的虚拟信任等级共享(尽管HV_X64_MSR_VSM_INTERCEPT_CTL MSR在最低虚拟信任等级中不可用)。
[0109] 表格VII
[0110]
[0111] 表格VIII解说了_X64_MSR_VSM_IOPORT_CTL MSR的示例,其控制哪些I/O端口访问触发到最高(或更高)虚拟信任等级中的截取。两个HV_X64_MSR_VSM_IOPORT_CTL MSR可被包括,它们具有相同字段并被称为HV_X64_MSR_VSM_IOPORT_CTL0MSR和HV_X64_MSR_VSM_IOPORT_CTL1MSR。这两个MSR是针对个体虚拟处理器的,且每一个MSR都被该虚拟处理器的虚拟信任等级共享(尽管这两个MSR在最低虚拟信任等级中不可用)。
[0112] 表格VIII
[0113]
[0114] 表格IV解说了HV_X64_MSR_VSM_MSR_CTL MSR的示例,其控制哪些MRS访问触发到更高虚拟信任等级中的截取。HV_X64_MSR_VSM_MSR_CTL MSR是针对个体虚拟处理器的,且被该虚拟处理器的虚拟信任等级共享(尽管HV_X64_MSR_VSM_MSR_CTL MSR在最低虚拟信任等级中不可用)。
[0115] 表格IX
[0116]
[0117] 应当注意,本文讨论的技术的一个方面在于:更高虚拟信任等级不能被更低虚拟信任等级抢占。从而,当虚拟处理器运行在更高虚拟信任等级时,虚拟处理器可切换到更低虚拟信任等级的唯一方式是当软件通过执行VTL退出主动切换到更低虚拟信任等级时。外部事件(例如中断等)均不能触发从更高虚拟信任等级到更低虚拟信任等级的自动切换。
[0118] 还要注意,使用本文讨论的技术实现的虚拟信任等级独立于由计算设备100的物理处理器实现的任何保护环或其它保护机制。本文讨论的技术独立于物理处理器架构,且从而可跨任何数量的不同处理器架构实现。而且,本文讨论的技术可支持任何数量的虚拟信任等级,包括针对同一和/或不同虚拟机中的不同虚拟处理器的不同数量的虚拟信任等级。
[0119] 还应注意,计算设备100的一个或多个虚拟处理器可支持多个不同模式中的代码的执行,包括至少一个内核模式(kernel mode)(也被称为内核模式(kernel-mode)、监督者模式(supervisor mode)或监督者模式(supervisor-mode))和用户模式(也被称为用户模式(user-mode))。本文讨论的技术独立于代码被在虚拟处理器中执行的任何此类模式。本文讨论的存储器访问保护被基于虚拟处理器正在其中操作的虚拟信任等级而应用,且与该虚拟处理器正在内核模式还是用户模式中执行代码无关地被应用。从而,即使虚拟处理器正在内核模式中执行代码,一虚拟信任等级的存储器访问保护可仅如上讨论地基于活动虚拟信任等级而被虚拟安全模式模块改变(该虚拟处理器是在内核模式还是用户模式执行是无关的)。尽管可由虚拟处理器基于其用于执行代码的模式(例如,用户或内核)来提供附加保护,然而那些保护独立于本文讨论的基于虚拟信任等级应用的存储器访问保护。
[0120] 从而,本文讨论的技术提供了一种比运行在内核模式的操作系统具有更多特权的环境。例如,当运行在VTL 1中时,一存储器页的VTL 0存储器访问保护可被设置为“不可访问”,且数据或代码可被存储在该存储器页中。这种设置将该存储器页置为“安全”模式,使得该存储器页对于运行在VTL 0中的程序而言不可访问。从而,即使操作系统正运行在内核模式中,如果操作系统正在VTL 0中运行,则存储在该存储器页中的数据或代码仍旧对该操作系统而言不可访问。
[0121] 然而,本文讨论的技术可结合支持不同执行模式或保护环的虚拟处理器使用。例如,虚拟处理器可在VTL 1中具有其自己的内核模式和用户模式,且在VTL 0中具有其自己的内核模式和用户模式。从而,VTL 1中的地址空间不能访问VTL 1中的另一地址空间,除非被VTL 1内核模式允许这样做。然而,VTL 0内核模式仍旧不能访问VTL 1中的任何地址空间(假定VTL 1中的地址空间的存储器页已被如此标记)。
[0122] 图6在600概括地示出了包括示例计算设备602的示例系统,该示例系统表示可以实现本文中所描述的各种技术的一个或多个系统和/或设备。计算设备602可以是,例如,服务提供方的服务器、与客户端相关联的设备(例如,客户端设备)、片上系统、和/或任何其他合适的计算设备或计算系统。
[0123] 所示的示例计算设备602包括处理系统604、一个或多个计算机可读介质606,以及相互通信地耦合的一个或多个I/O接口608。尽管没有示出,计算设备602可进一步包括系统总线或将各种组件相互耦合的其它数据和命令传输系统。系统总线可以包括不同总线结构中的任一个或其组合,诸如存储器总线或存储器控制器、外围总线、通用串行总线和/或利用各种总线体系结构中的任一种的处理器或局部总线。也构想了各种其它示例,诸如控制和数据线。
[0124] 处理系统604表示使用硬件执行一个或多个操作的功能。因此,处理系统604被示为包括可被配置为处理器、功能块等的硬件元件610。这可包括在作为专用集成电路或使用一个或多个半导体构成的其它逻辑设备的硬件中的实现。硬件元件610不受形成它们的材料或者其中利用的处理机制的限制。例如,处理器可以由半导体和/或晶体管(例如,电子集成电路(IC))构成。在这一上下文中,处理器可执行指令可以是可电子地执行的指令。
[0125] 计算机可读介质606被示为包括存储器/存储612。存储器/存储612表示与一个或多个计算机可读介质相关联的存储器/存储容量。存储器/存储612可包括易失性介质(如随机存取存储器(RAM))和/或非易失性介质(如只读存储器(ROM)、闪存、光盘、磁盘等等)。存储器/存储612可包括固定介质(例如,RAM、ROM、固定硬盘驱动器等)以及可移动介质(例如闪存、可移动硬盘驱动器、光盘等等)。计算机可读介质606可以下面进一步描述的各种方式来配置。
[0126] 输入/输出接口608表示允许用户向计算设备602输入命令和信息的功能,并且还允许使用各种输入/输出设备向用户和/或其他组件或设备呈现信息。输入设备的示例包括键盘光标控制设备(例如,鼠标)、麦克(例如,用于语音输入)、扫描仪、触摸功能(例如,电容性的或被配置来检测物理触摸的其它传感器)、相机(例如,可采用可见或诸如红外频率的不可见波长来将不涉及触摸的移动检测为姿势),等等。输出设备的示例包括显示设备(例如,监视器或投影仪)、扬声器、打印机、网卡、触觉响应设备,等等。因此,计算设备602可以下面进一步描述的各种方式来配置以支持用户交互。
[0127] 计算设备602还包括虚拟机管理器614(也称为管理程序)。虚拟机管理器614允许虚拟机在计算设备602上运行。虚拟机管理器614可以是例如图1的虚拟机管理器102。
[0128] 此处可以在软件、硬件元件或程序模块的一般上下文中描述各种技术。一般而言,此类模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元件、组件、数据结构等等。本文使用的术语“模块”、“功能”和“组件”一般表示软件、固件、硬件或其组合。本文描述的技术的各特征是平台无关的,从而意味着该技术可在具有各种处理器的各种计算平台上实现。
[0129] 所描述的模块和技术的实现可以被存储在某种形式的计算机可读介质上或跨某种形式的计算机可读介质传输。计算机可读介质可包括可由计算设备602访问的各种介质。作为示例而非限制,计算机可读介质可包括“计算机可读存储介质”和“计算机可读信号介质”。
[0130] “计算机可读存储介质”指相对于仅信号传输、载波或信号本身而言,启用对信息的持久存储和/或有形存储的介质和/或设备。由此,计算机可读存储介质是指非信号承载介质。计算机可读存储介质包括以适合于存储如计算机可读指令、数据结构、程序模块、逻辑元件/电路、或其他数据等的方法或技术来实现的诸如易失性和非易失性、可移动和不可移动介质和/或存储设备的硬件。该计算机可读存储介质的示例包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光存储、硬盘、磁带盒、磁带、磁盘存储或其它磁存储设备、或者可适用于存储所需信息并可由计算机访问的其它存储设备、有形介质或制品。
[0131] “计算机可读信号介质”可以指被配置为诸如经由网络向计算设备602的硬件传输指令的信号承载介质。信号介质通常用诸如载波、数据信号、或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据。信号介质还包括任何信息传送介质。术语“已调制数据信号”是指使得以在信号中编码信息的方式来设置或改变其一个或多个特性的信号。作为示例而非限制,通信介质包括有线介质,诸如有线网络或直接线路连接,以及无线介质,诸如声学、RF、红外线和其他无线介质。
[0132] 如先前所描述的,硬件元件610和计算机可读介质606代表以硬件形式实现的指令、模块、可编程器件逻辑和/或固定器件逻辑,其可在某些实施例中被采用来实现此处描述的技术的至少某些方面。硬件元件可包括集成电路或片上系统、应用专用集成电路(ASIC)、现场可编程阵列(FPGA)、复杂可编程逻辑器件(CPLD),和用或其它硬件设备实现的组件。在此上下文中,硬件元件可以充当处理设备,该处理设备执行由该硬件元件以及用于存储供执行的指令的硬件设备(例如前面描述的计算机可读存储介质)所体现的指令、模块和/或逻辑所定义的程序任务。
[0133] 前面的组合也可被采用来实现本文所述的各种技术。因此,软件、硬件,或模块和其他程序模块可被实现为一个或多个指令和/或在某种形式的计算机可读存储介质上和/或由一个或多个硬件元件610实现的逻辑。计算设备602可被配置成实现对应于软件和/或硬件模块的特定指令和/或功能。因此,将模块实现为可由计算设备602执行为软件的模块可至少部分以硬件完成,例如,通过使用计算机可读存储介质和/或处理系统的硬件元件610。指令和/或功能可以是一个或多个制品(例如,一个或多个计算设备602和/或处理系统
604)可执行/可操作的,以实现此处描述的技术、模块、以及示例。
[0134] 如在图6中进一步例示的,示例系统600使得用于当在个人计算机(PC)、电视设备和/或移动设备上运行应用时的无缝用户体验的普遍存在的环境成为可能。服务和应用在所有三个环境中基本相似地运行,以便当使用应用、玩视频游戏、看视频等时在从一个设备转换到下一设备时得到共同的用户体验。
[0135] 在示例系统600中,多个设备通过中央计算设备互连。中央计算设备对于多个设备可以是本地的,或者可以位于多个设备的远程。在一个或多个实施例中,中央计算设备可以是通过网络、因特网或其他数据通信链路连接到多个设备的一个或多个服务器计算机的
[0136] 在一个或多个实施例中,该互连架构使得功能能够跨多个设备递送以向多个设备的用户提供共同且无缝的体验。多个设备的每一个可具有不同的物理要求和能力,且中央计算设备使用一平台来使得为设备定制且又对所有设备共同的体验能被递送到设备。在一个或多个实施例中,创建目标设备的类,且针对设备的通用类来特制体验。设备类可由设备的物理特征、用途类型或其他共同特性来定义。
[0137] 在各种实现中,计算设备602可采取各种各样不同的配置,诸如用于计算机616、移动设备618和电视机620用途。这些配置中的每一个包括可具有一般不同的构造和能力的设备,并且因而计算设备602可根据不同的设备类中的一个或多个来配置。例如,计算设备602可被实现为计算机616类的设备,该类包括个人计算机、台式计算机、多屏幕计算机、膝上型计算机、上网本等。
[0138] 计算设备602还可被实现为移动设备618类的设备,该类包括诸如移动电话、便携式音乐播放器、便携式游戏设备、平板计算机、多屏幕计算机等移动设备。计算设备602还可被实现为电视机620类的设备,该类包括在休闲观看环境中具有或连接到通常更大的屏幕的设备。这些设备包括电视机、机顶盒、游戏控制台等。
[0139] 本文所描述的技术可由计算设备602的这些各种配置来支持,且不限于在本文描述的各具体示例。这个功能也可被全部或部分通过分布式系统的使用(诸如如下所述的经由平台624通过“云”622)来实现。
[0140] 云622包括和/或代表资源626的平台624。平台624抽象云622的硬件(如,服务器)和软件资源的底层功能。资源626可包括可在计算机处理在位于计算设备602远程的服务器上执行时使用的应用和/或数据。资源626也可包括在因特网上和/或通过诸如蜂窝或Wi-Fi网络之类的订户网络上提供的服务。
[0141] 平台624可抽象资源和功能以将计算设备602与其他计算设备相连接。平台624还可用于抽象资源的缩放以向经由平台624实现的资源626所遇到的需求提供对应的缩放级别。因此,在互联设备的实施例中,本文描述的功能的实现可分布在系统600上。例如,该功能可部分地在计算设备602上以及经由抽象云622的功能的平台624来实现。
[0142] 尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。更确切而言,上述具体特征和动作是作为实现权利要求的示例形式公开的。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈