CN101213518A - 通过指令组设陷来优化os上下文切换的系统和方法 - Google Patents
通过指令组设陷来优化os上下文切换的系统和方法 Download PDFInfo
- Publication number
- CN101213518A CN101213518A CNA2006800240723A CN200680024072A CN101213518A CN 101213518 A CN101213518 A CN 101213518A CN A2006800240723 A CNA2006800240723 A CN A2006800240723A CN 200680024072 A CN200680024072 A CN 200680024072A CN 101213518 A CN101213518 A CN 101213518A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- registers
- selected set
- incident
- virtual
- 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.)
- Granted
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
- 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
-
- 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
-
- 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
-
- 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/46—Multiprogramming arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Hardware Redundancy (AREA)
Abstract
在某些实施例中,本发明涉及在各虚拟机之间转换时保存有限的上下文信息。一组预先确定的指令和事件的集合引起一陷阱。一位或一标志被设置以指示该事件已在一虚拟机内出现。虚拟机监视器基于标记是否已被设置来判定是否需要在上下文切换时保存或恢复特定的寄存器集合。另外还描述并要求保护其他的实施例。
Description
发明领域
本发明的实施例一般地涉及计算设备,尤其涉及在各虚拟机之间转换时保存有限的上下文信息。
背景信息
在由操作系统控制的各进程间存在用于上下文切换的各种机制。类似地,在虚拟化环境中,上下文切换在通常是虚拟机监视器(VMM)/管理器的虚拟机(VM)调度器在活动和非活动虚拟机之间切换时是必需的。在虚拟化环境中,VMM在运行的各操作系统之中调度可用的处理器周期。各种操作系统(OS)在相应的客户虚拟机中运行。在调度一客户VM运行前,当前运行VM的上下文必须被保存以确保其再次被调度运行时可以适当地运行。
必须将各处理器寄存器保存为上下文切换的一部分。除了任何处理器专用的寄存器之外,还必须保存标准寄存器、栈指针、MMX、单指令多数据(SIMD)和浮点(FP)寄存器。当上下文从当前运行的VM中切换时,就在调度下一个被调度的VM之前执行上下文保存。用于下一个被调度VM的上下文寄存器在允许该VM再次运行之前被恢复。上下文切换在时间、功率和其他资源上的花费都是高昂的。
附图简述
本发明的特征和优点将从本发明随后的详细描述中变得显而易见,其中:
图1是在其上可以实践本发明的各实施例的一个示例性虚拟化平台的框图;
图2是根据本发明的各实施例的一个示例性进程流程的流程图;以及
图3是根据本发明的各实施例可以在其上执行虚拟机监视器(VMM)的一个示例性平台的框图.
详细描述
本发明的一个实施例是一种涉及在虚拟化环境中在各虚拟机(VM)之间切换时限制要保存的上下文的系统和方法。在至少一个实例中,本发明旨在仅保存实际上正由当前运行的VM使用的那一组寄存器集合,而不是保存所有可能的寄存器。
在本发明的说明书中对“一个实施例”或“实施例”的参考意指在本发明的至少一个实施例中包括了结合该实施例描述的特定特征、结构或性能。这样,贯穿说明书出现在各处的短语“在一个实施例中”等等未必全部指代同一实施例。
出于解释的目的,阐明了特定的构造和细节以便提供对本发明的透彻的理解。然而,本领域普通技术人员显而易见的是在没有在此呈现的特定细节的情况下也能实践本发明的各实施例。此外,公知的特征被省略或简化以免遮蔽本发明的主题。各个示例贯穿在本描述中给出。这些仅是本发明特定实施例的描述。本发明的范围不限于给出的各示例。
现有系统在挂起一VM并调度另一VM之前通常会保存有关前一VM的所有上下文。在许多情况下,挂起的VM并不会使用所有级别的寄存器。例如,该VM可能不执行浮点运算,所以在它被VMM重新开始时是无需有关浮点(FP)寄存器的上下文的。但现有系统在上下文切换之前还是会保存该FP寄存器。这项操作在非必需时是浪费的。
现在参考图1,示出的是在其上可以实践本发明各实施例的一个示例性虚拟化平台100。在平台硬件120上执行VMM 110和客户VM 101、103、105和107。平台硬件120可以包括处理器122、存储器124以及一个或多个I/O设备126和128。处理器122可以是能够执行软件的任何类型的处理器,诸如微处理器、数字信号处理器、微控制器等等。平台硬件120可以是个人计算机(PC)、大型机、手持式设备、便携式计算机、机顶盒或在任何其他计算系统。虽然图1仅示出了一个这种处理器122,但是在平台硬件120内可以有一个或多个处理器,并且这些处理器的一个或多个可以包括多线程、多核心等等。
存储器124可以是硬盘、软盘、随机存取存储器(RAM)、只读存储器(ROM)、闪存或在可由处理器122读取的任何其他类型的介质。存储器124可以存储用来执行本发明的各方法实施例的指令。
一个或多个I/O设备126和128可以是例如系统总线(例如,PCI、ISA、AGP)上的网络接口卡、通信端口、视频控制器、磁盘控制器,集成入芯片组逻辑或处理器的设备(例如,实时时钟、可编程定时器、性能计数器),或是平台硬件120上的任何其他设备。一个或多个I/O设备126和128可以通过I/O指令、存储器映射的I/O访问或在通过本领域内已知的任何其他方法而得以访问。
处理器122具有多个寄存器123。寄存器123的上下文通常会在处理器上下文切换期间被保存。
在本发明的实施例中,VMM会在一客户VM使用一组寄存器的集合时被通知,以指示该VMM需要在上下文切换期间保存使用过的寄存器的上下文。在一个示例中,流动的SIMD扩展(SSE)寄存器可由客户VM使用。某些指令利用一组寄存器的集合。例如存在已知的指令来执行SIMD乘法。如果客户VM进程执行该指令,则这些SIMD寄存器在该客户VM中使用。
在现有的虚拟化环境中,虚拟化陷阱(trap)会在某些情况下出现。这一陷阱会引起VMM从在一客户VM上的处理中退出(exit)。在某些环境中,该陷阱被称为VM_exit。本发明的实施例会在预先确定的指令在客户VM内执行时引起一陷阱或VM_exit出现。控制传送至VMM,从而做出该使用的记录。在一个实施例中,VMM清除该陷阱机制,以使得预先确定指令的后续使用不会在当前会话期间再引起额外的陷阱。于是,仅仅是预先确定指令的首次使用才会引起一陷阱。
现参考图2,示出的是根据本发明实施例的一个示例性进程流程。在201,标准寄存器在上下文切换期间被充分理解。换句话说,总是可以为该客户VM上下文保存一组寄存器的标准集合。在203,VMM设置一组预先确定的操作或指令集合来引起一陷阱,从而通知该VMM相应的寄存器正被使用。本领域普通技术人员显而易见的是可以使用各种方法来识别某些指令应该引起陷阱。
在运行在虚拟化环境内的某些实施例中,虚拟机控制结构(VMCS)可用于识别这些目标操作。VMCS是分配给每个VM的数据结构,用于分派给特定VM的每个存储器。在多处理器系统中,VMM可以选择将一处理器分派给特定的VM并且不将其分派给其他的VM。在其它实施例中,VMM可以允许所有的VM使用所有的处理器。VMCS含有多个控制字段来定义哪些事件引起VM_exit(陷阱)而哪些事件不引起陷阱。现有系统中的VMCS数据结构并不容纳用于设陷(trapping)指令的字段。
现有系统中的VMCS数据结构并不为访问特定寄存器集合的指令组容纳用于设陷机制的字段。通过向VMCS分配额外的位字段就可以实现对VMCS的设立,以容纳有关在此描述的事件的陷阱。额外的位字段将识别FP、MMX、SSE、SIMD指令等,来判定一客户VM内的进程是否以使用了一组特定的寄存器集合。
VMCS是可动态修改的。当一客户VM被调度运行时,可以按需设置VMCS的各字段,以便目标指令和事件可被识别。例如,VMCS可以具有与一组利用浮点寄存器的指令集合相对应的一位。在此场景中,设置该位并且随后在相应VM内FDIV指令的执行会引起一VM_exit或管理程序陷阱。一旦各陷阱被识别并设置,就在205进行常规的OS操作。
在一个示例性执行中,在207执行类似FDIV的FP指令。在209,控制被传送给VMM,以使其基于引发陷阱的这一操作来采取适当的动作。在此情况下,FDIV的使用与这一客户VM相关联,该VM执行此指令以指示必须为其保存FP寄存器的上下文。一旦VMM已识别出该客户VM需要待保存的FP寄存器的上下文,就在211停用该陷阱,以使得每个后续FP指令都不会在当前会话中引起陷阱。
在某些实施例中,可以保持对陷阱停用,直至客户VM退出或关机。于是,进入/退出该客户VM的每次上下文切换就都会要求(在此示例中)保存或恢复FP寄存器。然而,某些客户VM可能只是偶尔使用一组寄存器的集合。在此情况下,更为有效的是在每次上下文切换时重置该陷阱。在某些实施例中,可以在装入或重新开始一客户VM时重新启用该陷阱。VMM那时也会“忘记”该客户VM在先前会话中使用了该寄存器集合。如果该客户VM在这一活动会话期间不使用一组特定的寄存器集合,则VMM就不会将该寄存器集合识别为要求上下文保存。这样就得以将上下文保存/重新开始降至最低。
在一个实施例中,可以在VMCS内识别目标事件。然而,当该事件出现时,可以在该VMCS中设置或清除一位,以指示这一事件已出现而无需要求VM_exit的完全陷阱。随后可以在上下文切换开始时检查这一位以判定是否必须保存/恢复一组寄存器的集合。处理器硬件可以被配置成在该事件出现时自动设置该位。这通常要求该指令设置体系结构被配置为在特定指令上设陷。其它实施例可以以软件、固件或在硬件、固件和软件的结合来设置该位。本发明的某些实施例还可通过进一步扩展VT-x(虚拟化技术扩展)体系结构来实现。有关VT-x的更多信息可在“IntelVirtualization Technology Specification for the IA-32 IntelArchitecture”(文档号C97063-002,2005年4月)中找到,并且可以在URL高速缓存www*intel*com/cd/00/00/19/76/197666 197666.pdf处的公共因特网上找出(注意,已用星号代替该文档中所含URL内的小数点,以避免出于疏忽的超链接)。
在另一实施例中,VMM知晓是否有多于一个客户VM使用一组特定的寄存器集合。例如,在该虚拟化环境中可以运行了5个客户VM,但是只有一个在使用FP运算。在此情况下,仅有一个客户VM存取FP寄存器,所以无需保存或恢复FP寄存器的上下文。除了留意一特定客户VM是否使用该寄存器集合之外,VMM还需留意该寄存器集合是否处于被第二客户VM修改的危险中,如果不是,则无需在上下文切换期间保持/恢复该寄存器集合。在第二客户OS存取该寄存器集合时,VMM就会为了使用该寄存器集合的两个客户VM而在上下文切换时存储/恢复该寄存器集合。
在另一个实施例中,在一客户VM上运行的操作系统可以与VMM合作。该客户VM可以知晓它的进程,以便了解哪些进程使用了哪些寄存器集合。例如,如果OS知道仅有一个执行中的进程在使用SIMD指令,则在该进程退出时,就不再需要在该客户VM的上下文切换时保存/恢复SIMD寄存器。在此实施例中,OS可以在先前已引起一陷阱的进程退出时通知该VMM,并且该VMM随后重置该陷阱控制结构以指示该客户VM不使用该特定寄存器集合。
现参考图3,示出的是根据本发明各实施例,在其上可以执行在前描述的VMM的一个示例性平台300。处理器310经由前端总线301与也被称为北桥的存储器控制器集线器(MCH)314通信。MCH 314经由存储器总线303与系统存储器312通信。MCH 314还经由图形总线305与先进图形端口(AGP)316通信。MCH 314经由外围元件互连(PCI)总线307与也被称为南桥的I/O控制器集线器(ICH)320通信。ICH 320可耦合至诸如PCI硬盘驱动(未示出)之类的一个或多个组件以及诸如IDE 322、USB 324、LAN 326和音频328之类的传统组件,并经由低引脚数(LPC)总线356耦合至超I/O(SIO)控制器356。
处理器310可以是能够执行软件的任何类型的处理器,诸如微处理器、数字信号处理器、微控制器等等。虽然图1仅示出了一个这种处理器310,但是在平台硬件300内可以有一个或多个处理器,并且这些处理器中的一个或多个可以包括多线程、多核心等等。
存储器312可以是硬盘、软盘、随机存取存储器(RAM)、只读存储器(ROM)、闪存或在可由处理器310读取的任何其他类型的介质。存储器312可以存储用来执行本发明各方法实施例的指令。
诸如闪存352之类的非易失性存储器可以经由低引脚数(LPC)总线309耦合至IO控制器。BIOS固件354通常驻留在闪存352内,并且启动将执行来自该闪存或固件的指令。
在某些实施例中,平台300是使能服务器管理任务的服务器。该平台实施例可以具有经由LPC 309耦合至ICH 320的基板管理控制器(BMC)350。
在此描述的技术不受任何硬件或软件配置的限制;它们可以在任何计算、消费电子设备或处理环境中找到其适用性。这些技术可以被实现为硬件、软件或两者的结合。这些技术可以被实现为在诸如移动或固定计算机、个人数字助理、机顶盒、蜂窝电话和寻呼机、消费电子设备(包括DVD播放器、个人视频记录器、个人视频播放器、卫星接收器、立体声接收器、有线电视接收器)之类的可编程机器上,以及在包括处理器、可由处理器访问的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及一个或多个输出设备的其他电子设备上执行的程序。程序代码可应用于使用输入设备输入的数据,用以执行在此描述的功能并生成输出信息。输出信息可被应用于一个或多个输出设备。本领域普通技术人员可以认识到本发明可以用各种系统配置来实践,这些系统包括多处理器系统、微型计算机、大型计算机、独立消费电子设备等等。本发明还可以在分布式计算环境中实践,在该环境中任务或其部分可由经通信网络链接的远程处理设备来执行。
每个程序都能够以高级程序化的或面向对象的编程语言来实现,以便与处理系统通信。然而,程序也可以在需要时用汇编或机器语言实现。在任一情况下,该语言都可被编译或解释。
程序指令可用于引起用这些指令编程的通用处理系统或专用处理系统执行在此描述的操作。代替地,这些操作可由含有用于执行各操作的硬连线逻辑的专用硬件组件,或由编程的计算机组件和定制硬件组件的任何组合来执行。在此描述的各方法可被提供为计算机程序产品,这些产品可以包括其上存储有指令的机器可访问介质,而这些指令则用于编程处理系统或其他电子设备来执行上述各方法。在此使用的术语“机器可访问介质”应该包括能够存储或编码供机器执行并能使得该机器执行在此描述的任一方法的指令序列的任何介质。术语“机器可访问介质”因此应该包括但不限于固态存储器、光盘和磁盘、编码数据信号的载波。此外,本领域中常以一种或其他形式提及软件(例如,程序、规程、进程、应用程序、模块、逻辑等)用以采取一行动或引发一结果。这些表达仅仅是陈述由处理系统执行的以引起处理器执行一行动来产生一结果的软件的一种简要方式。
虽然已经参考示出的各实施例对本发明进行了描述,但是这一描述并不旨在解释为一个限制的含义。示出实施例以及本发明其他各实施例的各种修改对本发明所属的领域中的普通技术人员是显而易见的,并认为位于本发明的精神和范围在内。
Claims (30)
1.一种虚拟化平台,包括:
具有多组寄存器集合的处理器;
在所述处理器上运行的多个虚拟机(VM),每个VM均在一客户操作系统中运行;
响应于在运行中的VM内出现的预先确定的事件而从所述运行的VM中退出的陷阱机制,所述陷阱机制设置一相应的标志以指示在所述VM内已出现所述预先确定的事件;以及
用于在所述多个虚拟机之间调度和切换上下文的虚拟机监视器(VMM),其中所述VMM判定所述多组寄存器集合中的哪些在所述多个VM之间的上下文切换时要被保存和恢复,所述判定基于由所述陷阱机制设置的所述相应的标志。
2.如权利要求1所述的虚拟化平台,其特征在于,所述陷阱机制包括虚拟化退出体系结构,所述体系结构具有虚拟机控制结构(VMCS)数据结构用以识别引起陷阱的多个事件。
3.如权利要求1所述的虚拟化平台,其特征在于,所述相应的标志包括在虚拟机控制结构(VMCS)数据结构内的一位,并且所述多个虚拟机的每一个都具有至少一个相应的VMCS。
4.如权利要求1所述的虚拟化平台,其特征在于,响应于预先确定的事件,重置所述相应的标志。
5.如权利要求1所述的虚拟化平台,其特征在于,响应于先前在虚拟机内出现的被选事件,为在所述虚拟机内的被选事件禁用所述陷阱机制。
6.如权利要求5所述的虚拟化平台,其特征在于,当虚拟机被重新开始时,为所述虚拟机重新使用被停用的陷阱机制。
7.如权利要求1所述的虚拟化平台,其特征在于,当所述多个虚拟机中的一个以上的虚拟机具有由所述陷阱机制为被选寄存器集合设置的相应的标记的情况下,所述VMM要在上下文切换时为所述被选寄存器集合保存并恢复上下文,并且其中在所述多个虚拟机中的一个或更少的虚拟机具有由所述陷阱机制为被选寄存器集合设置的相应的标记的情况下,所述VMM则制止在上下文切换时为所述被选寄存器集合保存并恢复上下文。
8.如权利要求1所述的虚拟化平台,其特征在于,在所述多个虚拟机之一上运行的操作系统(OS)在被选寄存器集合不再由在所述OS下运行的各进程访问时通知所述VMM。
9.一种方法,包括:
识别何时虚拟化平台内的第一虚拟机使用在所述虚拟化平台上一处理器内的被选寄存器集合;以及
当所述寄存器集合由虚拟机监视器(VMM)识别为正被所述第一虚拟机使用时,为所述第一虚拟机保存所述被选寄存器集合的上下文,所述保存在将处理器的上下文从所述第一虚拟机切换到第二虚拟机之前发生。
10.如权利要求9所述的方法,其特征在于,还包括:
当所述寄存器集合由虚拟机监视器(VMM)识别为正被所述第一虚拟机使用时,为所述第一虚拟机恢复所述被选寄存器集合的上下文,所述恢复在将处理器的上下文从所述第二虚拟机切换到第一虚拟机之前发生。
11.如权利要求9所述的方法,其特征在于,所述识别包括:
响应于预先确定的指令的执行,判定所述预先确定的指令是否相应于所述被选寄存器集合而在虚拟机控制结构(VMCS)内被定义。
12.如权利要求9所述的方法,其特征在于,所述识别包括:
在第一虚拟机中设陷一事件,其中所述事件指示对所述被选寄存器集合的使用;以及
设置一标志以指示所述被选寄存器集合被所述第一虚拟机使用。
13.如权利要求12所述的方法,其特征在于,还包括判定所述标志是否为相应的被选寄存器集合所设置。
14.如权利要求12所述的方法,其特征在于,所述设陷包括:
基于在虚拟机控制结构(VMCS)内相应于所述事件的数据,识别在第一虚拟机中的所述事件是否要被设陷;以及
当所述VMCS指示所述事件应该被设陷时,在第一虚拟机内设陷所述事件,并且在所述VMCS指示所述事件不应被设陷时,制止设陷所述事件。
15.如权利要求12所述的方法,其特征在于,还包括:
当所述被选事件已在先前被识别为正被所述第一虚拟机使用时,制止设陷所述事件。
16.如权利要求9所述的方法,其特征在于,还包括:
判定所述第一虚拟机是否使用被选寄存器集合;
判定是否有任何其他的虚拟机使用所述被选寄存器集合;以及
当所述被选寄存器集合没有被任何其他虚拟机使用时,制止为所述第一虚拟机保存所述被选寄存器集合的上下文。
17.如权利要求9所述的方法,其特征在于,还包括:
通知所述VMM所述第一VM不再使用所述被选寄存器集合。
18.一种具有指令的计算机可读介质,当所述指令被执行时会使得所述机器:
识别何时虚拟化平台内的第一虚拟机使用在所述虚拟化平台上一处理器内的被选寄存器集合;以及
当所述寄存器集合由虚拟机监视器(VMM)识别为正被所述第一虚拟机使用时,为所述第一虚拟机保存所述被选寄存器集合的上下文,所述保存在将处理器的上下文从所述第一虚拟机切换到第二虚拟机之前发生。
19.如权利要求18所述的介质,其特征在于,还包括指令用以使得所述机器:
当所述寄存器集合由虚拟机监视器(VMM)识别为正被所述第一虚拟机使用时,为所述第一虚拟机恢复所述被选寄存器集合的上下文,所述恢复在将处理器的上下文从第二虚拟机切换到第一虚拟机之前发生。
20.如权利要求18所述的介质,其特征在于,所述识别包括指令用以:
响应于预先确定的指令的执行,判定所述预先确定的指令是否相应于所述被选寄存器集合而在虚拟机控制结构(VMCS)内被定义。
21.如权利要求18所述的介质,其特征在于,所述识别包括指令用以:
在第一虚拟机中设陷一事件,其中所述事件指示对所述被选寄存器集合的使用;以及
设置一标志以指示所述被选寄存器集合被所述第一虚拟机使用。
22.如权利要求21所述的介质,其特征在于,还包括用以判定所述标志是否为相应的被选寄存器集合所设置的指令。
23.如权利要求21所述的介质,其特征在于,所述设陷包括指令用以:
基于在虚拟机控制结构(VMCS)内相应于所述事件的数据,识别在第一虚拟机中的所述事件是否要被设陷;以及
当所述VMCS指示所述事件应该被设陷时,在第一虚拟机内设陷所述事件,并且在所述VMCS指示所述事件不应被设陷时,制止设陷所述事件。
24.如权利要求21所述的介质,其特征在于,还包括指令用以:
当所述被选事件已在先前被识别为正被所述第一虚拟机使用时,制止设陷所述事件。
25.如权利要求18所述的介质,其特征在于,还包括指令用以:
判定第一虚拟机是否使用被选寄存器集合;
判定是否有任何其他的虚拟机使用所述被选寄存器集合;以及
当所述被选寄存器集合没有被任何其他虚拟机使用时,制止所述为所述第一虚拟机保存所述被选寄存器集合的上下文。
26.如权利要求18所述的方法,其特征在于,还包括指令用以:
通知所述VMM所述第一VM不再使用所述被选寄存器集合。
27.一种方法,包括:
响应于与被选寄存器集合相对应的指令在虚拟机内的执行,引起从所述执行中的虚拟机到虚拟机监视器的陷阱;以及
设置与所述被选寄存器集合相对应的标志,所述标志指示所述虚拟机使用所述被选寄存器集合。
28.如权利要求27所述的方法,其特征在于,还包括:
在设置所述标志之后为所述被选寄存器集合禁用对所述虚拟机的所述设陷。
29.如权利要求27所述的方法,其特征在于,所述标志包括在虚拟机控制结构(VMCS)内相应于所述虚拟机和一处理器的至少一位。
30.如权利要求29所述的方法,其特征在于,还包括:
响应于对各虚拟机之间的处理器上下文切换的请求,在所述相应的标志被设置时保存所述被选寄存器集合的上下文。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/174,254 US7904903B2 (en) | 2005-06-30 | 2005-06-30 | Selective register save and restore upon context switch using trap |
US11/174,254 | 2005-07-01 | ||
PCT/US2006/025960 WO2007005819A1 (en) | 2005-06-30 | 2006-06-29 | System and method to optimize os context switching by instruction group trapping |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101213518A true CN101213518A (zh) | 2008-07-02 |
CN101213518B CN101213518B (zh) | 2012-10-10 |
Family
ID=37075628
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800240723A Expired - Fee Related CN101213518B (zh) | 2005-06-30 | 2006-06-29 | 通过指令组设陷来优化os上下文切换的系统和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7904903B2 (zh) |
EP (1) | EP1899810B1 (zh) |
JP (2) | JP2008545205A (zh) |
KR (1) | KR100974108B1 (zh) |
CN (1) | CN101213518B (zh) |
WO (1) | WO2007005819A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101960425A (zh) * | 2008-02-29 | 2011-01-26 | 国际商业机器公司 | 用于事件处理的虚拟机和编程语言 |
CN102207886A (zh) * | 2010-03-31 | 2011-10-05 | 微软公司 | 虚拟机快速仿真辅助 |
US9052971B2 (en) | 2012-07-12 | 2015-06-09 | International Business Machines Corporation | Scalable event-driven system |
CN104937550A (zh) * | 2013-01-15 | 2015-09-23 | 英派尔科技开发有限公司 | 以函数为目标的虚拟机切换 |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7904903B2 (en) | 2005-06-30 | 2011-03-08 | Intel Corporation | Selective register save and restore upon context switch using trap |
US20080052776A1 (en) * | 2006-08-25 | 2008-02-28 | Nomadrive, Inc. | Method and apparatus of an unintrusive plug and play application virtualization platform |
US8296775B2 (en) * | 2007-01-31 | 2012-10-23 | Microsoft Corporation | Efficient context switching of virtual processors by managing physical register states in a virtualized environment |
US7941657B2 (en) * | 2007-03-30 | 2011-05-10 | Lenovo (Singapore) Pte. Ltd | Multi-mode mobile computer with hypervisor affording diskless and local disk operating environments |
JP4864817B2 (ja) * | 2007-06-22 | 2012-02-01 | 株式会社日立製作所 | 仮想化プログラム及び仮想計算機システム |
US8261284B2 (en) * | 2007-09-13 | 2012-09-04 | Microsoft Corporation | Fast context switching using virtual cpus |
JP4530182B2 (ja) | 2008-02-27 | 2010-08-25 | 日本電気株式会社 | プロセッサ、メモリ装置、処理装置及び命令の処理方法 |
US8365149B2 (en) * | 2008-02-29 | 2013-01-29 | International Business Machines Corporation | Debugger for a declarative event-driven programming model |
US8397216B2 (en) * | 2008-02-29 | 2013-03-12 | International Business Machines Corporation | Compiler for a declarative event-driven programming model |
JP5405320B2 (ja) * | 2008-04-28 | 2014-02-05 | パナソニック株式会社 | 仮想計算機制御装置、仮想計算機制御方法及び仮想計算機制御プログラム |
US9417914B2 (en) * | 2008-06-02 | 2016-08-16 | Microsoft Technology Licensing, Llc | Regaining control of a processing resource that executes an external execution context |
JP5405799B2 (ja) * | 2008-10-30 | 2014-02-05 | 株式会社日立製作所 | 仮想計算機の制御方法、仮想化プログラム及び仮想計算機システム |
US8429648B2 (en) * | 2009-05-28 | 2013-04-23 | Red Hat, Inc. | Method and apparatus to service a software generated trap received by a virtual machine monitor |
US8813069B2 (en) * | 2009-05-29 | 2014-08-19 | Red Hat, Inc. | Migration of functionalities across systems |
KR101651202B1 (ko) * | 2009-12-21 | 2016-08-26 | 삼성전자주식회사 | 가상화 장치 및 가상화 장치의 동작 방법 |
WO2012086106A1 (ja) * | 2010-12-21 | 2012-06-28 | パナソニック株式会社 | 仮想計算機システム及び仮想計算機システム制御方法 |
KR101433644B1 (ko) * | 2011-11-09 | 2014-08-27 | 상명대학교서울산학협력단 | Arm 기반 운영체제의 가상화를 위한 정책 제공 시스템 및 방법 |
JP5369356B2 (ja) * | 2011-11-09 | 2013-12-18 | 株式会社日立製作所 | 仮想化プログラム |
US9164789B2 (en) * | 2012-02-29 | 2015-10-20 | Red Hat Israel, Ltd. | Multiple queue management and adaptive CPU matching in a virtual computing system |
US9594703B2 (en) * | 2012-03-29 | 2017-03-14 | Intel Corporation | Architecture and method for managing interrupts in a virtualized environment |
WO2014081608A1 (en) * | 2012-11-20 | 2014-05-30 | Unisys Corporation | Optimized execution of virtualized software using securely partitioned virtualization system with dedicated resources |
US10572665B2 (en) | 2012-12-28 | 2020-02-25 | Fireeye, Inc. | System and method to create a number of breakpoints in a virtual machine via virtual machine trapping events |
JP5608797B2 (ja) * | 2013-07-31 | 2014-10-15 | 株式会社日立製作所 | 仮想化プログラム、仮想計算機システム及び計算機システム制御方法 |
KR102033009B1 (ko) * | 2013-09-13 | 2019-10-16 | 한국전자통신연구원 | 가상 물리 시스템 및 그의 가상 머신 모니터링 방법 |
JP5584811B2 (ja) * | 2013-10-30 | 2014-09-03 | 株式会社日立製作所 | 仮想計算機の制御方法、仮想化プログラム及び仮想計算機システム |
US11249777B2 (en) * | 2014-07-10 | 2022-02-15 | Red Hat Israel, Ltd. | Virtual machine context management |
US9946566B2 (en) | 2015-09-28 | 2018-04-17 | Intel Corporation | Method and apparatus for light-weight virtualization contexts |
KR101690949B1 (ko) | 2016-03-11 | 2016-12-29 | 국방과학연구소 | 가상화 환경에서의 가상머신 게스트 os 자원 정보 수집 장치 및 방법 |
US20180299269A1 (en) * | 2016-07-27 | 2018-10-18 | Lumedyne Technologies Incorporated | Multi-axis, single-drive inertial device |
US10248595B2 (en) * | 2017-08-10 | 2019-04-02 | Infineon Technologies Ag | Virtual machine monitor interrupt support for computer processing unit (CPU) |
US10394595B2 (en) * | 2017-08-23 | 2019-08-27 | Intel Corporation | Method to manage guest address space trusted by virtual machine monitor |
US10592164B2 (en) | 2017-11-14 | 2020-03-17 | International Business Machines Corporation | Portions of configuration state registers in-memory |
US10496437B2 (en) * | 2017-11-14 | 2019-12-03 | International Business Machines Corporation | Context switch by changing memory pointers |
US20220404786A1 (en) * | 2021-06-16 | 2022-12-22 | Fisher-Rosemount Systems, Inc. | Systems and Methods for Dynamically Maintained Redundancy and Load Balancing in Software Defined Control Systems for Industrial Process Plants |
US20230088998A1 (en) * | 2021-09-17 | 2023-03-23 | Samsung Electronics Co., Ltd. | System on chip, controller and vehicle |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4787031A (en) * | 1985-01-04 | 1988-11-22 | Digital Equipment Corporation | Computer with virtual machine mode and multiple protection rings |
JPS61183742A (ja) * | 1985-02-08 | 1986-08-16 | Hitachi Ltd | フロ−テイング演算プロセツサのプログラム実行制御装置 |
JPH0754470B2 (ja) | 1986-03-24 | 1995-06-07 | 株式会社日立製作所 | 仮想計算機システムの制御方法 |
JPH0373027A (ja) | 1989-08-14 | 1991-03-28 | Fujitsu Ltd | ベクトルレジスタ退避復元方式 |
JPH03292527A (ja) * | 1990-04-11 | 1991-12-24 | Fujitsu Ltd | 演算装置 |
JP2902746B2 (ja) * | 1990-07-27 | 1999-06-07 | 富士通株式会社 | 仮想計算機制御方式 |
JPH056281A (ja) | 1990-10-04 | 1993-01-14 | Nec Corp | 情報処理装置 |
JPH06242973A (ja) * | 1993-02-16 | 1994-09-02 | Fujitsu Ltd | 仮想計算機システムにおけるvmへのvpマシンチェックの通知方法 |
US5481719A (en) * | 1994-09-09 | 1996-01-02 | International Business Machines Corporation | Exception handling method and apparatus for a microkernel data processing system |
US7275246B1 (en) * | 1999-01-28 | 2007-09-25 | Ati International Srl | Executing programs for a first computer architecture on a computer of a second architecture |
US6961941B1 (en) * | 2001-06-08 | 2005-11-01 | Vmware, Inc. | Computer configuration for resource management in systems including a virtual machine |
US7191440B2 (en) * | 2001-08-15 | 2007-03-13 | Intel Corporation | Tracking operating system process and thread execution and virtual machine execution in hardware or in a virtual machine monitor |
US7127548B2 (en) * | 2002-04-16 | 2006-10-24 | Intel Corporation | Control register access virtualization performance improvement in the virtual-machine architecture |
US7484208B1 (en) * | 2002-12-12 | 2009-01-27 | Michael Nelson | Virtual machine migration |
US7793286B2 (en) * | 2002-12-19 | 2010-09-07 | Intel Corporation | Methods and systems to manage machine state in virtual machine operations |
US7415708B2 (en) * | 2003-06-26 | 2008-08-19 | Intel Corporation | Virtual machine management using processor state information |
US7552426B2 (en) * | 2003-10-14 | 2009-06-23 | Microsoft Corporation | Systems and methods for using synthetic instructions in a virtual machine |
US20050132364A1 (en) | 2003-12-16 | 2005-06-16 | Vijay Tewari | Method, apparatus and system for optimizing context switching between virtual machines |
US7478388B1 (en) * | 2004-04-21 | 2009-01-13 | Vmware, Inc. | Switching between multiple software entities using different operating modes of a processor in a computer system |
US7500244B2 (en) * | 2004-06-30 | 2009-03-03 | Intel Corporation | Adaptive algorithm for selecting a virtualization algorithm in virtual machine environments |
US20060070065A1 (en) * | 2004-09-29 | 2006-03-30 | Zimmer Vincent J | Memory support for heterogeneous virtual machine guests |
US20060149940A1 (en) * | 2004-12-27 | 2006-07-06 | Intel Corporation | Implementation to save and restore processor registers on a context switch |
US7904903B2 (en) | 2005-06-30 | 2011-03-08 | Intel Corporation | Selective register save and restore upon context switch using trap |
-
2005
- 2005-06-30 US US11/174,254 patent/US7904903B2/en not_active Expired - Fee Related
-
2006
- 2006-06-29 KR KR1020077030428A patent/KR100974108B1/ko not_active IP Right Cessation
- 2006-06-29 CN CN2006800240723A patent/CN101213518B/zh not_active Expired - Fee Related
- 2006-06-29 EP EP06786212.8A patent/EP1899810B1/en not_active Not-in-force
- 2006-06-29 JP JP2008519684A patent/JP2008545205A/ja active Pending
- 2006-06-29 WO PCT/US2006/025960 patent/WO2007005819A1/en active Application Filing
-
2012
- 2012-01-27 JP JP2012015079A patent/JP5562988B2/ja not_active Expired - Fee Related
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101960425A (zh) * | 2008-02-29 | 2011-01-26 | 国际商业机器公司 | 用于事件处理的虚拟机和编程语言 |
US8627299B2 (en) | 2008-02-29 | 2014-01-07 | International Business Machines Corporation | Virtual machine and programming language for event processing |
US8677333B2 (en) | 2008-02-29 | 2014-03-18 | International Business Machines Corporation | Virtual machine and programming language for event processing |
CN101960425B (zh) * | 2008-02-29 | 2014-04-16 | 国际商业机器公司 | 用于事件处理的虚拟机和编程语言 |
CN102207886A (zh) * | 2010-03-31 | 2011-10-05 | 微软公司 | 虚拟机快速仿真辅助 |
CN102207886B (zh) * | 2010-03-31 | 2016-02-17 | 微软技术许可有限责任公司 | 虚拟机快速仿真辅助 |
US9052971B2 (en) | 2012-07-12 | 2015-06-09 | International Business Machines Corporation | Scalable event-driven system |
CN104937550A (zh) * | 2013-01-15 | 2015-09-23 | 英派尔科技开发有限公司 | 以函数为目标的虚拟机切换 |
Also Published As
Publication number | Publication date |
---|---|
EP1899810A1 (en) | 2008-03-19 |
KR20080020639A (ko) | 2008-03-05 |
JP2012079357A (ja) | 2012-04-19 |
US20070006228A1 (en) | 2007-01-04 |
US7904903B2 (en) | 2011-03-08 |
KR100974108B1 (ko) | 2010-08-04 |
EP1899810B1 (en) | 2018-01-10 |
JP5562988B2 (ja) | 2014-07-30 |
WO2007005819A1 (en) | 2007-01-11 |
CN101213518B (zh) | 2012-10-10 |
JP2008545205A (ja) | 2008-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101213518B (zh) | 通过指令组设陷来优化os上下文切换的系统和方法 | |
CN101449240B (zh) | 在运行中的操作系统下启动系统管理程序 | |
US8572159B2 (en) | Managing device models in a virtual machine cluster environment | |
CN101405712B (zh) | 利用虚拟化技术来加速域特定运行时环境的框架 | |
US8429669B2 (en) | Virtual machine switching control by prefetching information out of and updating a set of processor control information based on a bitmap having update status | |
US7870443B2 (en) | Method to isolate crash of an embedded multi-threaded application to a shared library call without core dump files or debugger | |
CN110737895A (zh) | 使用静态和动态恶意软件分析来扩展恶意软件的动态检测 | |
EP1612669A2 (en) | Support for transitioning to a virtual machine monitor based upon the privilege level of guest software | |
US9563439B2 (en) | Caching unified extensible firmware interface (UEFI) and/or other firmware instructions in a non-volatile memory of an information handling system (IHS) | |
CN102609296A (zh) | 虚拟机分支和并行执行 | |
US10248424B2 (en) | Control flow integrity | |
US10055234B1 (en) | Switching CPU execution path during firmware execution using a system management mode | |
CN102609324B (zh) | 一种虚拟机死锁后的恢复方法、装置及系统 | |
US11726852B2 (en) | Hardware-assisted paravirtualized hardware watchdog | |
US7370181B2 (en) | Single stepping a virtual machine guest using a reorder buffer | |
US12073229B2 (en) | Single node deployment of container platform | |
CN111158863B (zh) | 中断控制器的处理方法、装置及电子设备 | |
US20170123800A1 (en) | Selective resource activation based on privilege level | |
CN110795231A (zh) | 一种虚拟cpu的处理方法及装置 | |
US20150331816A1 (en) | Computer apparatus and control method of computer apparatus | |
US20240020103A1 (en) | Parallelizing data processing unit provisioning | |
US20230350755A1 (en) | Coordinated operating system rollback | |
US11803445B2 (en) | Boot failure protection on smartNICs and other computing devices | |
CN114610492A (zh) | 乱序执行资源的回收方法、装置、电子设备和存储介质 | |
CN118035030A (zh) | 一种基于Uboot的操作系统故障监控方法 |
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 |
Granted publication date: 20121010 Termination date: 20180629 |
|
CF01 | Termination of patent right due to non-payment of annual fee |