KR100974108B1 - 가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템, 방법 및 머신 판독 가능한 매체 - Google Patents

가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템, 방법 및 머신 판독 가능한 매체 Download PDF

Info

Publication number
KR100974108B1
KR100974108B1 KR1020077030428A KR20077030428A KR100974108B1 KR 100974108 B1 KR100974108 B1 KR 100974108B1 KR 1020077030428 A KR1020077030428 A KR 1020077030428A KR 20077030428 A KR20077030428 A KR 20077030428A KR 100974108 B1 KR100974108 B1 KR 100974108B1
Authority
KR
South Korea
Prior art keywords
virtual machine
event
register set
selected register
instructions
Prior art date
Application number
KR1020077030428A
Other languages
English (en)
Other versions
KR20080020639A (ko
Inventor
스티븐 엘 그로브만
마이클 디 키니
Original Assignee
인텔 코포레이션
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 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20080020639A publication Critical patent/KR20080020639A/ko
Application granted granted Critical
Publication of KR100974108B1 publication Critical patent/KR100974108B1/ko

Links

Images

Classifications

    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • 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
    • 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/46Multiprogramming 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)
  • Hardware Redundancy (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

몇몇 실시예에서, 본 발명은 가상 머신 간에 천이하는 경우 한정된 콘텍스트 정보를 저장하는 것을 수반한다. 사전 결정된 인스트럭션 및 이벤트 세트가 트랩을 야기한다. 가상 머신 내에서 이벤트가 발생하였을 나타내는 비트 또는 플래그가 설정된다. 가상 머신 모니터는 플래그가 설정되었는지 여부에 근거하여, 콘텍스트 스위칭 시에 특정의 레지스터 세트가 저장되거나 혹은 복원되어야 하는지 여부를 판정한다. 다른 실시예가 기술되고 청구되어 있다.

Description

가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템, 방법 및 머신 판독 가능한 매체{SYSTEM AND METHOD TO OPTIMIZE OS CONTEXT SWITCHING BY INSTRUCTION GROUP TRAPPING}
본 발명의 실시예는 전반적으로 컴퓨팅 디바이스에 관한 것으로서, 보다 구체적으로, 가상 머신 간에 천이하는 경우에 한정된 콘텍스트 정보를 저장하는 것에 관한 것이다.
운영 체제(operating system : OS)에 의해 제어되는 프로세스 간에 콘텍스트 스위칭을 위한 각종 메커니즘이 존재한다. 마찬가지로, 가상화 환경에서, 가상 머신(virtual machine : VM) 스케줄러, 전형적으로, 가상 머신 모니터/매니저(virtual machine monitor/manager : VMM)가 활성 및 비활성 가상 머신 사이에 스위칭하는 경우 콘텍스트 스위칭이 필요하다. 가상화 환경에서, VMM은 실행되는 운영 체제 간에 이용 가능한 프로세서 사이클을 스케줄링한다. 각종 운영 체제(OS)는 대응하는 게스트 가상 머신에서 실행된다. 게스트(guest) VM을 실행하도록 스케줄링하기 이전에, 현재 실행 중인 VM의 콘텍스트는 그것이 재차 실행하도록 스케줄링되는 경우에 적절하게 실행될 것을 보장하기 위해 저장되어야 한다.
콘텍스트 스위칭의 일부로서 각종 프로세서 레지스터가 저장되어야 한다. 즉, 임의의 프로세서 특정의 레지스터 이외에, 표준 레지스터, 스택 포인터, MMX, SIMD(single instruction multiple data), 부동점(floating point : FP) 레지스터가 저장되어야 한다. 현재 실행 중인 VM으로부터 콘텍스트가 스위칭되는 경우, 다음에 스케줄링되는 VM이 스케줄링되기 이전에 콘텍스트 저장이 수행된다. 다음에 스케줄링되는 VM에 대한 콘텍스트 레지스터는 VM이 재차 실행되도록 하기 이전에 복원된다. 콘텍스트 스위칭은 시간, 전력 및 다른 리소스의 관점에서 고가일 수 있다.
본 발명의 특징 및 장점은 본 발명의 후술하는 상세한 설명으로부터 명백해질 것이다.
도 1은 본 발명의 실시예를 실시할 수 있는 예시적인 가상화 플랫폼의 블록도이고,
도 2는 본 발명의 실시예에 따른 예시적인 프로세스 흐름의 흐름도이며,
도 3은 본 발명의 실시예에 따라 가상 머신 모니터(VMM)가 실행될 수 있는 예시적인 플랫폼의 블록도이다.
본 발명의 실시예는 가상화 환경에서 가상 머신(VM) 간에 스위칭하는 경우 저장될 콘텍스트를 한정하는 것에 관한 시스템 및 방법이다. 적어도 하나의 실시예에서, 본 발명은 모든 가능한 레지스터를 저장하는 대신에, 현재 실행 중인 VM에 의해 실질적으로 사용되는 레지스터 세트만을 저장하도록 의도된다.
본 명세서에서 본 발명의 "일 실시예" 또는 "실시예"란 용어는 실시예와 결합하여 기술된 특정의 특성, 구조 또는 특징은 본 발명의 적어도 하나의 실시예에 포함되어 있음을 의미한다. 따라서, 본 명세서 전반에 걸쳐 각종 부분에서 나타나는 "일 실시예에서"란 어구의 출현은 반드시 동일한 실시예를 모두 지칭하는 것은 아니다.
설명을 위해, 본 발명의 완전한 이해를 제공하기 위한 특정의 구성 및 세부 사항이 개시되어 있다. 그러나, 당 분야에서 통상의 지식을 가진 자라면 본 명세서에서 제공된 특정의 세부 사항 없이 본 발명의 실시예가 실시될 수 있음이 명백할 것이다. 또한, 본 발명을 불명확하게 하지 않기 위해 잘 알려진 특성은 생략되거나 혹은 간략화될 수 있다. 본 설명 전반에 걸쳐 각종 예가 제시되어 있다. 이들은 단지 본 발명의 특정의 실시예의 설명일 뿐이다. 본 발명의 범위는 주어진 예에 한정되는 것은 아니다.
현재의 시스템은 전형적으로 특정의 VM을 보류하고 다른 VM으로 스케줄링하기 전에 해당 VM에 대한 모든 콘텍스트를 저장할 것이다. 많은 경우, 보류된 VM이 레지스터의 모든 클래스를 사용하지는 않는다. 예를 들어, VM은 부동점 연산을 수행하지 않을 수 있으므로, VMM에 의해 재개되는 경우 부동점(FP) 레지스터에 대한 콘텍스트를 필요로 하지 않는다. 그렇다 하더라도 현재의 시스템은 콘텍스트 스위칭 이전에, FP 레지스터를 저장할 것이다. 이러한 연산은 필요하지 않은 경우에는 낭비적이다.
이제 도 1을 참조하면, 본 발명의 실시예를 실시할 수 있는 예시적인 가상화 플랫폼(100)이 도시되어 있다. VMM(110) 및 게스트 VM(101, 103, 105 및 107)은 플랫폼 하드웨어(120) 상에서 동작한다. 플랫폼 하드웨어(120)는 프로세서(122), 메모리(124) 및 하나 이상의 I/O 디바이스(126 및 128)를 포함할 수 있다. 프로세서(122)는 마이크로프로세서, 디지털 신호 프로세서, 마이크로콘트롤러 등과 같은 소프트웨어를 실행할 수 있는 임의의 유형의 프로세서일 수 있다. 플랫폼 하드웨어(120)는 PC(personal computer), 메인프레임(aminframe), 휴대형 디바이스, 휴대용 컴퓨터, 셋 탑 박스(set top box), 또는 임의의 다른 컴퓨팅 시스템일 수 있다. 도 1은 단지 하나의 이러한 프로세서(122)를 도시하고 있으나, 플랫폼 하드웨어(120) 내에 하나 이상의 프로세서가 존재할 수 있으며, 하나 이상의 프로세서가 다수의 스레드(threads), 다수의 코어 등을 포함할 수 있다.
메모리(124)는 하드 디스크, 플로피 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 플래시 메모리, 또는 프로세서(122)에 의해 판독 가능한 임의의 다른 유형의 매체일 수 있다. 메모리(124)는 본 발명의 방법 실시예의 실행을 수행하는 인스트럭션을 저장할 수 있다.
하나 이상의 I/O 디바이스(126 및 128)는, 예를 들어, 네트워크 인터페이스 카드, 통신 포트, 비디오 콘트롤러, 시스템 버스(예를 들면, PCI, ISA, AGP) 상의 디스크 콘트롤러, 칩셋 로직 또는 프로세서에 일체화된 디바이스(예를 들면, 실시간 클록, 프로그램 가능한 타이머, 성능 카운터) 또는 플랫폼 하드웨어(120) 상의 임의의 다른 디바이스일 수 있다. 하나 이상의 I/O 디바이스(126 및 128)는 I/O 인스트럭션, 또는 메모리 매핑된 I/O 액세스를 통해, 혹은 당 분야에서 알려진 임의의 다른 수단을 통해 액세스될 수 있다.
프로세서(122)는 다양한 레지스터(123)를 갖는다. 레지스터(123)의 콘텍스트는 전형적으로 프로세서 콘텍스트 스위칭 동안 저장된다.
본 발명의 실시예에서, 게스트 VM이 레지스터 세트를 사용할 때 콘텍스트 스위칭 동안 사용된 레지스터의 콘텍스트를 저장할 필요가 있음을 표시하도록 VMM에 통지된다. 일례에서, SSE(streaming SIMD extension) 레지스터는 게스트 VM에 의해 사용될 수 있다. 특정의 인스트럭션은 레지스터 세트를 이용한다. 예를 들어, SIMD 승산을 수행하는 알려진 인스트럭션이 존재한다. 게스트 VM 프로세스가 이러한 인스트럭션을 실행하면, 이러한 게스트 VM에서 SIMD 레지스터가 사용된다.
현재의 가상화 환경에서는, 어떤 상황에서 가상화 트랩(virtualization trap)이 발생할 수 있다. 이러한 트랩은 게스트 VM 상에서의 프로세싱으로부터 VMM으로의 탈출을 야기한다. 어떤 환경에서는, 이러한 트랩은 VM_exit라 불리운다. 본 발명의 실시예는 사전 결정된 인스트럭션이 게스트 VM에서 실행되는 경우 트랩, 또는 VM_exit가 발생하도록 한다. 제어가 VMM으로 전달되어, 이러한 사용을 표시한다. 일 실시예에서, VMM은 트랩 메커니즘을 클리어하여, 사전 결정된 인스트럭션의 후속 사용이 현재의 세션 동안 추가적인 트랩을 야기하지 않는다. 따라서, 사전 결정된 인스트럭션의 첫 번째 사용만이 트랩을 야기할 것이다.
이제 도 2를 참조하면, 본 발명의 실시예에 따른 예시적인 프로세스 흐름이 도시되어 있다. (201)에서 콘텍스트 스위칭 동안 표준 레지스터가 인식(comprehend)된다. 즉, 표준 레지스터는 게스트 VM 콘텍스트와 함께 항상 저장될 수 있다. VMM은 (203)에서, 대응하는 레지스터가 사용되는 것을 VMM에 통지하기 위해, 트랩을 야기하는 사전 결정된 연산 또는 인스트럭션 세트를 설정한다. 당 분야에서 통상의 지식을 가진 자라면 어느 인스트럭션이 트랩을 야기할지를 식별하기 위해 다양한 방법이 사용될 수 있음이 명백할 것이다.
가상화 환경에서 실행되는 몇몇 실시예에서, 가상 머신 제어 구조(VMCS)가 이들 타겟 연산을 식별하도록 사용될 수 있다. VMCS는 특정의 VM에 대해 할당되는 각각의 프로세서에 대해 각각의 VM에 할당된 데이터 구조이다. 멀티프로세서 시스템에서, VMM은 특정의 VM에 프로세서를 할당하고, 다른 VM에 이를 할당하지 않도록 선택할 수 있다. 다른 실시예에서, VMM은 모든 VM이 모든 프로세서를 사용하도록 허용할 수 있다. VMCS는 어느 이벤트가 VM_exit(트랩)을 야기하고 어느 이벤트가 트랩을 야기하지 않는지를 정의하는 다수의 제어 필드를 포함한다. 현재의 시스템에서 VMCS 데이터 구조는 트래핑 인스트럭션(trapping instruction)을 위한 필드를 마련하고 있지 않다.
현재의 시스템에서 VMCS 데이터 구조는 특정의 레지스터 세트를 액세스하는 인스트럭션 그룹에 대한 트래핑 메커니즘을 위한 필드를 마련하고 있지 않다. 본 명세서에서 기술된 바와 같은 이벤트에 대한 트랩을 수용하도록 VMCS를 설정하는 것은 VMCS에 추가적인 비트 필드를 할당함으로써 구현될 수 있다. 추가적인 비트 필드는 게스트 VM에서의 프로세스가 특정의 레지스터 세트를 사용하는지 여부를 판 정하기 위해, FP, MMX, SSE, SIMD 등을 식별할 것이다.
VMCS는 동적으로 수정 가능할 수 있다. 게스트 VM이 실행하도록 스케줄링됨에 따라, VMCS 필드는 타겟 인스트럭션 및 이벤트가 식별될 수 있도록 원하는 대로 설정될 수 있다. 예를 들어, VMCS는 부동점 레지스터를 이용하는 인스트럭션 세트에 대응하는 비트를 가질 수 있다. 이러한 상황에서, 이러한 비트를 설정하고 대응하는 VM에서 FDIV 인스트럭션을 실행하면, VM_exit 또는 하이퍼바이저(hypervisor) 트랩을 야기할 것이다. 일단 트랩이 식별되어 설정되면, (205)에서 통상적인 OS 연산이 진행된다.
예시적인 실행에 있어, (207)에서와 같이, FDIV와 같은 FP 인스트럭션이 실행될 수 있다. 제어는 VMM으로 전달되어 (209)에서 트랩을 야기하는 연산에 근거하여 적절한 액션을 취한다. 이 경우, FDIV의 사용은 이러한 VM에 대해 FP 레지스터 콘텍스트가 저장되어야 함을 표시하는 인스트럭션을 실행하는 게스트 VM과 연관되어 있다. 일단 게스트 VM이 FP 레지스터 콘텍스트를 저장할 필요성을 갖는 것으로 VMM이 식별하면, 트랩은 (211)에서 비활성화되어 각각의 후속 FP 인스트럭션이 현재의 세션에서 트랩을 야기하지 않을 것이다.
몇몇 실시예에서, 게스트 VM이 탈출하거나 혹은 셧다운(shutdown)일 때까지, 트랩은 비활성화된 상태로 유지될 수 있다. 따라서, 이러한 게스트 VM으로/으로부터의 각 콘텍스트 스위칭은 (본 예에서) FP 레지스터가 저장되거나 혹은 복원되도록 요구할 것이다. 그러나, 몇몇의 게스트 VM은 때때로 레지스터 세트만을 사용할 수 있다. 이 경우, 각각의 콘텍스트 스위칭에서 트랩을 리세트하는 것이 보다 효 율적일 수 있다. 몇몇 실시예에서, 게스트 VM이 개시되거나 혹은 재개될 때 트랩이 재할성화된다. VMM은 게스트 VM이 이전의 세션에서 레지스터 세트를 사용한다는 것을 또한 "망각(forget)"할 것이다. 게스트 VM이 이러한 활성 세션 동안 특정의 레지스터 세트를 사용하지 않는 경우, VMM은 콘텍스트 저장을 필요로 하는 것으로서 레지스터 세트를 식별하지 않을 것이다. 따라서, 콘텍스트 저장/재개가 최소화될 수 있다.
일 실시예에서, VMCS에서 타겟 이벤트가 식별될 수 있다. 그러나, 이벤트가 발생하는 경우, VM_exit의 전체 트랩을 필요로 하지 않고 이러한 이벤트가 발생하였음을 표시하기 위해 VMCS에서 비트가 설정되거나 클리어될 수 있다. 이러한 비트는 레지스터 세트가 저장/복원되어야 하는지를 판정하기 위해 콘텍스트 스위칭의 온셋(onset) 시에 체크될 수 있다. 프로세서 하드웨어는 이벤트의 발생 시에 이러한 비트를 자동적으로 설정하도록 구성될 수 있다. 이것은 전형적으로 인스트럭션 세트 아키텍처가 특정의 인스트럭션의 발생 시에 트래핑하도록 구성될 것을 요구할 것이다. 다른 실시예에서는 소프트웨어, 펌웨어, 또는 하드웨어, 펌웨어, 소프트웨어의 결합으로 비트를 설정할 수 있다. 본 발명의 몇몇 실시예는 VT-x(virtualization technology extension) 아키텍처를 더 확장시킴으로써 구현될 수 있다. VT-x에 관한 더 많은 정보는 "Intel@ Vitualization Technology Specification for the IA-32 Intel@ Architecture"(Doc. No. C97063-002, 2005년 4월)에서 찾아볼 수 있으며, URL cache-www*intel*com/cd/00/00/19/76/7666_197666.pdf.에서의 공용 인터넷 상에서 찾아볼 수 있다(의도하지 않은 하이퍼링크를 방지하기 위해 해당 문서 내에 포함된 기간이 URL 내의 별표로 치환되어 있음에 주목해야 한다).
다른 실시예에서, VMM은 2개 이상의 게스트 VM이 특정의 레지스터 세트를 사용할지 여부를 인지하고 있다. 예를 들어, 가상화 환경에서 동작하는 5개의 게스트 VM이 존재하지만, 단지 하나만이 FP 연산을 이용하는 경우가 있을 수 있다. 이 경우, 단지 하나의 게스트 VM이 FP 레지스터를 액세스하므로, FP 레지스터 콘텍스트가 저장되거나 혹은 복원될 필요가 없다. 특정의 게스트 VM이 레지스터 세트를 사용할지 여부를 추적하는 것 이외에, VMM은 제 2 게스트 VM에 의해 레지스터 세트가 수정될 수도 있는 위험에 처해 있는지의 여부를 또한 추적할 수 있으며, 그렇지 않다면, 콘텍스트 스위칭 동안 레지스터 세트를 저장/복원하지 않는다. 제 2 게스트 OS가 레지스터 세트를 액세스하는 경우, VMM은 레지스터 세트를 사용하는 2개의 게스트 VM에 대해 콘텍스트 스위칭 시에 해당 레지스터 세트를 저장/복원할 것이다.
다른 실시예에서, 게스트 VM에서 실행되는 운영 체제는 VMM과 협력한다. 게스트 OS는 어느 프로세서가 어느 레지스터 데이터를 사용하는지를 인지할 수 있는 경우도 있다. 예를 들어, 단지 하나의 실행 프로세스가 SIMD 인스트럭션을 사용하는 것으로 OS가 인지하면, 해당 프로세스가 탈출할 때, SIMD 레지스터는 이러한 게스트 VM의 콘텍스트 스위칭 시에 더 이상 저장/복원될 필요가 없다. 본 실시예에서, OS는 프로세스가 탈출할 때, 이미 트랩을 초래하였음을 VMM에 통지할 수 있고, 게스트 VM이 해당의 특정 레지스터 세트를 사용하지 않음을 표시하도록 VMM은 트랩 제어 구조를 리세트할 수 있다.
이제 도 3을 참조하면, 본 발명의 실시예에 따라 이전에 기술된 VMM이 실행될 수 있는 예시적인 플랫폼(300)이 도시되어 있다. 프로세서(310)는 전면 버스(301)를 통해, 노스 브리지(North bridge)로서 또한 알려진 메모리 콘트롤러 허브(memory controller hub : MCH)(314)와 통신한다. MCH(314)는 메모리 버스(303)를 통해 시스템 메모리(312)와 통신한다. MCH(314)는 그래픽 버스(305)를 통해 어드밴스 그래픽 포트(advanced graphics port : AGP)(316)와 또한 통신할 수 있다. MCH(314)는 PCI(peripheral component interconnect : PCI) 버스(307)를 통해, 사우스 브리지(Sourth bridge)로서 또한 알려진 I/O 콘트롤러 허브(I/O controller hub : ICH)(320)와 통신한다. ICH(320)는 로우 핀 카운트(low pin count : LPC) 버스(356)를 통해, PCI 하드 드라이브(도시되지 않음)와 같은 하나 이상의 구성요소와, IDE(322), USB(324), LAN(326) 오디오(328), 및 수퍼 I/O(SIO) 콘트롤러(316)와 같은 레가시(legacy) 구성요소에 결합될 수 있다.
프로세서(310)는 마이크로프로세서, 디지털 신호 프로세서, 마이크로콘트롤러 등과 같은 소프트웨어를 실행할 수 있는 임의의 유형의 프로세서일 수 있다. 도 1은 단지 하나의 이러한 프로세서(310)를 도시하고 있으나, 플랫폼 하드웨어(300) 내에 하나 이상의 프로세서가 존재할 수 있으며, 하나 이상의 프로세서가 다수의 스레드(threads), 다수의 코어 등을 포함할 수 있다.
메모리(312)는 하드 디스크, 플로피 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 플래시 메모리, 또는 프로세서(310)에 의해 판독 가능한 임의의 다른 유형의 매체일 수 있다. 메모리(312)는 본 발명의 방법 실시예의 실행을 수행하는 인스트럭션을 저장할 수 있다.
플래시 메모리(352)와 같은 비휘발성 메모리는 로우 핀 카운트(LPC) 버스(309)를 통해 IO 콘트롤러에 결합될 수 있다. BIOS 펌웨어(354)는 전형적으로 플래시 메모리(352)에 상주하며 부팅 업(boot up)이 플래시, 또는 펌웨어로부터의 인스트럭션을 실행할 것이다.
몇몇 실시예에서, 플랫폼(300)은 서버 관리 태스크를 인에이블링하는 서버이다. 이러한 플랫폼 실시예는 LPC(309)를 통해 ICH(320)에 결합된 베이스보드 관리 콘트롤러(baseboard management controller : BMC)를 가질 수 있다.
본 명세서에서 기술된 기법은 임의의 특정한 하드웨어 또는 스프트웨어 구성에 한정되는 것은 아니며, 이들은 임의의 컴퓨팅, 가전 제품, 또는 프로세싱 환경에서 적용성을 찾아볼 수 있다. 이 기법은 하드웨어, 소프트웨어, 또는 두 가지의 결합으로 구현될 수 있다. 이 기법은 이동형 또는 고정형 컴퓨터, PDA(personal digital assistant), 셋 탑 박스, 휴대 전화기와 호출기, 가전 제품 디바이스(DVD 플레이어, 퍼스널 비디오 레코더, 퍼스널 비디오 플레이어, 위성 수신기, 스테레오 수신기, 케이블 TV 수신기를 포함하는), 및 프로세서, 이 프로세서에 의해 액세스 가능한 저장 매체(휘발성 및 비휘발성 메모리 및/또는 저장 소자), 적어도 하나의 입력 디바이스 및 하나 이상의 출력 디바이스를 포함할 수 있는 다른 전자 디바이스와 같은 프로그램 가능한 머신 상에서 실행하는 프로그램으로 구현될 수 있다. 입력 디바이스를 이용하여 입력된 데이터에 프로그램 코드가 인가되어 기술된 기능 을 수행하고 출력 정보를 생성한다. 출력 정보는 하나 이상의 출력 디바이스에 인가될 수 있다. 당 분야에서 통상의 지식을 가진 자라면 본 발명은 멀티프로세서 시스템, 미니컴퓨터, 메인프레임 컴퓨터, 독립형 가전 제품 디바이스 등을 포함하는, 각종 시스템 구성으로 실시될 수 있음을 이해할 수 있다. 본 발명은 분산된 컴퓨팅 환경에서 또한 실시될 수 있으며 여기서 태스크 또는 그 일부는 통신 네트워크를 통해 링크되는 원격 프로세싱 디바이스에 의해 수행될 수 있다.
각각의 프로그램은 프로세싱 시스템과 통신하는 하이 레벨 프로시쥬어 또는 객체 지향 프로그래밍 언어로 구현될 수 있다. 그러나, 프로그램은, 필요하다면, 어셈블리 또는 기계어로 구현될 수 있다. 임의의 경우에서, 언어는 컴파일링되거나 해석될 수 있다.
프로그램 인스트럭션은 본 명세서에서 기술된 연산을 수행하기 위한 인스트럭션으로 프로그래밍되는 범용 또는 특수용 프로세싱 시스템을 초래하도록 사용된다. 이와 달리, 연산을 수행하는 하드와이어 로직을 포함하는 특정의 하드웨어 구성요소에 의해, 혹은 프로그래밍된 컴퓨터 구성요소 및 커스텀(custom) 하드웨어 구성요소의 임의의 결합에 의해, 연산이 수행될 수 있다. 본 명세서에서 기술된 방법은 방법을 수행하기 위한 다른 전자 디바이스 혹은 프로세싱 시스템을 프로그래밍하는데 사용될 수 있는 인스트럭션을 저장하는 머신 액세스 가능한 매체를 포함할 수 있는 컴퓨터 프로그램 제품으로서 제공될 수 있다. 본 명세서에서 사용된 "머신 판독 가능한 매체"란 용어는 머신에 의한 실행을 위해 인스트럭션 시퀀스를 저장하거나 인코딩할 수 있으며 본 명세서에서 기술된 방법 중 임의의 하나를 머신 이 수행하도록 하는 임의의 매체를 포함할 것이다. "머신 액세스 가능한 매체"란 용어는 고체 상태 메모리, 광학 및 자기 디스크, 데이터 신호를 인코딩하는 캐리어 파형을 포함하며, 이에 한정되는 것은 아니다. 또한, 당 분야에서 통상적으로 소프트웨어라 하면, 액션을 취하거나 혹은 결과를 초래하는 것으로서 하나의 형태 혹은 다른 형태(예를 들어, 프로그램, 프로시쥬어, 프로세스, 애플리케이션, 모듈, 로직 등)의 소프트웨어를 지칭한다. 이러한 표현은 단지 프로세서가 결과를 생성하는 액션을 수행하도록 하는 프로세싱 시스템에 의한 소프트웨어의 실행을 개시하는 간략한 방식일 뿐이다.
본 발명은 예시적인 실시예를 참조하여 기술되었으나, 본 설명은 한정하는 의미로 해석되도록 의도되어 있지는 않다. 본 발명이 속하는 당 분야에서 통상의 지식을 가진 자라에게 명백한 본 발명의 예시적인 실시예 뿐만 아니라 다른 실시예의 각종 수정예는 본 발명의 정신 및 범위 내에 놓이는 것으로 간주된다.

Claims (30)

  1. 가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템으로서,
    상기 플랫폼은,
    다수의 레지스터 세트를 갖는 프로세서와,
    상기 프로세서 상에서 실행되는 다수의 가상 머신(virtual machine : VM)―각각의 VM은 게스트 운영 체제(guest operating system)에서 실행됨―과,
    실행중인 VM으로부터 상기 VM 내의 사전 결정된 이벤트의 발생에 응답하여 탈출하고 상기 VM 내에 상기 사전 결정된 이벤트가 발생하였음을 표시하는 대응 플래그를 설정하는 트랩 메커니즘(trap mechanism)과,
    상기 다수의 가상 머신 간의 콘텍스트(context)를 스케줄링하고 스위칭하는 가상 머신 모니터(virtual machine monitor : VMM)를 포함하며,
    상기 VMM은 상기 다수의 VM 간의 콘텍스트 스위칭 시에 다수의 레지스터 세트 중 어느 레지스터 세트가 저장되어야 하고 복원되어야 할지를 결정하고, 이 결정은 상기 트랩 메커니즘에 의해 설정된 대응 플래그에 근거하는,
    가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템.
  2. 제 1 항에 있어서,
    상기 트랩 메커니즘은 트랩을 야기할 다수의 이벤트를 식별하기 위한 가상 머신 제어 구조(virtual machine control structure : VMCS) 데이터 구조를 갖는 가상화 탈출 아키텍처를 포함하는,
    가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템.
  3. 제 1 항에 있어서,
    상기 대응 플래그는 가상 머신 제어 구조(VMCS) 데이터 구조 내의 비트를 포함하며, 상기 다수의 가상 머신의 각각은 적어도 하나의 대응하는 VMCS를 갖는,
    가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템.
  4. 제 1 항에 있어서,
    상기 대응 플래그는 사전 결정된 이벤트에 응답하여 리세트되는,
    가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템.
  5. 제 1 항에 있어서,
    상기 트랩 메커니즘은 가상 머신에서 이전에 발생하는 선택된 이벤트에 응답하여 상기 가상 머신 내의 선택된 이벤트에 대해 디스에이블(disable)되는,
    가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템.
  6. 제 5 항에 있어서,
    가상 머신이 재개되는 경우, 비활성화된 트랩 메커니즘이 상기 가상 머신에 대해 재활성화되는,
    가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템.
  7. 제 1 항에 있어서,
    상기 VMM은 상기 다수의 가상 머신 중 2개 이상의 가상 머신이 선택된 레지스터 세트에 대해 상기 트랩 메커니즘에 의해 설정된 대응 플래그를 가질 때 콘텍스트 스위칭 시에 상기 선택된 레지스터 세트에 대한 콘텍스트를 저장하고 복원하며, 상기 VMM은 상기 다수의 가상 머신 중 1개 이하의 가상 머신이 선택된 레지스터 세트에 대해 상기 트랩 메커니즘에 의해 설정된 대응 플래그를 가질 때 콘텍스트 스위칭 시에 상기 선택된 레지스터 세트에 대한 콘텍스트를 저장하고 복원하는 것을 금지하는,
    가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템.
  8. 제 1 항에 있어서,
    상기 다수의 가상 머신 중 하나에서 실행되는 운영 체제(OS)는 선택된 레지스터 세트가 상기 OS 하에 실행되는 프로세스에 의해 더 이상 액세스되지 않는 경우 VMM에 통지하는,
    가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템.
  9. 가상화 플랫폼 내의 제 1 가상 머신이 상기 가상화 플랫폼 상의 프로세서 내에서 선택된 레지스터 세트를 사용할 때를 식별하는 단계와,
    상기 선택된 레지스터 세트가 상기 제 1 가상 머신에 의해 사용되는 것으로 식별될 때 상기 제 1 가상 머신에 대한 상기 선택된 레지스터 세트의 콘텍스트를 가상 머신 모니터(VMM)에 의해 저장하는 단계를 포함하되,
    상기 저장은 상기 제 1 가상 머신으로부터 제 2 가상 머신으로의 프로세서 콘텍스트 스위칭 이전에 발생하는,
    방법.
  10. 제 9 항에 있어서,
    상기 선택된 레지스터 세트가 상기 제 1 가상 머신에 의해 사용되는 것으로 식별될 때 상기 제 1 가상 머신에 대한 상기 선택된 레지스터 세트의 콘텍스트를 가상 머신 모니터(VMM)에 의해 복원하는 단계를 더 포함하되,
    상기 복원은 상기 제 1 가상 머신으로부터 제 2 가상 머신으로의 프로세서 콘텍스트 스위칭 이전에 발생하는,
    방법.
  11. 제 9 항에 있어서,
    상기 식별하는 단계는, 사전 결정된 인스트럭션의 실행에 응답하여, 상기 사전 결정된 인스트럭션이 상기 선택된 레지스터 세트에 대응하는 것으로서 가상 머신 제어 구조(VMCS)에 정의되어 있는지 여부를 판정하는 단계를 포함하는,
    방법.
  12. 제 9 항에 있어서,
    상기 식별하는 단계는,
    제 1 가상 머신 내의 이벤트를 트래핑(trapping)하는 단계―상기 이벤트는 상기 선택된 레지스터 세트의 사용을 표시함―와,
    상기 선택된 레지스터 세트가 상기 제 1 가상 머신에 의해 사용되는 것을 표시하기 위한 플래그를 설정하는 단계를 포함하는,
    방법.
  13. 제 12 항에 있어서,
    상기 플래그가 대응하는 선택된 레지스터 세트에 대해 설정되는지 여부를 판정하는 단계를 더 포함하는,
    방법.
  14. 제 12 항에 있어서,
    상기 트래핑하는 단계는,
    제 1 가상 머신 내의 이벤트가 상기 이벤트에 대응하는 가상 머신 제어 구조(VMCS) 내의 데이터에 근거하여 트래핑되는지 여부를 식별하는 단계와,
    상기 이벤트가 트래핑되어야 한다는 것을 상기 VMCS가 표시하는 경우에는 제 1 가상 머신 내의 상기 이벤트를 트래핑하고, 상기 이벤트가 트래핑되지 않아야 한다는 것을 상기 VMCS가 표시하는 경우에는 상기 이벤트를 트래핑하는 것을 금지하는 단계를 포함하는,
    방법.
  15. 제 12 항에 있어서,
    상기 선택된 이벤트가 상기 제 1 가상 머신에 의해 사용되는 것으로 이전에 식별되었을 때 이벤트를 트래핑하는 것을 금지하는 단계를 더 포함하는,
    방법.
  16. 제 9 항에 있어서,
    제 1 가상 머신이 선택된 레지스터 세트를 사용할지 여부를 판정하는 단계와,
    임의의 다른 가상 머신이 상기 선택된 레지스터 세트를 사용할지 여부를 판정하는 단계와,
    임의의 다른 가상 머신에 의해 상기 선택된 레지스터 세트가 사용되지 않는 경우 상기 제 1 가상 머신에 대한 상기 선택된 레지스터 세트의 콘텍스트를 저장하는 것을 금지하는 단계를 더 포함하는,
    방법.
  17. 제 9 항에 있어서,
    상기 제 1 가상 머신(VM)이 상기 선택된 레지스터 세트를 더 이상 사용하지 않음을 상기 VMM에 통지하는 단계를 더 포함하는,
    방법.
  18. 머신에 의해 이하와 같은 인스트럭션이 실행되는 머신 판독 가능한 매체로서,
    가상화 플랫폼 내의 제 1 가상 머신이 상기 가상화 플랫폼 상의 프로세서 내에서 선택된 레지스터 세트를 사용할 때를 식별하는 인스트럭션과,
    상기 선택된 레지스터 세트가 상기 제 1 가상 머신에 의해 사용되는 것으로 식별될 때 상기 제 1 가상 머신에 대한 상기 선택된 레지스터 세트의 콘텍스트를 가상 머신 모니터(VMM)에 의해 저장하는 인스트럭션을 포함하되,
    상기 저장은 상기 제 1 가상 머신으로부터 제 2 가상 머신으로의 프로세서 콘텍스트 스위칭 이전에 발생하는,
    머신 판독 가능한 매체.
  19. 제 18 항에 있어서,
    상기 선택된 레지스터 세트가 상기 제 1 가상 머신에 의해 사용되는 것으로 식별될 때 상기 제 1 가상 머신에 대한 상기 선택된 레지스터 세트의 콘텍스트를 가상 머신 모니터(VMM)에 의해 복원하는 인스트럭션을 더 포함하되,
    상기 복원은 상기 제 1 가상 머신으로부터 제 2 가상 머신으로의 프로세서 콘텍스트 스위칭 이전에 발생하는,
    머신 판독 가능한 매체.
  20. 제 18 항에 있어서,
    상기 식별하는 인스트럭션은, 사전 결정된 인스트럭션의 실행에 응답하여, 상기 사전 결정된 인스트럭션이 상기 선택된 레지스터 세트에 대응하는 것으로서 가상 머신 제어 구조(VMCS)에 정의되어 있는지 여부를 판정하는 인스트럭션을 포함하는,
    머신 판독 가능한 매체.
  21. 제 18 항에 있어서,
    상기 식별하는 인스트럭션은,
    제 1 가상 머신 내의 이벤트를 트래핑(trapping)하는 인스트럭션―상기 이벤트는 상기 선택된 레지스터 세트의 사용을 표시함―과,
    상기 선택된 레지스터 세트가 상기 제 1 가상 머신에 의해 사용되는지를 표시하기 위한 플래그를 설정하는 인스트럭션을 포함하는,
    머신 판독 가능한 매체.
  22. 제 21 항에 있어서,
    상기 플래그가 대응하는 선택된 레지스터 세트에 대해 설정되는지 여부를 판정하는 인스트럭션을 더 포함하는,
    머신 판독 가능한 매체.
  23. 제 21 항에 있어서,
    상기 트래핑하는 인스트럭션은,
    제 1 가상 머신 내의 상기 이벤트가 상기 이벤트에 대응하는 가상 머신 제어 구조(VMCS) 내의 데이터에 근거하여 트래핑되는지 여부를 식별하는 인스트럭션과,
    상기 이벤트가 트래핑되어야 한다는 것을 상기 VMCS가 표시하는 경우에는 제 1 가상 머신 내의 상기 이벤트를 트래핑하고, 상기 이벤트가 트래핑되지 않아야 한다는 것을 상기 VMCS가 표시하는 경우에는 상기 이벤트를 트래핑하는 것을 금지하는 인스트럭션을 포함하는,
    머신 판독 가능한 매체.
  24. 제 21 항에 있어서,
    상기 선택된 이벤트가 상기 제 1 가상 머신에 의해 사용되는 것으로 이전에 식별되었을 때 상기 이벤트를 트래핑하는 것을 금지하는 인스트럭션을 더 포함하는,
    머신 판독 가능한 매체.
  25. 제 18 항에 있어서,
    제 1 가상 머신이 선택된 레지스터 세트를 사용할지 여부를 판정하는 인스트럭션과,
    임의의 다른 가상 머신이 상기 선택된 레지스터 세트를 사용할지 여부를 판정하는 인스트럭션과,
    상기 선택된 레지스터 세트가 임의의 다른 가상 머신에 의해 사용되지 않는 경우 상기 제 1 가상 머신에 대한 상기 선택된 레지스터 세트의 콘텍스트를 저장하는 것을 금지하는 인스트럭션을 더 포함하는,
    머신 판독 가능한 매체.
  26. 제 18 항에 있어서,
    상기 제 1 가상 머신(VM)이 상기 선택된 레지스터 세트를 더 이상 사용하지 않음을 상기 VMM에 통지하는 인스트럭션을 더 포함하는,
    머신 판독 가능한 매체.
  27. 가상 머신 내의 인스트럭션의 실행에 응답하여, 선택된 레지스터 세트에 대응하는 인스트럭션이 실행 가상 머신으로부터 가상 머신 모니터로 트랩하도록 하는 단계와,
    상기 선택된 레지스터 세트에 대응하는 플래그를 설정하는 단계를 포함하되, 상기 플래그는 가상 머신이 상기 선택된 레지스터 세트를 사용한다는 것을 표시하는,
    방법.
  28. 제 27 항에 있어서,
    상기 플래그를 설정한 후에 상기 선택된 레지스터 세트에 대한 상기 가상 머신의 트래핑을 디스에이블링하는 단계를 더 포함하는,
    방법.
  29. 제 27 항에 있어서,
    상기 플래그는 상기 가상 머신에 대응하는 가상 머신 제어 구조(VMCS) 및 프로세서 내의 적어도 하나의 비트를 포함하는,
    방법.
  30. 제 29 항에 있어서,
    가상 머신들 간의 프로세서 콘텍스트 스위칭에 대한 요구에 응답하여, 상기 대응하는 플래그가 설정되는 경우 상기 선택된 레지스터 세트의 콘텍스트를 저장하는 단계를 더 포함하는,
    방법.
KR1020077030428A 2005-06-30 2006-06-29 가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템, 방법 및 머신 판독 가능한 매체 KR100974108B1 (ko)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
KR20080020639A KR20080020639A (ko) 2008-03-05
KR100974108B1 true KR100974108B1 (ko) 2010-08-04

Family

ID=37075628

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077030428A KR100974108B1 (ko) 2005-06-30 2006-06-29 가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템, 방법 및 머신 판독 가능한 매체

Country Status (6)

Country Link
US (1) US7904903B2 (ko)
EP (1) EP1899810B1 (ko)
JP (2) JP2008545205A (ko)
KR (1) KR100974108B1 (ko)
CN (1) CN101213518B (ko)
WO (1) WO2007005819A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101433644B1 (ko) * 2011-11-09 2014-08-27 상명대학교서울산학협력단 Arm 기반 운영체제의 가상화를 위한 정책 제공 시스템 및 방법
KR101690949B1 (ko) 2016-03-11 2016-12-29 국방과학연구소 가상화 환경에서의 가상머신 게스트 os 자원 정보 수집 장치 및 방법

Families Citing this family (36)

* Cited by examiner, † Cited by third party
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 日本電気株式会社 プロセッサ、メモリ装置、処理装置及び命令の処理方法
US8627299B2 (en) 2008-02-29 2014-01-07 International Business Machines Corporation Virtual machine and programming language for event processing
US8397216B2 (en) * 2008-02-29 2013-03-12 International Business Machines Corporation Compiler for a declarative event-driven programming model
US8365149B2 (en) * 2008-02-29 2013-01-29 International Business Machines Corporation Debugger for a declarative event-driven programming model
WO2009133669A1 (ja) * 2008-04-28 2009-11-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 삼성전자주식회사 가상화 장치 및 가상화 장치의 동작 방법
US8612633B2 (en) * 2010-03-31 2013-12-17 Microsoft Corporation Virtual machine fast emulation assist
CN102770846B (zh) * 2010-12-21 2016-08-31 松下电器(美国)知识产权公司 虚拟计算机系统控制装置及虚拟计算机系统控制方法
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
EP3244307A1 (en) * 2012-03-29 2017-11-15 INTEL Corporation Architecture and method for managing interrupts in a virtualized environment
US9052971B2 (en) 2012-07-12 2015-06-09 International Business Machines Corporation Scalable event-driven system
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
CN104937550B (zh) * 2013-01-15 2019-03-26 英派尔科技开发有限公司 以函数为目标的虚拟机切换
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
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
US10496437B2 (en) * 2017-11-14 2019-12-03 International Business Machines Corporation Context switch by changing memory pointers
US10592164B2 (en) 2017-11-14 2020-03-17 International Business Machines Corporation Portions of configuration state registers in-memory
US20230088998A1 (en) * 2021-09-17 2023-03-23 Samsung Electronics Co., Ltd. System on chip, controller and vehicle

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040123288A1 (en) 2002-12-19 2004-06-24 Intel Corporation Methods and systems to manage machine state in virtual machine operations
US20050132364A1 (en) 2003-12-16 2005-06-16 Vijay Tewari Method, apparatus and system for optimizing context switching between virtual machines

Family Cites Families (21)

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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040123288A1 (en) 2002-12-19 2004-06-24 Intel Corporation Methods and systems to manage machine state in virtual machine operations
US20050132364A1 (en) 2003-12-16 2005-06-16 Vijay Tewari Method, apparatus and system for optimizing context switching between virtual machines

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101433644B1 (ko) * 2011-11-09 2014-08-27 상명대학교서울산학협력단 Arm 기반 운영체제의 가상화를 위한 정책 제공 시스템 및 방법
KR101690949B1 (ko) 2016-03-11 2016-12-29 국방과학연구소 가상화 환경에서의 가상머신 게스트 os 자원 정보 수집 장치 및 방법

Also Published As

Publication number Publication date
US7904903B2 (en) 2011-03-08
WO2007005819A1 (en) 2007-01-11
CN101213518A (zh) 2008-07-02
US20070006228A1 (en) 2007-01-04
JP5562988B2 (ja) 2014-07-30
JP2008545205A (ja) 2008-12-11
JP2012079357A (ja) 2012-04-19
KR20080020639A (ko) 2008-03-05
EP1899810B1 (en) 2018-01-10
EP1899810A1 (en) 2008-03-19
CN101213518B (zh) 2012-10-10

Similar Documents

Publication Publication Date Title
KR100974108B1 (ko) 가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템, 방법 및 머신 판독 가능한 매체
US7802250B2 (en) Support for transitioning to a virtual machine monitor based upon the privilege level of guest software
US9405551B2 (en) Creating an isolated execution environment in a co-designed processor
JP4564536B2 (ja) 仮想マシンモニタに関連するタイマへのサポートを提供する方法及び装置
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
US8230203B2 (en) Detecting spin loops in a virtual machine environment
US20140053272A1 (en) Multilevel Introspection of Nested Virtual Machines
JP6556748B2 (ja) コンピュータにおいて複数のスレッドをディスパッチするための方法、システム、およびコンピュータ・プログラム
EP2239662A2 (en) System management mode inter-processor interrupt redirection
US20050204357A1 (en) Mechanism to protect extensible firmware interface runtime services utilizing virtualization technology
US9164784B2 (en) Signalizing an external event using a dedicated virtual central processing unit
KR20140002048A (ko) 결합된 가상 그래픽 장치
US9465617B1 (en) Implementing upcall from secure to non-secure mode by injecting exception into non-secure mode
EP2962240A1 (en) Performing security operations using binary translation
BR112016022282B1 (pt) Equipamento, método e suporte físico para execução de segmentos múltiplos em computador
US9566158B2 (en) Hardware protection of virtual machine monitor runtime integrity watcher
US20040193394A1 (en) Method for CPU simulation using virtual machine extensions
Ferstay Fast secure virtualization for the arm platform
US9747118B2 (en) Guest-specific microcode
Im et al. On-demand virtualization for live migration in bare metal cloud
CN110795231A (zh) 一种虚拟cpu的处理方法及装置
US11726811B2 (en) Parallel context switching for interrupt handling
US10303503B2 (en) Hardware protection of virtual machine monitor runtime integrity watcher

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130701

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140701

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150630

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170704

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee