CN100504789C - 控制虚拟机的方法 - Google Patents
控制虚拟机的方法 Download PDFInfo
- Publication number
- CN100504789C CN100504789C CNB2003801066275A CN200380106627A CN100504789C CN 100504789 C CN100504789 C CN 100504789C CN B2003801066275 A CNB2003801066275 A CN B2003801066275A CN 200380106627 A CN200380106627 A CN 200380106627A CN 100504789 C CN100504789 C CN 100504789C
- Authority
- CN
- China
- Prior art keywords
- vmcs
- processor
- vmm
- instruction
- pointer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
Abstract
提供用于控制虚拟机(VM)的执行的方法和系统。VM监视器(VMM)通过访问传递至处理器的指令间接地访问VM控制结构(VMCS)。在一个实施例中,所述访问指令包括VMCS组件标识符,所述VMCS组件标识符由所述处理器使用以确定VMCS组件的适当存储位置。所述处理器在处理器存储空间内或者在存储器内识别VMCS组件的适当的存储位置。
Description
技术领域
本发明的实施例总体上涉及计算机系统,具体来讲,涉及计算机系统内虚拟机的操作控制。
背景技术
虚拟机体系结构从逻辑上划分物理机,以致机器的底层硬件是分时的,并且表现为一个或多个独立操作的虚拟机(VM)。虚拟机监视器(VMM)在计算机上运行,并且便于为其他软件抽象一个或多个VM。每个VM可以起独立平台的作用,运行其自身的操作系统(OS)和应用软件。此处把在VM中运行的软件统称为客户软件。
客户软件期待这样的操作,就好像它正在专用计算机上运行而不是在VM上运行。也就是说,客户软件期待控制各种事件并且有权访问计算机(例如物理机)上的硬件资源。所述物理机的硬件资源可以包括一个或多个处理器、驻留在所述处理器上的资源(例如控制寄存器、高速缓冲存储器及其他)、存储器(以及驻留在存储器中的结构、例如描述符表)以及驻留在所述物理机中的其他资源(例如,输入输出设备)。所述事件可以包括中断、异常、平台事件(例如初始化(INIT)或者系统管理中断(SMI)等等)。
所述VMM可以根据需要将客户软件状态交换(swap)进出物理机的设备、存储器以及寄存器。所述VMM可以通过允许直接访问底层的物理机来增强VM的性能。当在客户软件中正在以非特权模式执行操作时,所述方式限制软件访问所述物理机,或者当操作不利用物理机中VMM希望保持控制的硬件资源时,这是尤其适用的。
每当客户操作可能影响VMM或者任何未执行VM的正确执行时,所述VMM恢复控制。通常,所述VMM审查这种操作,在允许所述操作进行到底层物理机或者模拟对客户利益的操作之前,确定是否存在问题。例如,当客户访问I/O设备时、当其试图(例如通过改变控制寄存器值)改变机器配置时、当其试图访问存储器的某区域等等时,所述VMM可能需要恢复控制。
支持VM操作的现有系统使用固定格式结构来控制VM的执行环境,此处将所述固定格式结构称为虚拟机控制结构(VMCS)。所述VMCS被存储在存储器区域中,并且例如包含客户状态、VMM的状态以及控制信息,所述控制信息表明在客户执行期间,在什么条件下所述VMM希望恢复控制。物理机中的处理器读取来自于所述VMCS的信息以便确定VM和VMM的执行环境,并且约束客户软件在所述VMM控制之下的行为。
常规的体系结构把VMCS定位在物理机的存储器中,并且允许VMM使用普通存储器读写指令来访问它。为此,必须在处理器指令集架构中从体系结构上定义所述VMCS的格式(并且以类似于其他系统结构和指令编码的方式在规范和手册中记载)。所述VMM被直接编码为这些规范。这种结构限制了支持VMM的处理器在执行方面的灵活性。由于VMCS的形式是从体系结构上来定义的,所以出于性能、扩展性、兼容性、安全性等等的原因,特定处理器实现方式的微体系结构不可以在VMCS数据的格式、内容、组织或者存储需求方面做出改变,此外不需要对已安装的VMM执行基础做出相应修改。
因此,需要更加灵活的虚拟机体系结构的实现方式,该实现方式不必严格耦合至物理机的底层实现方式。
发明内容
根据本发明的一个方面,提供了一种用于激活虚拟机控制结构的方法,该方法包括:由虚拟机监视器执行访问含有虚拟机控制结构所需的存储空间大小的存储位置的至少一个指令和提供虚拟机控制结构所需的存储空间大小的指令来确定虚拟机控制结构所需的存储空间大小;并且向处理器提供指向存储器区域的指针,所述存储器区域至少与虚拟机控制结构所需的存储空间大小一样大。
附图说明
图1是依照本发明一个实施例的VM体系结构的图表。
图2是依照本发明一个实施例的控制VM的方法流程图。
图3是依照本发明一个实施例的VMCS访问指令的图表。
图4是依照本发明一个实施例的读取来自于VMCS的数据的方法流程图。
图5是依照本发明一个实施例的写数据至VMCS的方法流程图。
具体实施方式
描述新颖的VM控制体系结构。在随后对实施例的详细描述中,参照了附图,该附图作为本发明的一部分,并且其中通过举例说明而非限制的方式示出了可以实施本发明的特定实施例。这些实施例是以足够多的细节来描述的,以便使本领域普通技术人员可以理解和实现它们,并且应该理解的是,也可以利用其他实施例,并且可以在不脱离本公开内容的精神和范围的情况下,做出结构上、逻辑上和电气上的改变。因此,不应该将以下的详细说明认为是限制意义上的,并且此处所公开的本发明的实施例的范围只由所附权利要求定义。
VMM给予其他软件(“客户软件”、“多个客户”或者仅仅“一个客户”)一个或多个VM的抽象。所述VMM可以向各种客户提供相同或者不同的抽象。每个客户期待出现于VM中的所有硬件平台设施都可供其使用。例如,依照处理器的体系结构和出现于所述VM中的平台,客户期待有权访问所有寄存器、高速缓冲存储器、结构、I/O设备、存储器等等。此外,每个客户期待处理各种事件,诸如处理异常、中断和平台事件(例如初始化(INIT)或者系统管理中断(SMI))。
一些资源和事件被“给予特权”,因为它们必须由VMM管理,以便确保VM的正确操作并且保护VMM以及其他VM。对于被给予特权的资源和事件来说,所述VMM简化(facilitate)客户软件所要求的功能,同时经由这些资源和事件保持最终控制。简化客户软件功能的动作就所述VMM而言可以包括各式各样的活动。所述VMM的活动及其特征不限制本发明各种实施例的范围。
当客户软件访问被给予特权的资源或者被给予特权的事件发生时,可以把控制传递给VMM。把控制从客户软件传递到所述VMM称为VM退出。在简化资源访问或者适当地处理事件之后,所述VMM可以把控制返回至客户软件。把控制从VMM传递到客户软件称为VM进入。
所述虚拟机控制结构(VMCS)是从体系结构上定义的结构,该结构例如包含客户软件的状态、VMM的状态、表明在哪些条件下VMM希望防止客户执行的控制信息以及涉及最新VM退出的信息。在当前系统中,正确地匹配从体系结构上定义的结构的VMCS的表示位于存储器中。物理机中的所述处理器读取来自VMCS的信息以便确定VM的执行环境并且约束其行为。
在客户执行期间,所述处理器查阅VMCS中的控制信息来确定哪些客户动作(例如某指令的执行、某异常的出现等)和事件(例如外部中断)将引起VM退出。当发生VM退出时,由客户软件使用的处理机状态组件(component)被保存到VMCS,并且把VMM所要求的处理机状态组件从所述VMCS中载入。当发生VM退出时,使用本领域普通技术人员所公知的任意机制把控制传递至VMM 120。
当发生VM进入时,在VM退出时保存的处理机状态(并且其也许已由VMM修改)被恢复,并且把控制返回到客户软件。为了便于第一VM进入至客户,所述VMM把适当的客户状态写入VMCS。当处理VM退出时,所述VMM可以改变VMCS中的客户状态。在一些实施例中,由单个物理机上的单个VMM管理支持多个VM的多个VMCS结构。所述VMCS不需要包括如上所述的全部信息,并且可以包括有助于VM的控制的附加信息。在一些实施例中,VMCS可以包含很大数量的附加信息。
图1举例说明了依照本发明一个实施例的VM体系结构100的图表。所述VM体系结构100包括基础硬件平台110(例如物理机)。所述基础硬件平台110包括均有权访问易失性和/或非易失性存储器116的一个或多个处理器112。另外,在基础硬件平台中还存在其他元件,在图1中没有示出这些元件(例如,输入输出设备)。所述VM体系结构100还包括VMM120,其管理一个或多个VM(例如,130、140和150),其中每个VM(例如130、140和150)支持一个或多个OS(例如150、160和170)和应用程序(例如152、162和172)。所述处理器112可以是能够执行软件的任何类型的处理器,诸如微处理器、数字信号处理器、微控制器等等。所述处理器112可以包括微代码、可编程逻辑或者硬编码逻辑,用于实现本发明的方法实施例的执行。
存储器116可以是硬盘、软盘、随机存取存储器(RAM)、只读存储器(ROM)、闪存、上述设备的任意组合,或者是可由处理器112读取的任何其他类型的机器介质。存储器116可以存储用于完成本发明的方法实施例的执行的指令或者数据。所述存储器116包括VMCS区域118,由处理器112用于维护所述VMCS的状态,以下将更详细地描述。
所述处理器112可以是能够执行软件的任何类型的处理器,诸如微处理器、数字信号处理器、微控制器等等。每个处理器112可以包括VMCS高速缓冲存储器114,以下将更详细地描述该VMCS高速缓冲存储器114。所述处理器112可以包括微代码、可编程逻辑或者硬编码逻辑,用于完成依照本发明的方法实施例的执行。
如果存在,那么VMCS高速缓冲存储器114可用来临时或者在其整个使用期限内存储某些或者所有VMCS状态。所述VMCS高速缓冲存储器114可以包括寄存器、高速缓冲存储器或者任意其他存储器。在图1中,所述VMCS高速缓冲存储器114是作为处理器112的一部分示出的,但是它可以驻留在裸露平台硬件110的任意组件内的处理器112的外部。在随后的论述中,也把所述VMCS高速缓冲存储器114称为“处理器上的存储空间”或者“处理器上的资源”,但是应该理解的是,此存储器可以驻留在不同于处理器112的平台组件上。所述VMCS高速缓冲存储器114不是实现本发明方法所严格必需的。
通常,VMM往往使用普通读写指令在存储器中访问VMCS。然而在图1的VM体系结构100中,所述VMM 120通过一组处理器提供的VMCS访问指令119间接地访问VMCS区域118。所述VMCS访问指令119利用VMCS区域118以及任意可利用的VMCS高速缓冲存储器114。在一个实施例中,VMCS访问指令119包括正被访问的VMCS组件的标识符的操作数。所述标识符此处被称为“组件标识符”。所述VMM 120不需要知道把任意特定的VMCS组件是存储在VMCS区域118中还是存储在VMCS高速缓冲存储器114中。所述VM体系结构100还规定:如果把普通读写指令用于访问VMCS区域118,那么可能发生不可预测的结果。VMCS访问指令119的使用给予处理器112自由使用可利用的处理器上存储器以及基于存储器(例如VMCS区域118)的存储空间,并且也允许各种性能优化。
在一些实施例中,所述VMCS访问指令119是通过处理器微体系结构在VMCS区域118中的读写存储器来实现的。在其他实施例中,所述VMCS访问指令119可以读和/或写处理器上的资源。所述VMM120不必知道底层的物理机微体系结构如何支持所述VMCS。以这种方式,所述底层处理器实现方式可以被改变,以便适应性能、安全性、可靠性或者其他需要考虑的事项,而不会使所述VMM 120与底层处理器实现方式不兼容,并且可以为每个处理器实现方式开发自定义的VMCS实现方式。
以下例子举例说明了不采用VMCS访问指令119的VM体系结构的缺点。如果处理器实现方式可以在处理器上的存储空间中临时高速缓存VMCS数据,那么当发生特定事件时,只能把数据写入存储器内的VMCS区域118中。在高速缓存所述VMCS数据期间,对所述VMCS区域118的普通读取将返回失效值(不正确的值)。对VMCS区域118的普通写入不会更新处理器上的存储空间中的数据,除非所述处理器实现方式采取特殊的保护措施,以便把写入内容正确映射至存储空间。在没有使用VMCS访问指令119的情况下,所述处理器实现方式必须保持VMCS区域与存储在处理器上的资源中的任意临时或者高速缓存的状态一致;这样会阻碍一定的性能优化、VM体系结构的扩展等,如下面进一步讨论的那样。与普通存储器操作相比,如果适当的话,VMCS读指令返回存储在处理器上的值,并且VMCS写入指令正确地更新VMCS状态,而无论其位于什么地方。下面将详细说明这些指令。
为了简化所述VMCS访问指令119,VMCS的每个元件由从体系结构上定义的常数来标识,该常数识别VMCS的组件;此处将这些恒定值称为“组件标识符”。在一个实施例中,所述组件标识符是16位值,但是在其他实施例中,该值可大可小。
在随后的论述中,使用VMCS中的多个字段来描述本发明的各种实施例。例如,GUEST_EIP是包含客户软件的指令指针的字段;VM_CONTROLS是包含控制VM执行环境的位的字段等。对各种字段的语法和语义的理解不是理解此处所描述的本发明所必需的。另外,所述字段被给予特定的从体系结构上定义的组件标识符。所使用的特定字段以及在这些例子中的组件标识符值不是以任何方式来限制本发明的应用。
如下是使用VMCS访问指令119的优点的示例说明。认为处理器实现方式可以根据处理器实现方式的不同来改变存储在VMCS区域118中的数据的布局。例如,第一处理器实现方式可以存储起始于VMCS区域的第28个字节处的VMCS区域的GUEST_EIP字段。第二处理器实现方式可以存储在VMCS区域中的第16个字节处的相同的VMCS字段。尽管VMCS区域118的布局已经改变,但是为初始实现方式写入并且使用所述VMCS访问指令119的VMM120仍然对处理器112的后者实现方式起作用。因为在两个处理器实现方式中所述VMCS访问指令的实现方式包括所使用的VMCS区域118的布局并且适当地访问必要的数据,所以实现了兼容性。
在一些实施例中,为了简化所述VMCS访问指令119,可以需要所述VMM120留出存储器区域(例如VMCS区域118)来收纳所有或者部分存储空间,该存储空间是处理器112为VMCS所要求的。在本发明的这些实施例中,处理器提供的指令将允许VMM 120把VMCS区域118的指针或者地址提供给处理器112。在一个实施例中,所述地址是物理地址。其他实施例可以使用虚拟或者线性地址。此后,把使用此指令提供给处理器112的所述地址称为VMCS指针。此指令通知处理器112VMCS区域224的位置。此新的指令使VMCS有效,所述VMCS可以通过处理器112全部或部分存储在由VMCS指针指出VMCS区域118中。
另一实施例可以提供这样的机制,其允许VMM120发现必须保留给VMCS区域118的存储器116的数量。例如,在英特尔奔腾IV的处理器指令基架构(ISA)中(此处称为IA-32ISA),能够提供包括所需要的VMCS区域大小的模式特定寄存器(MSR)。另一实施例提供了返回所需要的VMCS区域大小的指令。可利用的任意其他机制可用来把此信息传送至VMM。以这种方式,所需要的存储器区域118的大小可以根据处理器实现方式的不同而改变,而不会强迫重新设计或者再编译所述VMM120。
例如,假如第一处理器112需要64字节用于存储器116中的VMCS区域118。把此要求报告给VMM 120,如上所述。使用如上所述的机制来确定把多少存储器116分配给VMCS区域118,写入VMM 120以便在此处理器实现方式上运行。创建第二处理器实现方式,其现在需要128字节用于存储器116中的VMCS存储空间。为第一处理器实现方式写入的VMM 120将在第二实现方式上正确地操作,这是因为它将分配正确数量的存储空间给VMCS区域118。
当所述VMCS指针有效时,所述处理器112可以把所有或者部分VMCS存储在VMCS区域118中,或者可替换地,存储在驻留在处理器112上的资源或者任意其他可利用的位置中(即,存储在VMCS高速缓冲存储器114中)。另外,所述处理器112可以把非体系结构的状态信息存储在VMCS区域118中或者存储在处理器上的资源中。例如,所述处理器112可以存储临时变量、与VM(例如130、140或者150)相关联的微体系结构状态、所述VM(例如130、140或者150)的状态指示符等等。当所述VMCS指针是有效的时,软件不使用普通的存储器读和写来访问VMCS区域118。此限制确保与所述VMCS相关联的VMM 120和VM(例如130、140或者150)的操作的正确性。
另一处理器提供的指令可以把在处理器上的资源中高速缓存的任意VMCS数据写入VMCS区域118,使处理器上的存储空间中的适当数据无效,并且此外使所述VMCS指针失效。一个实施例可以例如通过把状态指示符写入VMCS区域来把所述VMCS标记为无效,所述状态指示符是从体系结构上或者非体系结构上定义的。另一实施例可以仅仅转储清除处理器上的存储空间并且使VMCS的处理器上的状态失效(无效)。在VMM 120试图移动VMCS区域118的内容之前执行此指令。当VMM120试图移动VMCS区域118时,它可以利用单个数据块移动来执行,这是因为所述VMCS格式被维护并且只有该处理器实现方式知道。另外,因为所述VMM知道(具有基于这里描述的机制分配的存储器的)VMCS区域的大小,所以这种块移动是可能的。所述VMCS的个别元件不必由VMM 120识别出。
在一些实施例中,专用于特定实施例的机制可以允许VMM 120识别建立特定的VMCS的处理器实现方式。所述VMM 120可以使用此处理器识别结果来确定所述VMCS是否与另一处理器实现方式兼容。在一个实施例中,此标识符位于VMCS区域118的最初4个字节中,并且例如依照MSR或者通过任意其他方法被报告给VMM 120。在第一次使用VMCS之前,需要所述VMM 120把此标识符写到VMCS中的适当位置处,并且因此可以在体系结构上定义VMCS区域118的部分的格式。在一些实施例中,所有实现方式定义VMCS区域118的相同体系结构上定义的部分是合乎需要的。
如果先前的实施例留下新定义的区域没有定义,其他实施例可以定义VMCS区域118的新的在体系结构上定义的部分,并且最新定义的部分不妨碍没有明确使用它们的VMM 120的操作。以这种方式,对这些实施例的任意VMM120写入将在更新的实现方式上操作。
在一些实施例中,所述处理器提供的指令119包括多个不同的指令:
●VMCS载入指针指令具有作为操作数的存储器地址。此地址是处理器112可以存储VMCS的位置(例如,VMCS区域118的开始)。通过指令使与此地址相关联的所述VMCS有效。此指令还允许激活与VMCS相关联并且由其控制的VM(例如130、140或者150)并且允许使用如下所述的各种其他指令。在一个实施例中,所述地址是物理地址。其他实施例可以使用虚拟或者线性地址。
●VMCS存储指针指令把指向有效VMCS区域118的指针存储到(例如处理器112上的)寄存器或者(例如存储器116中的)存储器单元中;这种存储单元的位置可以作为操作数提供给指令。
●VMCS读指令把所述VMCS的组件读取到(例如处理器112上的)寄存器或者(例如存储器116中的)存储器单元中。所述指令可以包括多个参数,该参数包括表明从VMCS被读取的VMCS组件的组件标识符以及将要存储的从所述VMCS中读取的数据的位置(例如寄存器或者存储器单元)。
●VMCS写指令载入来自于(例如处理器112上的)寄存器或者(例如存储器116中的)存储器单元中的所述VMCS的组件。就像所述VMCS读指令那样,VMCS写指令可以包括针对VMCS组件标识符的操作数。另外,它可以包括描述要被写入所述VMCS的数据的位置(例如寄存器或者存储器单元)的操作数。
●VMCS清除指令确保与所述VMCS相关联的所有处理器上的存储空间的内容被存回VMCS区域118,使处理器上的资源中的数据无效并且此外使VMCS指针失效。此指令可以在没有操作数的情况下操作,转储清除并且使当前有效的VMCS指针失效,或者在可替代的实施例中,它可以把用于转储清除和去活所需的VMCS指针作为操作数。在一个实施例中,VMCS清除指令可以通过把状态指示符写入VMCS区域来把所述VMCS标记为无效,所述状态指示符是从体系结构上或者非体系结构上定义的。
●最后,VMCS输入指令通过依照VM体系结构100的语义和所述VMCS的内容载入处理机状态,来把控制转递至(即VM进入)由有效VMCS定义的VM(例如130、140或者150)中。可替换地,所述指令可以包括具有待输入的VMCS指针(或者所述指针的位置)的自变量。
由于可以提供各种不同的或者替代的指令119,所以如上所述的处理器提供的指令119只表示一个实施例。例如,在一些实施例中,所述VMCS清除指令可以在不使VMCS指针失效的情况下把来自于处理器上的存储空间的VMCS数据复制到所述VMCS区域118。操作数可以是显式的或者隐式的。可以提供其他的指令119(或者上面提出的指令119的变形)等等,所述指令作用于处理器112中所有有效的VMCS指针。
如本领域普通技术人员所理解的那样,对存储器中的VMCS而言,常规的VM体系结构具有静态的、体系结构上定义的形式。这限制了处理器实现方式扩充或者改变VMCS的大小、组织或者内容的能力,这是因为变成所述VMCS往往需要相应地变成所述VMM实现方式。另外,由于常规的VMM使用普通存储器读和写操作来访问常规的VMCS,所以所述处理器实现方式在把VMCS数据的存储空间分配给处理器上的资源方面具有较小的灵活性。例如,在VM退出至VMM期间,因为所述处理器难以检测到所述VMM是否对存储器中VMCS的对应区域做出修改,所以所述处理器不能在处理器上的资源中高速缓存某部分VMCS。这样不能确定处理器上的资源之间的一致,并且存储器内的VMCS图像使错误和一致性检验变复杂,其中所述一致性检验在跟随VM进入执行客户软件之前需要执行。
然而,依照本发明的各种实施例,VMM 120不直接使用普通存储器读和写操作来访问VMCS存储器图像,不使用存储器116中VMCS的预先定义的格式,并且确定在运行时所述VMCS在存储器116中所需存储空间的大小。
图2中举例说明了如上所述的VMCS存储空间存储需求的运行时绑定和处理器提供的指令119的使用。图2通过VMM中的各种活动举例说明了VMCS指针的状态。处理在块210开始。这时,没有有效的VMCS指针。在块210,所述VMM确定处理器用于支持所述VMCS所需的存储器区域的大小。如上所述,这样可以例如通过读取所指定的MSR来实现。
在块220,所述VMM分配所需要的存储器;所述VMCS指针仍是无效的。虽然最佳的是,此存储器区域在物理存储器内是连续的,但是对于本领域普通技术人员显而易见的是,依照此实施例这种要求不是必须的。所述VMM使用VMCS载入指针指令,通过把VMCS区域的地址提供给处理器来激活所述VMCS,如上所述(进入块230)。在此刻,把所述VMCS指针称作工作中VMCS指针。在所述VMCS指针有效之后,所述VMM可以使用适当的VMCS访问指令读和写VMCS的组件(图1中作为119示出并且在图2中作为232和234示出)。这些读取或者写操作之后,所述VMCS指针保持有效。
当所述VMM希望允许客户执行时,它使用VM进入指令来把客户加载到机器中(进入块240)。在VM进入之后,所述VMCS指针仍是有效的,但是现在起控制VMCS指针的作用,所述指针由处理器使用以便确定客户执行环境和行为。
当VM退出发生时,控制返回到所述VMM(从块240返回到块230)。所述VMCS指针保持有效,再次作为工作中VMCS指针;如适当,所述VMM可以读和写VMCS字段(箭头232和234),并且可以使用VM输入指令再次输入客户(返回到块240)。可替换地,所述VMM可以使用所述VM清除指令来使VMCS指针失效,在那时,所述VMCS指针成为无效的(返回到状态220)。
应注意的是,由于所述VMM可以及时在任意特定时刻执行各种操作(例如VM读取、VM写入、VM输入等),所以方法200不局限于任意特定的操作顺序。另外,在使用方法200的给定的处理器内的在任意特定时刻,单个VMCS指针或者各种VMCS指针可以是有效或者无效的。在一些实施例中,在任意给定处理器内在任意特定时间点,多个VMCS可以是有效的。以这种方式,在不执行VMCS清除指令的情况下,VMM可以在VM之间切换,由此改善VM的处理效率。
在一个实施例中,附加的处理器提供的指令可以向VMM提供查询和获得并发或并行VMCS的数量的能力,该VMCS在任意特定时间点都可以是有效的。其他实施例可以提供MSR,所述VMM可以读取该MSR以获得此信息。在可替代的实施例中,同时有效的VMCS指针的数量(由此例如可以被高速缓存在处理器上的资源中)未必是VMM软件可直接看到的,当VMM激活比处理器可以存储在处理器上的资源中的更多的VMCS指针时,所述处理器实现方式自动地处理溢出条件。在该情况下,所述处理器可以自动地把适当的VMCS数据转储清除至所关联的存储器中的VMCS区域。在一些实施例中,在如上依照图1论述的多个处理器提供的指令内,可以要求显式的VMCS指针自变量。
本发明的实施例消除了让软件管理与管理VMCS数据的处理器上和存储器中的存储空间相关联的细节的要求。由此,所述VMM在高层抽象处在其控制下管理每个VM。上述在图1和图2中所论述的那样,这种策略允许处理器提供的指令管理VMCS存储空间的细节,以致VM执行更加有效,并且可以在不改变现有VMM软件的情况下、通过添加或修改所述处理器提供的指令来被最佳地改变或者扩展。
图3是在本发明的一个实施例中描述VMCS读/写指令的使用的图表。示出了体系结构VMCS格式305,不过它不是由VMM明确使用的;相反,所述VMM利用对VMCS组件标识符、字段大小和字段语义的认识来编程,但是不依照存储器中VMCS存储空间的形式的结构限定来编程。当VMM希望访问体系结构VMCS 305中的字段时,它执行VMCS读取(或者如适当则执行VMCS写入;为了举例说明的目的,图3中只示出了VMCS读取)。VMCS读指令310的参数是组件标识符,该组件标识符是识别VMCS组件的体系结构上定义的常数。所述处理器使用所述组件标识符来如恰当的话使用映射函数320映射至处理器(例如VMCS高速缓冲存储器322)上的资源或者存储器(例如VMCS区域324)内的资源,以便访问代表所述VMM的VMCS数据。如果存储在VMCS区域或者VMCS高速缓冲存储器中的数据不是体系结构上定义的格式,那么使用重新格式化函数323把所述数据适当地重新格式化以便匹配。
图3中示出了两个实例VMCS访问指令。虽然这两个例子用于VMCS读指令,不过如下面就图5的论述中详细说明的那样,类似的活动集也发生在VMCS写指令上。
参考图3,第一实例VMCS读取指令310访问所述GUEST_EIP组件,其具有体系结构上定义的编码0x4032。所述处理器实现方式把这种组件的数据保持在VMCS区域324中,如映射函数320所确定的那样。所述处理器使用存储器读操作330从VMCS区域324中读取适当的组件数据。所述读操作330了解组件在VMCS区域324中的位置(此外,如映射函数320所确定的那样;在此例子中,它位于VMCS区域中的偏移12处)。然后,所述处理器把数据值返回至所述VMM(如箭头331所示)。
第二实例VMCS读指令350访问所述VM_CONTROLS组件,其具有体系结构上定义的编码0x1076。这种处理器实现方式把这种组件保持在所述VMCS高速缓冲存储器322中(如映射函数320所确定的那样)。所述处理器访问所述VMCS高速缓冲存储器322以便检索数据。在该情况下,把所述数据以不与VM_CONTROLS组件的结构限定匹配的形式存储在处理器上(例如,把数据作为重新排序的8字节对象存储在处理器上,而VM_CONTROLS字段的结构限定是4字节对象)。在把数据返回至VMM之前,所述处理器使用重新格式化函数323重新格式化所述VM_CONTROLS数据以便匹配所述字段的结构限定。把此重新格式化的值(即,匹配所请求的组件的结构限定的值)返回到所述VMM(显示为箭头326)。
使用这些VMCS访问指令,当从存储器高速缓存至处理器上的资源时,不需要管理每个都由独立的VMCS标识的一个或多个VM的VMM来管理所述存储空间,该存储空间是与VMCS相关联的。另外,所述VMM不需要管理改变处理器实现方式的细节,诸如存储器中或者处理器上的资源中的数据的格式化。由此,处理器开发人员可以改变或者修改VMCS访问指令,以便改善VM性能并且扩展VM能力,而不会对现有VMM或者VM的操作带来负面影响。然而,现有VMM和VM可以受益于这种变化,所述变化诸如是性能、可靠性、可缩放性或者其他改善,这些给VM体系结构带来了新的实现方式。
图4是依照本发明一个实施例的用于执行VMCS读指令的方法400的流程图。在410,从VMM接收VMCS读请求。在420,从所述VMCS读请求获取VMCS组件标识符。所述组件标识符是体系结构上定义的常数,该常数识别VMCS的所要求的组件。
在430,处理器检查所述组件标识符,以便确定与所述组件标识符相关联的VMCS组件是否在存储器中。如果所述VMCS组件是存储在存储器中,那么在440计算所述存储器位置的地址,并且在450获取与VMCS组件相关联的VMCS数据。然而,如果所述VMCS组件没有存储在存储器中,那么在460,所述处理器从处理器上的存储空间中获取与所述VMCS组件相关联VMCS数据。以这种方式,所述处理器使用所述组件标识符来把读请求映射至VMCS组件存储空间,而不管其是驻留在存储器中还是处理器上的存储空间中。
在470,通过所述处理器做出检验以便确定在把VMCS数据返回至所述VMM以前是否需要重新格式化VMCS数据。如果所述VMCS数据以不同于VMCS组件的体系结构上定义的数据格式的格式来(要么在VMCS区域中或者在处理器上的资源中)存储(即,所述VMCS组件是以不同于体系结构上定义的格式的实现方式特定的数据格式存储的),那么在480,访问重新格式化函数以便把实现方式特定的VMCS数据翻译为体系结构上定义的数据格式。如果所述VMCS数据以VMCS组件的体系结构上定义的数据格式来(或者在VMCS区域中或者在处理器上的资源中)存储,那么不需要发生对VMCS数据的重新格式化函数或者翻译。最后在490,把(现在为体系结构上定义的数据格式的)所述VMCS数据返回到所述VMM。
图5是依照本发明一个实施例的用于执行VMCS写指令的方法500的流程图。在505,处理器从VMM接收VMCS写入请求。所述处理器获取作为写入请求的操作数之一的组件标识符,如在510中所述。此外,在515,所述处理器获取希望被写入所述VMCS的写数据作为另一操作数。此写数据具有被写入的VMCS组件的体系结构上定义的数据格式。
在520,做出检验以便确定所述VMCS组件是否通过所述处理器以体系结构上定义的数据格式来(在VMCS区域中或者在处理器上资源中)存储。据此,如果所述VMCS组件没有以体系结构上定义的数据格式来存储,那么在525,执行数据的适当的重新格式化,以便使所述数据具有适当的实现方式特定的数据格式,该数据格式与被访问的VMCS组件相关联。存储数据的格式可以和体系结构上定义的格式一致,或者它可以在大小或组织方面不同。
接下来在530,执行另一检验以便确定处理器存储所述VMCS组件的位置。使用所述组件标识符,所述处理器确定所述VMCS组件的存储位置。如果所述存储位置位于存储器中,那么在535,计算所述存储器地址,并且在540,把写数据写入所述存储位置。然而,如果所述存储位置不在存储器中,那么在545,确定处理器上的存储空间中的适当位置,并且把写数据写入所述处理器上的存储空间。写入所述存储空间的数据具有实现方式特定的数据格式,该数据格式可以与体系结构上定义的格式相同或者不同,这取决于所查询的所述VMCS组件、所述处理器实现方式并且在一些实施例中,这取决于所查询的组件当前是存储在处理器上的资源中还是存储在所述VMCS区域中。
用于确定特定VMCS组件的存储位置并且用于确定所述VMCS组件是否是由处理器以体系结构上定义的数据格式来存储的过程400和500中使用的机制是实现方式特定的。在一个实施例中,所述处理器使用由所述组件标识符索引的查找表。另外,应注意的是,如果多个VMCS指针可以同时有效,那么这些确定可以取决于VMCS正被访问。
当阅读和领会此公开内容时,本领域普通技术人员将理解这样的方式,其中本发明可以在基于计算机的系统中实现,以便执行此处公开的方法。本发明可以使用(诸如在通用计算机系统上或者专用机上运行的)软件、硬件(例如电路、专用逻辑、可编程逻辑、微代码等)或者硬件和软件的组合来实现。
应该理解的是,上述描述是例证性的,而不是限制性的。当回故上述描述时,许多其他的实施例对于本领域中普通技术人员是显而易见。因此,本发明的实施例的范围应该参照所附权利要求以及与被授予这种权利要求等效的全部范围来限定。
需要强调的是,遵照37C.F.R.§1.72(b)的规定提供了摘要,该规定要求摘要允许读者快速确定技术公开的特性和要旨。提交所述摘要是基于这样的认识,即不会使用它来解释或者限制权利要求的范围或者意义。
在上述实施方式的描述中,为了简化公开内容,在单个实施例中集合了各种特征。所公开的这种方法不应该被解释为反映这样的意图,即所要求保护的本发明的实施例要求比在每个权利要求中清楚讲述的特征更多的特征。相反,如随后权利要求书反映的那样,发明的主题在于少于单个公开的实施例的所有特征。由此如下的权利要求被并入所述实施方式的描述中,每个权利要求坚持其自身作为独立的示例性实施例。
Claims (4)
1.一种用于激活虚拟机控制结构的方法:
由虚拟机监视器执行访问含有虚拟机控制结构所需的存储空间大小的存储位置的至少一个指令和提供虚拟机控制结构所需的存储空间大小的指令来确定虚拟机控制结构所需的存储空间大小;并且
向处理器提供指向存储器区域的指针,所述存储器区域至少与虚拟机控制结构所需的存储空间大小一样大。
2.如权利要求1所述的方法,其中在向处理器提供指针时,通过执行虚拟机控制结构指针载入指令来提供该指针。
3.如权利要求2所述的方法,其中在执行虚拟机控制结构指针载入指令时,所述虚拟机控制结构指针载入指令包括至少与虚拟机控制结构所需存储空间大小一样大的存储器区域的指针地址,并且将该指针地址作为操作数,所述操作数是虚拟机控制结构指针载入指令的显式操作数和虚拟机控制结构指针载入指令的隐式操作数中的至少一个。
4.如权利要求1所述的方法,还包括:在向处理器提供指向存储器区域的指针之前,分配所述存储器区域。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/322,003 | 2002-12-17 | ||
US10/322,003 US7318141B2 (en) | 2002-12-17 | 2002-12-17 | Methods and systems to control virtual machines |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1833225A CN1833225A (zh) | 2006-09-13 |
CN100504789C true CN100504789C (zh) | 2009-06-24 |
Family
ID=32507184
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2003801066275A Expired - Fee Related CN100504789C (zh) | 2002-12-17 | 2003-11-12 | 控制虚拟机的方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US7318141B2 (zh) |
JP (2) | JP2006516769A (zh) |
KR (1) | KR100847613B1 (zh) |
CN (1) | CN100504789C (zh) |
AU (1) | AU2003290857A1 (zh) |
DE (1) | DE10393920B4 (zh) |
TW (1) | TWI273493B (zh) |
WO (1) | WO2004061645A2 (zh) |
Families Citing this family (89)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6976162B1 (en) | 2000-06-28 | 2005-12-13 | Intel Corporation | Platform and method for establishing provable identities while maintaining privacy |
US7818808B1 (en) | 2000-12-27 | 2010-10-19 | Intel Corporation | Processor mode for limiting the operation of guest software running on a virtual machine supported by a virtual machine monitor |
US6907600B2 (en) * | 2000-12-27 | 2005-06-14 | Intel Corporation | Virtual translation lookaside buffer |
US7035963B2 (en) * | 2000-12-27 | 2006-04-25 | Intel Corporation | Method for resolving address space conflicts between a virtual machine monitor and a guest operating system |
US7024555B2 (en) | 2001-11-01 | 2006-04-04 | Intel Corporation | Apparatus and method for unilaterally loading a secure operating system within a multiprocessor environment |
US7631196B2 (en) | 2002-02-25 | 2009-12-08 | Intel Corporation | Method and apparatus for loading a trustable operating system |
US7069442B2 (en) * | 2002-03-29 | 2006-06-27 | Intel Corporation | System and method for execution of a secured environment initialization instruction |
US7127548B2 (en) * | 2002-04-16 | 2006-10-24 | Intel Corporation | Control register access virtualization performance improvement in the virtual-machine architecture |
US20030229794A1 (en) * | 2002-06-07 | 2003-12-11 | Sutton James A. | System and method for protection against untrusted system management code by redirecting a system management interrupt and creating a virtual machine container |
US7142674B2 (en) * | 2002-06-18 | 2006-11-28 | Intel Corporation | Method of confirming a secure key exchange |
US6996748B2 (en) * | 2002-06-29 | 2006-02-07 | Intel Corporation | Handling faults associated with operation of guest software in the virtual-machine architecture |
US7124327B2 (en) * | 2002-06-29 | 2006-10-17 | Intel Corporation | Control over faults occurring during the operation of guest software in the virtual-machine architecture |
US20040117532A1 (en) * | 2002-12-11 | 2004-06-17 | Bennett Steven M. | Mechanism for controlling external interrupts in a virtual machine system |
US7073042B2 (en) * | 2002-12-12 | 2006-07-04 | Intel Corporation | Reclaiming existing fields in address translation data structures to extend control over memory accesses |
US7318141B2 (en) * | 2002-12-17 | 2008-01-08 | Intel Corporation | Methods and systems to control virtual machines |
US7900017B2 (en) | 2002-12-27 | 2011-03-01 | Intel Corporation | Mechanism for remapping post virtual machine memory pages |
US8079034B2 (en) * | 2003-09-15 | 2011-12-13 | Intel Corporation | Optimizing processor-managed resources based on the behavior of a virtual machine monitor |
US7424709B2 (en) * | 2003-09-15 | 2008-09-09 | Intel Corporation | Use of multiple virtual machine monitors to handle privileged events |
US7739521B2 (en) * | 2003-09-18 | 2010-06-15 | Intel Corporation | Method of obscuring cryptographic computations |
US7610611B2 (en) * | 2003-09-19 | 2009-10-27 | Moran Douglas R | Prioritized address decoder |
US7237051B2 (en) * | 2003-09-30 | 2007-06-26 | Intel Corporation | Mechanism to control hardware interrupt acknowledgement in a virtual machine system |
US20050108534A1 (en) * | 2003-11-19 | 2005-05-19 | Bajikar Sundeep M. | Providing services to an open platform implementing subscriber identity module (SIM) capabilities |
US8156343B2 (en) | 2003-11-26 | 2012-04-10 | Intel Corporation | Accessing private data about the state of a data processing machine from storage that is publicly accessible |
US8037314B2 (en) * | 2003-12-22 | 2011-10-11 | Intel Corporation | Replacing blinded authentication authority |
US20050133582A1 (en) * | 2003-12-22 | 2005-06-23 | Bajikar Sundeep M. | Method and apparatus for providing a trusted time stamp in an open platform |
US7802085B2 (en) * | 2004-02-18 | 2010-09-21 | Intel Corporation | Apparatus and method for distributing private keys to an entity with minimal secret, unique information |
US20050216920A1 (en) * | 2004-03-24 | 2005-09-29 | Vijay Tewari | Use of a virtual machine to emulate a hardware device |
US7356735B2 (en) * | 2004-03-30 | 2008-04-08 | Intel Corporation | Providing support for single stepping a virtual machine in a virtual machine environment |
US7620949B2 (en) | 2004-03-31 | 2009-11-17 | Intel Corporation | Method and apparatus for facilitating recognition of an open event window during operation of guest software in a virtual machine environment |
US20050288056A1 (en) * | 2004-06-29 | 2005-12-29 | Bajikar Sundeep M | System including a wireless wide area network (WWAN) module with an external identity module reader and approach for certifying the WWAN module |
US7607011B1 (en) * | 2004-07-16 | 2009-10-20 | Rockwell Collins, Inc. | System and method for multi-level security on a network |
US7840962B2 (en) * | 2004-09-30 | 2010-11-23 | Intel Corporation | System and method for controlling switching between VMM and VM using enabling value of VMM timer indicator and VMM timer value having a specified time |
US8146078B2 (en) | 2004-10-29 | 2012-03-27 | Intel Corporation | Timer offsetting mechanism in a virtual machine environment |
US8924728B2 (en) | 2004-11-30 | 2014-12-30 | Intel Corporation | Apparatus and method for establishing a secure session with a device without exposing privacy-sensitive information |
KR100638476B1 (ko) * | 2004-12-22 | 2006-10-26 | 삼성전자주식회사 | 버추얼 플랫폼 기반의 시스템 온 칩 개발 환경 및 개발 방법 |
US8533777B2 (en) | 2004-12-29 | 2013-09-10 | Intel Corporation | Mechanism to determine trust of out-of-band management agents |
US7886126B2 (en) * | 2005-01-14 | 2011-02-08 | Intel Corporation | Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system |
US7395405B2 (en) | 2005-01-28 | 2008-07-01 | Intel Corporation | Method and apparatus for supporting address translation in a virtual machine environment |
US7496495B2 (en) * | 2005-05-12 | 2009-02-24 | Microsoft Corporation | Virtual operating system device communication relying on memory access violations |
US20070006178A1 (en) * | 2005-05-12 | 2007-01-04 | Microsoft Corporation | Function-level just-in-time translation engine with multiple pass optimization |
US9785485B2 (en) | 2005-07-27 | 2017-10-10 | Intel Corporation | Virtualization event processing in a layered virtualization architecture |
US9176741B2 (en) | 2005-08-29 | 2015-11-03 | Invention Science Fund I, Llc | Method and apparatus for segmented sequential storage |
US20070083735A1 (en) | 2005-08-29 | 2007-04-12 | Glew Andrew F | Hierarchical processor |
US7644258B2 (en) | 2005-08-29 | 2010-01-05 | Searete, Llc | Hybrid branch predictor using component predictors each having confidence and override signals |
US8296550B2 (en) | 2005-08-29 | 2012-10-23 | The Invention Science Fund I, Llc | Hierarchical register file with operand capture ports |
US8275976B2 (en) | 2005-08-29 | 2012-09-25 | The Invention Science Fund I, Llc | Hierarchical instruction scheduler facilitating instruction replay |
US7900204B2 (en) * | 2005-12-30 | 2011-03-01 | Bennett Steven M | Interrupt processing in a layered virtualization architecture |
US8014530B2 (en) | 2006-03-22 | 2011-09-06 | Intel Corporation | Method and apparatus for authenticated, recoverable key distribution with no database secrets |
CN101154130B (zh) * | 2006-09-30 | 2012-07-04 | 联想(北京)有限公司 | 一种虚拟机系统及其电源管理方法 |
US8732699B1 (en) | 2006-10-27 | 2014-05-20 | Hewlett-Packard Development Company, L.P. | Migrating virtual machines between physical machines in a define group |
US8296760B2 (en) * | 2006-10-27 | 2012-10-23 | Hewlett-Packard Development Company, L.P. | Migrating a virtual machine from a first physical machine in response to receiving a command to lower a power mode of the first physical machine |
US9092250B1 (en) * | 2006-10-27 | 2015-07-28 | Hewlett-Packard Development Company, L.P. | Selecting one of plural layouts of virtual machines on physical machines |
US8185893B2 (en) * | 2006-10-27 | 2012-05-22 | Hewlett-Packard Development Company, L.P. | Starting up at least one virtual machine in a physical machine by a load balancer |
JP4780327B2 (ja) * | 2006-12-01 | 2011-09-28 | 日本電気株式会社 | パーティション・コンテキスト制御装置及び方法、並びにコンピュータ |
CN101206582B (zh) * | 2006-12-22 | 2010-10-06 | 联想(北京)有限公司 | 一种虚拟机系统及其处理方法 |
US20080235000A1 (en) * | 2007-03-22 | 2008-09-25 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Implementing security control practice omission decisions from service emulation indications |
US9558019B2 (en) | 2007-03-22 | 2017-01-31 | Invention Science Fund I, Llc | Coordinating instances of a thread or other service in emulation |
US7984483B2 (en) | 2007-04-25 | 2011-07-19 | Acxess, Inc. | System and method for working in a virtualized computing environment through secure access |
US9459984B2 (en) * | 2007-10-29 | 2016-10-04 | Intel Corporation | Method and systems for external performance monitoring for virtualized environments |
US8341626B1 (en) | 2007-11-30 | 2012-12-25 | Hewlett-Packard Development Company, L. P. | Migration of a virtual machine in response to regional environment effects |
CN101470668B (zh) * | 2007-12-24 | 2011-01-26 | 联想(北京)有限公司 | 一种计算机及计算机上配置高速缓存控制策略的方法 |
WO2009097610A1 (en) * | 2008-02-01 | 2009-08-06 | Northeastern University | A vmm-based intrusion detection system |
CN102057367A (zh) * | 2008-04-10 | 2011-05-11 | 惠普开发有限公司 | 依照环境数据的虚拟机迁移 |
CN102077170A (zh) * | 2008-06-27 | 2011-05-25 | Nxp股份有限公司 | 元语言程序代码执行的中断方法 |
US8898418B2 (en) | 2008-08-26 | 2014-11-25 | International Business Machines Corporation | Method, apparatus and computer program for provisioning a storage volume to a virtual server |
US20100115509A1 (en) * | 2008-10-31 | 2010-05-06 | International Business Machines Corporation | Power optimization via virtualization opportunity |
US20100175108A1 (en) * | 2009-01-02 | 2010-07-08 | Andre Protas | Method and system for securing virtual machines by restricting access in connection with a vulnerability audit |
KR101571880B1 (ko) * | 2009-02-02 | 2015-11-25 | 삼성전자 주식회사 | 전자장치와 가상머신 제공장치 및 이를 이용한 가상머신 서비스 이용 방법 |
JP4961459B2 (ja) * | 2009-06-26 | 2012-06-27 | 株式会社日立製作所 | 仮想計算機システムおよび仮想計算機システムにおける制御方法 |
US8479196B2 (en) * | 2009-09-22 | 2013-07-02 | International Business Machines Corporation | Nested virtualization performance in a computer system |
CN101876954B (zh) * | 2009-12-23 | 2012-08-15 | 中国科学院计算技术研究所 | 一种虚拟机控制系统及其工作方法 |
US9201677B2 (en) * | 2011-05-23 | 2015-12-01 | Intelligent Intellectual Property Holdings 2 Llc | Managing data input/output operations |
US8874823B2 (en) | 2011-02-15 | 2014-10-28 | Intellectual Property Holdings 2 Llc | Systems and methods for managing data input/output operations |
US9003104B2 (en) | 2011-02-15 | 2015-04-07 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a file-level cache |
EP2737398A4 (en) | 2011-07-29 | 2015-01-07 | Hewlett Packard Development Co | MIGRATION OF VIRTUAL MACHINES |
KR20140099296A (ko) * | 2011-12-30 | 2014-08-11 | 인텔 코포레이션 | 미들웨어로서의 플랫폼 독립 isa 에뮬레이터 |
US9116812B2 (en) | 2012-01-27 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a de-duplication cache |
US10339056B2 (en) | 2012-07-03 | 2019-07-02 | Sandisk Technologies Llc | Systems, methods and apparatus for cache transfers |
US10346095B2 (en) | 2012-08-31 | 2019-07-09 | Sandisk Technologies, Llc | Systems, methods, and interfaces for adaptive cache persistence |
CN103036975B (zh) * | 2012-12-13 | 2016-03-09 | 深信服网络科技(深圳)有限公司 | 虚拟机控制方法及装置 |
US9189411B2 (en) * | 2012-12-28 | 2015-11-17 | Intel Corporation | Logging in secure enclaves |
US9223602B2 (en) * | 2012-12-28 | 2015-12-29 | Intel Corporation | Processors, methods, and systems to enforce blacklisted paging structure indication values |
US9842053B2 (en) | 2013-03-15 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for persistent cache logging |
US9772867B2 (en) * | 2014-03-27 | 2017-09-26 | International Business Machines Corporation | Control area for managing multiple threads in a computer |
US9389897B1 (en) | 2014-12-18 | 2016-07-12 | International Business Machines Corporation | Exiting multiple threads of a simulation environment in a computer |
US20210026950A1 (en) * | 2016-03-07 | 2021-01-28 | Crowdstrike, Inc. | Hypervisor-based redirection of system calls and interrupt-based task offloading |
CN106293873B (zh) * | 2016-07-29 | 2019-11-05 | 北京北信源软件股份有限公司 | 一种准确获取虚拟机控制块(vmcs)中关键数据位置的方法 |
US10311057B2 (en) * | 2016-08-08 | 2019-06-04 | International Business Machines Corporation | Attribute value information for a data extent |
CN107341115B (zh) * | 2017-06-30 | 2021-07-16 | 联想(北京)有限公司 | 虚拟机内存访问方法、系统和电子设备 |
Family Cites Families (109)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4037214A (en) | 1976-04-30 | 1977-07-19 | International Business Machines Corporation | Key register controlled accessing system |
US4247905A (en) | 1977-08-26 | 1981-01-27 | Sharp Kabushiki Kaisha | Memory clear system |
US4278837A (en) | 1977-10-31 | 1981-07-14 | Best Robert M | Crypto microprocessor for executing enciphered programs |
JPS5576447A (en) | 1978-12-01 | 1980-06-09 | Fujitsu Ltd | Address control system for software simulation |
US4366537A (en) | 1980-05-23 | 1982-12-28 | International Business Machines Corp. | Authorization mechanism for transfer of program control or data between different address spaces having different storage protect keys |
US4521852A (en) | 1982-06-30 | 1985-06-04 | Texas Instruments Incorporated | Data processing device formed on a single semiconductor substrate having secure memory |
JPS59111561A (ja) | 1982-12-17 | 1984-06-27 | Hitachi Ltd | 複合プロセツサ・システムのアクセス制御方式 |
JPS6057438A (ja) * | 1983-09-08 | 1985-04-03 | Hitachi Ltd | 仮想計算機システム制御装置 |
US4674038A (en) * | 1984-12-28 | 1987-06-16 | International Business Machines Corporation | Recovery of guest virtual machines after failure of a host real machine |
JPH0833851B2 (ja) * | 1986-03-15 | 1996-03-29 | 株式会社日立製作所 | 仮想計算機のモニタリング方式 |
US4916608A (en) * | 1986-05-30 | 1990-04-10 | International Business Machines Corporation | Provision of virtual storage resources to an operating system control program |
JPH01263836A (ja) * | 1988-04-15 | 1989-10-20 | Nec Corp | 仮想計算機システムの情報移送方式 |
US5079737A (en) | 1988-10-25 | 1992-01-07 | United Technologies Corporation | Memory management unit for the MIL-STD 1750 bus |
US5781753A (en) | 1989-02-24 | 1998-07-14 | Advanced Micro Devices, Inc. | Semi-autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for speculative and out-of-order execution of complex instructions |
US5022077A (en) | 1989-08-25 | 1991-06-04 | International Business Machines Corp. | Apparatus and method for preventing unauthorized access to BIOS in a personal computer system |
CA2027799A1 (en) | 1989-11-03 | 1991-05-04 | David A. Miller | Method and apparatus for independently resetting processors and cache controllers in multiple processor systems |
US5075842A (en) | 1989-12-22 | 1991-12-24 | Intel Corporation | Disabling tag bit recognition and allowing privileged operations to occur in an object-oriented memory protection mechanism |
US5230069A (en) * | 1990-10-02 | 1993-07-20 | International Business Machines Corporation | Apparatus and method for providing private and shared access to host address and data spaces by guest programs in a virtual machine computer system |
US5437033A (en) * | 1990-11-16 | 1995-07-25 | Hitachi, Ltd. | System for recovery from a virtual machine monitor failure with a continuous guest dispatched to a nonguest mode |
US5255379A (en) * | 1990-12-28 | 1993-10-19 | Sun Microsystems, Inc. | Method for automatically transitioning from V86 mode to protected mode in a computer system using an Intel 80386 or 80486 processor |
JPH04348434A (ja) | 1991-05-27 | 1992-12-03 | Hitachi Ltd | 仮想計算機システム |
US5522075A (en) | 1991-06-28 | 1996-05-28 | Digital Equipment Corporation | Protection ring extension for computers having distinct virtual machine monitor and virtual machine address spaces |
US5319760A (en) * | 1991-06-28 | 1994-06-07 | Digital Equipment Corporation | Translation buffer for virtual machines with address space match |
US5455909A (en) | 1991-07-05 | 1995-10-03 | Chips And Technologies Inc. | Microprocessor with operation capture facility |
JPH06236284A (ja) | 1991-10-21 | 1994-08-23 | Intel Corp | コンピュータシステム処理状態を保存及び復元する方法及びコンピュータシステム |
US5627987A (en) | 1991-11-29 | 1997-05-06 | Kabushiki Kaisha Toshiba | Memory management and protection system for virtual memory in computer system |
US5421006A (en) | 1992-05-07 | 1995-05-30 | Compaq Computer Corp. | Method and apparatus for assessing integrity of computer system software |
US5293424A (en) | 1992-10-14 | 1994-03-08 | Bull Hn Information Systems Inc. | Secure memory card |
EP0600112A1 (de) | 1992-11-30 | 1994-06-08 | Siemens Nixdorf Informationssysteme Aktiengesellschaft | Datenverarbeitungsanlage mit virtueller Speicheradressierung und schlüsselgesteuertem Speicherzugriff |
JP2765411B2 (ja) | 1992-11-30 | 1998-06-18 | 株式会社日立製作所 | 仮想計算機方式 |
FR2703800B1 (fr) | 1993-04-06 | 1995-05-24 | Bull Cp8 | Procédé de signature d'un fichier informatique, et dispositif pour la mise en Óoeuvre. |
JPH06348867A (ja) | 1993-06-04 | 1994-12-22 | Hitachi Ltd | マイクロコンピュータ |
JPH07129419A (ja) * | 1993-11-08 | 1995-05-19 | Nec Corp | 仮想計算機システム |
US5459869A (en) | 1994-02-17 | 1995-10-17 | Spilo; Michael L. | Method for providing protected mode services for device drivers and other resident software |
US5684881A (en) | 1994-05-23 | 1997-11-04 | Matsushita Electric Industrial Co., Ltd. | Sound field and sound image control apparatus and method |
US5473692A (en) | 1994-09-07 | 1995-12-05 | Intel Corporation | Roving software license for a hardware agent |
US5539828A (en) | 1994-05-31 | 1996-07-23 | Intel Corporation | Apparatus and method for providing secured communications |
US5978481A (en) | 1994-08-16 | 1999-11-02 | Intel Corporation | Modem compatible method and apparatus for encrypting data that is transparent to software applications |
US6058478A (en) | 1994-09-30 | 2000-05-02 | Intel Corporation | Apparatus and method for a vetted field upgrade |
US5621912A (en) * | 1994-12-29 | 1997-04-15 | International Business Machines Corporation | Method and apparatus for enabling monitoring of guests and native operating systems |
US5615263A (en) | 1995-01-06 | 1997-03-25 | Vlsi Technology, Inc. | Dual purpose security architecture with protected internal operating system |
US5764969A (en) | 1995-02-10 | 1998-06-09 | International Business Machines Corporation | Method and system for enhanced management operation utilizing intermixed user level and supervisory level instructions with partial concept synchronization |
US5717903A (en) | 1995-05-15 | 1998-02-10 | Compaq Computer Corporation | Method and appartus for emulating a peripheral device to allow device driver development before availability of the peripheral device |
JP3451595B2 (ja) | 1995-06-07 | 2003-09-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ |
US5737760A (en) | 1995-10-06 | 1998-04-07 | Motorola Inc. | Microcontroller with security logic circuit which prevents reading of internal memory by external program |
JP3693721B2 (ja) | 1995-11-10 | 2005-09-07 | Necエレクトロニクス株式会社 | フラッシュメモリ内蔵マイクロコンピュータ及びそのテスト方法 |
US6205467B1 (en) * | 1995-11-14 | 2001-03-20 | Advanced Micro Devices, Inc. | Microprocessor having a context save unit for saving context independent from interrupt requests |
EP0880840A4 (en) | 1996-01-11 | 2002-10-23 | Mrj Inc | DEVICE FOR CONTROLLING ACCESS AND DISTRIBUTION OF DIGITAL PROPERTY |
US5657445A (en) | 1996-01-26 | 1997-08-12 | Dell Usa, L.P. | Apparatus and method for limiting access to mass storage devices in a computer system |
IL117085A (en) | 1996-02-08 | 2005-07-25 | Milsys Ltd | Secure computer system |
US5835594A (en) | 1996-02-09 | 1998-11-10 | Intel Corporation | Methods and apparatus for preventing unauthorized write access to a protected non-volatile storage |
US5978892A (en) | 1996-05-03 | 1999-11-02 | Digital Equipment Corporation | Virtual memory allocation in a virtual address space having an inaccessible gap |
US6205550B1 (en) | 1996-06-13 | 2001-03-20 | Intel Corporation | Tamper resistant methods and apparatus |
US6175925B1 (en) | 1996-06-13 | 2001-01-16 | Intel Corporation | Tamper resistant player for scrambled contents |
US6178509B1 (en) | 1996-06-13 | 2001-01-23 | Intel Corporation | Tamper resistant methods and apparatus |
US5729760A (en) | 1996-06-21 | 1998-03-17 | Intel Corporation | System for providing first type access to register if processor in first mode and second type access to register if processor not in first mode |
US6055637A (en) | 1996-09-27 | 2000-04-25 | Electronic Data Systems Corporation | System and method for accessing enterprise-wide resources by presenting to the resource a temporary credential |
US5937063A (en) | 1996-09-30 | 1999-08-10 | Intel Corporation | Secure boot |
US5844986A (en) | 1996-09-30 | 1998-12-01 | Intel Corporation | Secure BIOS |
JPH10134008A (ja) | 1996-11-05 | 1998-05-22 | Mitsubishi Electric Corp | 半導体装置およびコンピュータシステム |
US5852717A (en) | 1996-11-20 | 1998-12-22 | Shiva Corporation | Performance optimizations for computer networks utilizing HTTP |
US5757919A (en) | 1996-12-12 | 1998-05-26 | Intel Corporation | Cryptographically protected paging subsystem |
US6148401A (en) | 1997-02-05 | 2000-11-14 | At&T Corp. | System and method for providing assurance to a host that a piece of software possesses a particular property |
US5953502A (en) | 1997-02-13 | 1999-09-14 | Helbig, Sr.; Walter A | Method and apparatus for enhancing computer system security |
WO1998044402A1 (en) | 1997-03-27 | 1998-10-08 | British Telecommunications Public Limited Company | Copy protection of data |
US6802062B1 (en) * | 1997-04-01 | 2004-10-05 | Hitachi, Ltd. | System with virtual machine movable between virtual machine systems and control method |
US6272637B1 (en) | 1997-04-14 | 2001-08-07 | Dallas Semiconductor Corporation | Systems and methods for protecting access to encrypted information |
US6075938A (en) | 1997-06-10 | 2000-06-13 | The Board Of Trustees Of The Leland Stanford Junior University | Virtual machine monitors for scalable multiprocessors |
US5987557A (en) | 1997-06-19 | 1999-11-16 | Sun Microsystems, Inc. | Method and apparatus for implementing hardware protection domains in a system with no memory management unit (MMU) |
US6014745A (en) | 1997-07-17 | 2000-01-11 | Silicon Systems Design Ltd. | Protection for customer programs (EPROM) |
US6188995B1 (en) | 1997-07-28 | 2001-02-13 | Apple Computer, Inc. | Method and apparatus for enforcing software licenses |
DE19735948C1 (de) | 1997-08-19 | 1998-10-01 | Siemens Nixdorf Inf Syst | Verfahren zur Verbesserung der Steuerungsmöglichkeit in Datenverarbeitungsanlagen mit Adreßübersetzung |
US6128641A (en) * | 1997-09-12 | 2000-10-03 | Siemens Aktiengesellschaft | Data processing unit with hardware assisted context switching capability |
US6282657B1 (en) | 1997-09-16 | 2001-08-28 | Safenet, Inc. | Kernel mode protection |
US6148379A (en) | 1997-09-19 | 2000-11-14 | Silicon Graphics, Inc. | System, method and computer program product for page sharing between fault-isolated cells in a distributed shared memory system |
US6182089B1 (en) | 1997-09-23 | 2001-01-30 | Silicon Graphics, Inc. | Method, system and computer program product for dynamically allocating large memory pages of different sizes |
US6134602A (en) * | 1997-09-24 | 2000-10-17 | Microsoft Corporation | Application programming interface enabling application programs to group code and data to control allocation of physical memory in a virtual memory system |
US6085296A (en) | 1997-11-12 | 2000-07-04 | Digital Equipment Corporation | Sharing memory pages and page tables among computer processes |
US6219787B1 (en) | 1997-12-22 | 2001-04-17 | Texas Instruments Incorporated | Method and apparatus for extending security model to native code |
US6192455B1 (en) | 1998-03-30 | 2001-02-20 | Intel Corporation | Apparatus and method for preventing access to SMRAM space through AGP addressing |
US6339826B2 (en) | 1998-05-05 | 2002-01-15 | International Business Machines Corp. | Client-server system for maintaining a user desktop consistent with server application user access permissions |
US6397242B1 (en) * | 1998-05-15 | 2002-05-28 | Vmware, Inc. | Virtualization system including a virtual machine monitor for a computer with a segmented architecture |
US6339815B1 (en) | 1998-08-14 | 2002-01-15 | Silicon Storage Technology, Inc. | Microcontroller system having allocation circuitry to selectively allocate and/or hide portions of a program memory address space |
US6505279B1 (en) | 1998-08-14 | 2003-01-07 | Silicon Storage Technology, Inc. | Microcontroller system having security circuitry to selectively lock portions of a program memory address space |
JP2000076139A (ja) | 1998-08-28 | 2000-03-14 | Nippon Telegr & Teleph Corp <Ntt> | 携帯型情報記憶媒体 |
US6230248B1 (en) | 1998-10-12 | 2001-05-08 | Institute For The Development Of Emerging Architectures, L.L.C. | Method and apparatus for pre-validating regions in a virtual addressing scheme |
EP1030237A1 (en) | 1999-02-15 | 2000-08-23 | Hewlett-Packard Company | Trusted hardware device in a computer |
US6272533B1 (en) | 1999-02-16 | 2001-08-07 | Hendrik A. Browne | Secure computer system and method of providing secure access to a computer system including a stand alone switch operable to inhibit data corruption on a storage device |
US6732220B2 (en) * | 1999-02-17 | 2004-05-04 | Elbrus International | Method for emulating hardware features of a foreign architecture in a host operating system environment |
WO2000062232A1 (en) | 1999-04-12 | 2000-10-19 | Digital Media On Demand, Inc. (Dmod, Inc.) | Secure electronic commerce system |
US6321314B1 (en) | 1999-06-09 | 2001-11-20 | Ati International S.R.L. | Method and apparatus for restricting memory access |
US6158546A (en) | 1999-06-25 | 2000-12-12 | Tenneco Automotive Inc. | Straight through muffler with conically-ended output passage |
US6301646B1 (en) | 1999-07-30 | 2001-10-09 | Curl Corporation | Pointer verification system and method |
US6374317B1 (en) | 1999-10-07 | 2002-04-16 | Intel Corporation | Method and apparatus for initializing a computer interface |
GB9923802D0 (en) | 1999-10-08 | 1999-12-08 | Hewlett Packard Co | User authentication |
GB9923804D0 (en) | 1999-10-08 | 1999-12-08 | Hewlett Packard Co | Electronic commerce system |
US6292874B1 (en) | 1999-10-19 | 2001-09-18 | Advanced Technology Materials, Inc. | Memory management method and apparatus for partitioning homogeneous memory and restricting access of installed applications to predetermined memory ranges |
EP1269425A2 (en) | 2000-02-25 | 2003-01-02 | Identix Incorporated | Secure transaction system |
AU2001243365A1 (en) | 2000-03-02 | 2001-09-12 | Alarity Corporation | System and method for process protection |
CA2341931C (en) | 2000-03-24 | 2006-05-30 | Contentguard Holdings, Inc. | System and method for protection of digital works |
US6795905B1 (en) | 2000-03-31 | 2004-09-21 | Intel Corporation | Controlling accesses to isolated memory using a memory controller for isolated execution |
US6507904B1 (en) | 2000-03-31 | 2003-01-14 | Intel Corporation | Executing isolated mode instructions in a secure system running in privilege rings |
US6990579B1 (en) | 2000-03-31 | 2006-01-24 | Intel Corporation | Platform and method for remote attestation of a platform |
US6760815B1 (en) * | 2000-06-02 | 2004-07-06 | Sun Microsystems, Inc. | Caching mechanism for a virtual heap |
JP2002041305A (ja) * | 2000-07-26 | 2002-02-08 | Hitachi Ltd | 仮想計算機システムにおける計算機資源の割当て方法および仮想計算機システム |
US20020062452A1 (en) | 2000-08-18 | 2002-05-23 | Warwick Ford | Countering credentials copying |
US7272831B2 (en) * | 2001-03-30 | 2007-09-18 | Intel Corporation | Method and apparatus for constructing host processor soft devices independent of the host processor operating system |
US8909555B2 (en) | 2001-04-24 | 2014-12-09 | Hewlett-Packard Development Company, L.P. | Information security system |
US7318141B2 (en) * | 2002-12-17 | 2008-01-08 | Intel Corporation | Methods and systems to control virtual machines |
-
2002
- 2002-12-17 US US10/322,003 patent/US7318141B2/en not_active Expired - Lifetime
-
2003
- 2003-10-21 TW TW092129103A patent/TWI273493B/zh not_active IP Right Cessation
- 2003-11-12 DE DE10393920T patent/DE10393920B4/de not_active Expired - Lifetime
- 2003-11-12 JP JP2004564979A patent/JP2006516769A/ja not_active Withdrawn
- 2003-11-12 AU AU2003290857A patent/AU2003290857A1/en not_active Abandoned
- 2003-11-12 WO PCT/US2003/036306 patent/WO2004061645A2/en active Application Filing
- 2003-11-12 KR KR1020057011054A patent/KR100847613B1/ko active IP Right Grant
- 2003-11-12 CN CNB2003801066275A patent/CN100504789C/zh not_active Expired - Fee Related
-
2008
- 2008-09-22 JP JP2008242682A patent/JP4981006B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
WO2004061645A3 (en) | 2006-03-30 |
US7318141B2 (en) | 2008-01-08 |
TW200416604A (en) | 2004-09-01 |
JP2009054169A (ja) | 2009-03-12 |
JP2006516769A (ja) | 2006-07-06 |
JP4981006B2 (ja) | 2012-07-18 |
CN1833225A (zh) | 2006-09-13 |
TWI273493B (en) | 2007-02-11 |
US20040117539A1 (en) | 2004-06-17 |
AU2003290857A1 (en) | 2004-07-29 |
KR20050085699A (ko) | 2005-08-29 |
WO2004061645A2 (en) | 2004-07-22 |
KR100847613B1 (ko) | 2008-07-21 |
DE10393920T5 (de) | 2005-12-29 |
DE10393920B4 (de) | 2009-02-19 |
AU2003290857A8 (en) | 2004-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100504789C (zh) | 控制虚拟机的方法 | |
JP5844434B2 (ja) | バーチャルマシーンシステムの物理的メモリのバーチャル化 | |
US8171491B2 (en) | Object synchronization in shared object space | |
Golm et al. | The JX Operating System. | |
US6075938A (en) | Virtual machine monitors for scalable multiprocessors | |
CN102541619B (zh) | 虚拟机管理装置和方法 | |
CN101271401B (zh) | 一种具备单一系统映像的服务器机群系统 | |
CN108932154B (zh) | 一种分布式虚拟机管理器 | |
US7856542B1 (en) | Paging cache optimization for virtual machine | |
US7558724B2 (en) | Operation region describing a virtual device | |
JPH10511202A (ja) | オブジェクト指向環境における回復可能プロキシ・オブジェクト | |
CN103034524A (zh) | 半虚拟化的虚拟gpu | |
CN101901207A (zh) | 异构共享存储多处理机系统的操作系统及其工作方法 | |
US11301142B2 (en) | Non-blocking flow control in multi-processing-entity systems | |
Cabillic et al. | Stardust: an environment for parallel programming on networks of heterogeneous workstations | |
Tevanian et al. | A UNIX Interface for Shared Memory and Memory Mapped Files Under Mach. | |
JP7445431B2 (ja) | 命令の実行を制御する装置および方法 | |
US20020087958A1 (en) | Method and apparatus of transforming a class | |
WO2021086839A1 (en) | Goal-directed software-defined numa working set management | |
Bindhammer et al. | Device driver programming in a transactional DSM operating system | |
Zhu et al. | GMEM: Generalized Memory Management for Peripheral Devices | |
Scalzi et al. | Enterprise Systems Architecture/370: An architecture for multiple virtual space access and authorization | |
Chapman | vNUMA: Virtual shared-memory multiprocessors | |
CN113704007A (zh) | 利用硬件特性的无服务器计算平台加速系统 | |
Clauß | Implementation of the L4 Version x. 2 ABI in the Fiasco Microkernel |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090624 Termination date: 20211112 |