CN100504789C - 控制虚拟机的方法 - Google Patents

控制虚拟机的方法 Download PDF

Info

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
Application number
CNB2003801066275A
Other languages
English (en)
Other versions
CN1833225A (zh
Inventor
G·奈格尔
E·科塔-罗布尔斯
S·耶亚辛
A·卡吉
M·科祖赫
R·乌利希
E·博利恩
S·罗杰斯
L·史密斯三世
S·贝内特
A·格卢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1833225A publication Critical patent/CN1833225A/zh
Application granted granted Critical
Publication of CN100504789C publication Critical patent/CN100504789C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring 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所述的方法,还包括:在向处理器提供指向存储器区域的指针之前,分配所述存储器区域。
CNB2003801066275A 2002-12-17 2003-11-12 控制虚拟机的方法 Expired - Fee Related CN100504789C (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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