KR100974108B1 - 가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템, 방법 및 머신 판독 가능한 매체 - Google Patents
가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템, 방법 및 머신 판독 가능한 매체 Download PDFInfo
- 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
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)
- Hardware Redundancy (AREA)
- Stored Programmes (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
몇몇 실시예에서, 본 발명은 가상 머신 간에 천이하는 경우 한정된 콘텍스트 정보를 저장하는 것을 수반한다. 사전 결정된 인스트럭션 및 이벤트 세트가 트랩을 야기한다. 가상 머신 내에서 이벤트가 발생하였을 나타내는 비트 또는 플래그가 설정된다. 가상 머신 모니터는 플래그가 설정되었는지 여부에 근거하여, 콘텍스트 스위칭 시에 특정의 레지스터 세트가 저장되거나 혹은 복원되어야 하는지 여부를 판정한다. 다른 실시예가 기술되고 청구되어 있다.
Description
본 발명의 실시예는 전반적으로 컴퓨팅 디바이스에 관한 것으로서, 보다 구체적으로, 가상 머신 간에 천이하는 경우에 한정된 콘텍스트 정보를 저장하는 것에 관한 것이다.
운영 체제(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)
- 가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템으로서,상기 플랫폼은,다수의 레지스터 세트를 갖는 프로세서와,상기 프로세서 상에서 실행되는 다수의 가상 머신(virtual machine : VM)―각각의 VM은 게스트 운영 체제(guest operating system)에서 실행됨―과,실행중인 VM으로부터 상기 VM 내의 사전 결정된 이벤트의 발생에 응답하여 탈출하고 상기 VM 내에 상기 사전 결정된 이벤트가 발생하였음을 표시하는 대응 플래그를 설정하는 트랩 메커니즘(trap mechanism)과,상기 다수의 가상 머신 간의 콘텍스트(context)를 스케줄링하고 스위칭하는 가상 머신 모니터(virtual machine monitor : VMM)를 포함하며,상기 VMM은 상기 다수의 VM 간의 콘텍스트 스위칭 시에 다수의 레지스터 세트 중 어느 레지스터 세트가 저장되어야 하고 복원되어야 할지를 결정하고, 이 결정은 상기 트랩 메커니즘에 의해 설정된 대응 플래그에 근거하는,가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템.
- 제 1 항에 있어서,상기 트랩 메커니즘은 트랩을 야기할 다수의 이벤트를 식별하기 위한 가상 머신 제어 구조(virtual machine control structure : VMCS) 데이터 구조를 갖는 가상화 탈출 아키텍처를 포함하는,가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템.
- 제 1 항에 있어서,상기 대응 플래그는 가상 머신 제어 구조(VMCS) 데이터 구조 내의 비트를 포함하며, 상기 다수의 가상 머신의 각각은 적어도 하나의 대응하는 VMCS를 갖는,가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템.
- 제 1 항에 있어서,상기 대응 플래그는 사전 결정된 이벤트에 응답하여 리세트되는,가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템.
- 제 1 항에 있어서,상기 트랩 메커니즘은 가상 머신에서 이전에 발생하는 선택된 이벤트에 응답하여 상기 가상 머신 내의 선택된 이벤트에 대해 디스에이블(disable)되는,가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템.
- 제 5 항에 있어서,가상 머신이 재개되는 경우, 비활성화된 트랩 메커니즘이 상기 가상 머신에 대해 재활성화되는,가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템.
- 제 1 항에 있어서,상기 VMM은 상기 다수의 가상 머신 중 2개 이상의 가상 머신이 선택된 레지스터 세트에 대해 상기 트랩 메커니즘에 의해 설정된 대응 플래그를 가질 때 콘텍스트 스위칭 시에 상기 선택된 레지스터 세트에 대한 콘텍스트를 저장하고 복원하며, 상기 VMM은 상기 다수의 가상 머신 중 1개 이하의 가상 머신이 선택된 레지스터 세트에 대해 상기 트랩 메커니즘에 의해 설정된 대응 플래그를 가질 때 콘텍스트 스위칭 시에 상기 선택된 레지스터 세트에 대한 콘텍스트를 저장하고 복원하는 것을 금지하는,가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템.
- 제 1 항에 있어서,상기 다수의 가상 머신 중 하나에서 실행되는 운영 체제(OS)는 선택된 레지스터 세트가 상기 OS 하에 실행되는 프로세스에 의해 더 이상 액세스되지 않는 경우 VMM에 통지하는,가상화 기술 아키텍처를 따르는 플랫폼을 포함하는 시스템.
- 가상화 플랫폼 내의 제 1 가상 머신이 상기 가상화 플랫폼 상의 프로세서 내에서 선택된 레지스터 세트를 사용할 때를 식별하는 단계와,상기 선택된 레지스터 세트가 상기 제 1 가상 머신에 의해 사용되는 것으로 식별될 때 상기 제 1 가상 머신에 대한 상기 선택된 레지스터 세트의 콘텍스트를 가상 머신 모니터(VMM)에 의해 저장하는 단계를 포함하되,상기 저장은 상기 제 1 가상 머신으로부터 제 2 가상 머신으로의 프로세서 콘텍스트 스위칭 이전에 발생하는,방법.
- 제 9 항에 있어서,상기 선택된 레지스터 세트가 상기 제 1 가상 머신에 의해 사용되는 것으로 식별될 때 상기 제 1 가상 머신에 대한 상기 선택된 레지스터 세트의 콘텍스트를 가상 머신 모니터(VMM)에 의해 복원하는 단계를 더 포함하되,상기 복원은 상기 제 1 가상 머신으로부터 제 2 가상 머신으로의 프로세서 콘텍스트 스위칭 이전에 발생하는,방법.
- 제 9 항에 있어서,상기 식별하는 단계는, 사전 결정된 인스트럭션의 실행에 응답하여, 상기 사전 결정된 인스트럭션이 상기 선택된 레지스터 세트에 대응하는 것으로서 가상 머신 제어 구조(VMCS)에 정의되어 있는지 여부를 판정하는 단계를 포함하는,방법.
- 제 9 항에 있어서,상기 식별하는 단계는,제 1 가상 머신 내의 이벤트를 트래핑(trapping)하는 단계―상기 이벤트는 상기 선택된 레지스터 세트의 사용을 표시함―와,상기 선택된 레지스터 세트가 상기 제 1 가상 머신에 의해 사용되는 것을 표시하기 위한 플래그를 설정하는 단계를 포함하는,방법.
- 제 12 항에 있어서,상기 플래그가 대응하는 선택된 레지스터 세트에 대해 설정되는지 여부를 판정하는 단계를 더 포함하는,방법.
- 제 12 항에 있어서,상기 트래핑하는 단계는,제 1 가상 머신 내의 이벤트가 상기 이벤트에 대응하는 가상 머신 제어 구조(VMCS) 내의 데이터에 근거하여 트래핑되는지 여부를 식별하는 단계와,상기 이벤트가 트래핑되어야 한다는 것을 상기 VMCS가 표시하는 경우에는 제 1 가상 머신 내의 상기 이벤트를 트래핑하고, 상기 이벤트가 트래핑되지 않아야 한다는 것을 상기 VMCS가 표시하는 경우에는 상기 이벤트를 트래핑하는 것을 금지하는 단계를 포함하는,방법.
- 제 12 항에 있어서,상기 선택된 이벤트가 상기 제 1 가상 머신에 의해 사용되는 것으로 이전에 식별되었을 때 이벤트를 트래핑하는 것을 금지하는 단계를 더 포함하는,방법.
- 제 9 항에 있어서,제 1 가상 머신이 선택된 레지스터 세트를 사용할지 여부를 판정하는 단계와,임의의 다른 가상 머신이 상기 선택된 레지스터 세트를 사용할지 여부를 판정하는 단계와,임의의 다른 가상 머신에 의해 상기 선택된 레지스터 세트가 사용되지 않는 경우 상기 제 1 가상 머신에 대한 상기 선택된 레지스터 세트의 콘텍스트를 저장하는 것을 금지하는 단계를 더 포함하는,방법.
- 제 9 항에 있어서,상기 제 1 가상 머신(VM)이 상기 선택된 레지스터 세트를 더 이상 사용하지 않음을 상기 VMM에 통지하는 단계를 더 포함하는,방법.
- 머신에 의해 이하와 같은 인스트럭션이 실행되는 머신 판독 가능한 매체로서,가상화 플랫폼 내의 제 1 가상 머신이 상기 가상화 플랫폼 상의 프로세서 내에서 선택된 레지스터 세트를 사용할 때를 식별하는 인스트럭션과,상기 선택된 레지스터 세트가 상기 제 1 가상 머신에 의해 사용되는 것으로 식별될 때 상기 제 1 가상 머신에 대한 상기 선택된 레지스터 세트의 콘텍스트를 가상 머신 모니터(VMM)에 의해 저장하는 인스트럭션을 포함하되,상기 저장은 상기 제 1 가상 머신으로부터 제 2 가상 머신으로의 프로세서 콘텍스트 스위칭 이전에 발생하는,머신 판독 가능한 매체.
- 제 18 항에 있어서,상기 선택된 레지스터 세트가 상기 제 1 가상 머신에 의해 사용되는 것으로 식별될 때 상기 제 1 가상 머신에 대한 상기 선택된 레지스터 세트의 콘텍스트를 가상 머신 모니터(VMM)에 의해 복원하는 인스트럭션을 더 포함하되,상기 복원은 상기 제 1 가상 머신으로부터 제 2 가상 머신으로의 프로세서 콘텍스트 스위칭 이전에 발생하는,머신 판독 가능한 매체.
- 제 18 항에 있어서,상기 식별하는 인스트럭션은, 사전 결정된 인스트럭션의 실행에 응답하여, 상기 사전 결정된 인스트럭션이 상기 선택된 레지스터 세트에 대응하는 것으로서 가상 머신 제어 구조(VMCS)에 정의되어 있는지 여부를 판정하는 인스트럭션을 포함하는,머신 판독 가능한 매체.
- 제 18 항에 있어서,상기 식별하는 인스트럭션은,제 1 가상 머신 내의 이벤트를 트래핑(trapping)하는 인스트럭션―상기 이벤트는 상기 선택된 레지스터 세트의 사용을 표시함―과,상기 선택된 레지스터 세트가 상기 제 1 가상 머신에 의해 사용되는지를 표시하기 위한 플래그를 설정하는 인스트럭션을 포함하는,머신 판독 가능한 매체.
- 제 21 항에 있어서,상기 플래그가 대응하는 선택된 레지스터 세트에 대해 설정되는지 여부를 판정하는 인스트럭션을 더 포함하는,머신 판독 가능한 매체.
- 제 21 항에 있어서,상기 트래핑하는 인스트럭션은,제 1 가상 머신 내의 상기 이벤트가 상기 이벤트에 대응하는 가상 머신 제어 구조(VMCS) 내의 데이터에 근거하여 트래핑되는지 여부를 식별하는 인스트럭션과,상기 이벤트가 트래핑되어야 한다는 것을 상기 VMCS가 표시하는 경우에는 제 1 가상 머신 내의 상기 이벤트를 트래핑하고, 상기 이벤트가 트래핑되지 않아야 한다는 것을 상기 VMCS가 표시하는 경우에는 상기 이벤트를 트래핑하는 것을 금지하는 인스트럭션을 포함하는,머신 판독 가능한 매체.
- 제 21 항에 있어서,상기 선택된 이벤트가 상기 제 1 가상 머신에 의해 사용되는 것으로 이전에 식별되었을 때 상기 이벤트를 트래핑하는 것을 금지하는 인스트럭션을 더 포함하는,머신 판독 가능한 매체.
- 제 18 항에 있어서,제 1 가상 머신이 선택된 레지스터 세트를 사용할지 여부를 판정하는 인스트럭션과,임의의 다른 가상 머신이 상기 선택된 레지스터 세트를 사용할지 여부를 판정하는 인스트럭션과,상기 선택된 레지스터 세트가 임의의 다른 가상 머신에 의해 사용되지 않는 경우 상기 제 1 가상 머신에 대한 상기 선택된 레지스터 세트의 콘텍스트를 저장하는 것을 금지하는 인스트럭션을 더 포함하는,머신 판독 가능한 매체.
- 제 18 항에 있어서,상기 제 1 가상 머신(VM)이 상기 선택된 레지스터 세트를 더 이상 사용하지 않음을 상기 VMM에 통지하는 인스트럭션을 더 포함하는,머신 판독 가능한 매체.
- 가상 머신 내의 인스트럭션의 실행에 응답하여, 선택된 레지스터 세트에 대응하는 인스트럭션이 실행 가상 머신으로부터 가상 머신 모니터로 트랩하도록 하는 단계와,상기 선택된 레지스터 세트에 대응하는 플래그를 설정하는 단계를 포함하되, 상기 플래그는 가상 머신이 상기 선택된 레지스터 세트를 사용한다는 것을 표시하는,방법.
- 제 27 항에 있어서,상기 플래그를 설정한 후에 상기 선택된 레지스터 세트에 대한 상기 가상 머신의 트래핑을 디스에이블링하는 단계를 더 포함하는,방법.
- 제 27 항에 있어서,상기 플래그는 상기 가상 머신에 대응하는 가상 머신 제어 구조(VMCS) 및 프로세서 내의 적어도 하나의 비트를 포함하는,방법.
- 제 29 항에 있어서,가상 머신들 간의 프로세서 콘텍스트 스위칭에 대한 요구에 응답하여, 상기 대응하는 플래그가 설정되는 경우 상기 선택된 레지스터 세트의 콘텍스트를 저장하는 단계를 더 포함하는,방법.
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)
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)
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 |
CN101689127B (zh) * | 2008-04-28 | 2013-10-09 | 松下电器产业株式会社 | 虚拟计算机控制装置、虚拟计算机控制方法及虚拟计算机控制程序 |
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 |
US9304795B2 (en) * | 2013-01-15 | 2016-04-05 | Empire Technology Development Llc | Function-targeted virtual machine switching |
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 |
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 |
US20230088998A1 (en) * | 2021-09-17 | 2023-03-23 | Samsung Electronics Co., Ltd. | System on chip, controller and vehicle |
Citations (2)
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)
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 |
-
2005
- 2005-06-30 US US11/174,254 patent/US7904903B2/en not_active Expired - Fee Related
-
2006
- 2006-06-29 CN CN2006800240723A patent/CN101213518B/zh not_active Expired - Fee Related
- 2006-06-29 KR KR1020077030428A patent/KR100974108B1/ko not_active IP Right Cessation
- 2006-06-29 WO PCT/US2006/025960 patent/WO2007005819A1/en active Application Filing
- 2006-06-29 EP EP06786212.8A patent/EP1899810B1/en not_active Not-in-force
- 2006-06-29 JP JP2008519684A patent/JP2008545205A/ja active Pending
-
2012
- 2012-01-27 JP JP2012015079A patent/JP5562988B2/ja not_active Expired - Fee Related
Patent Citations (2)
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)
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 |
---|---|
JP5562988B2 (ja) | 2014-07-30 |
KR20080020639A (ko) | 2008-03-05 |
WO2007005819A1 (en) | 2007-01-11 |
JP2012079357A (ja) | 2012-04-19 |
EP1899810B1 (en) | 2018-01-10 |
EP1899810A1 (en) | 2008-03-19 |
US20070006228A1 (en) | 2007-01-04 |
US7904903B2 (en) | 2011-03-08 |
CN101213518B (zh) | 2012-10-10 |
JP2008545205A (ja) | 2008-12-11 |
CN101213518A (zh) | 2008-07-02 |
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) | コンピュータにおいて複数のスレッドをディスパッチするための方法、システム、およびコンピュータ・プログラム | |
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 |