KR20090009866A - 실행 중인 운영 체제를 이용하여 하이퍼바이저를 실행하는 컴퓨터 프로그램 제품 및 그 방법 - Google Patents

실행 중인 운영 체제를 이용하여 하이퍼바이저를 실행하는 컴퓨터 프로그램 제품 및 그 방법 Download PDF

Info

Publication number
KR20090009866A
KR20090009866A KR1020087027870A KR20087027870A KR20090009866A KR 20090009866 A KR20090009866 A KR 20090009866A KR 1020087027870 A KR1020087027870 A KR 1020087027870A KR 20087027870 A KR20087027870 A KR 20087027870A KR 20090009866 A KR20090009866 A KR 20090009866A
Authority
KR
South Korea
Prior art keywords
operating system
hypervisor
virtual machine
computing system
machine instance
Prior art date
Application number
KR1020087027870A
Other languages
English (en)
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 KR20090009866A publication Critical patent/KR20090009866A/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
    • 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/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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/45575Starting, stopping, suspending or resuming virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)

Abstract

실행 중인 운영 체제가 이미 존재한 이후의 하이퍼바이저의 시작이 개시된다. 운영 체제는 자신이 하이퍼바이저를 시작시킬 수 있다. 컴퓨팅 시스템 상에서 실행 중인 물리적 리소스를 발견하기 위해 하이퍼바이저를 대신해 실행 중인 운영 체제가 사용될 수 있다. 다른 운영 체제 또는 운영 체제 인스턴스는 하이퍼바이저가 동작가능하고 난 이후에 실행될 수 있다.
하이퍼바이저, 운영 체제 인스턴스, 가상화, 물리적 리소스

Description

실행 중인 운영 체제를 이용하여 하이퍼바이저를 실행하는 컴퓨터 프로그램 제품 및 그 방법{LAUNCHING HYPERVISOR UNDER RUNNING OPERATING SYSTEM}
운영 체제의 주요 기능 중 하나는 컴퓨팅 시스템 상의 물리적 리소스와의 인터페이스이다. 전형적인 운영 체제는 부적절한 방식으로 물리적인 리소스에 액세스하는 것을 막을 수 있다. 예를 들면, 한 애플리케이션이 메모리의 특정 세그먼트를 사용하고 있으면, 운영 체제는 그 메모리의 그 세그먼트가 동일한 운영 체제에 의해 관리되는 또다른 애플리케이션에 의해 변경되는 것을 막을 수 있다. 그렇지 않으면, 애플리케이션은 예상했던 것처럼 기능하지 않을지 모른다. 이러한 액세스 보호는 이 운영체제가 컴퓨팅 시스템 상에서 실행되는 유일한 운영 체제라는 가정에 주로 근거한다.
하지만, 가끔 동일한 컴퓨팅 시스템 상에서 복수의 운영 체제를 실행시키는 것이 이로울 수 있다. 이 경우, 리소스를 이용하는 안전한 동작을 보장하기 위한 각각의 운영 체제에서의 절대적인 보호는 더 이상 충분하지 않을 수 있다. 운영 체제는 또다른 운영 체제에 의한 동일한 물리적 리소스로의 액세스를 제어하지 못할 수 있으며, 다른 실행 중인 운영 체제의 존재를 인식하는 메커니즘조차 갖지 않을 수 있다.
하이퍼바이저(hypervisor)는 하나 이상의 실행 중인 운영 체제와 보호된 물 리적 리소스(프로세서, I/O 포트, 메모리, 인터럽트, 등) 사이에 개입하도록 구성된 소프트웨어 계층이다. 하이퍼바이저는 운영 체제들에 대해 보호된 물리적 리소스들을 기능적으로 다중화(multiplex)하고, 가상의 방식으로, 각각의 운영 체제에 대해 리소스를 명시한다. 예를 들면, 간단한 예시로서, 하나의 프로세서 및 1GB의 RAM을 가진 컴퓨팅 시스템 상에서 실행 중인 2개의 운영 체제가 있다고 가정한다. 하이퍼바이저는 각각의 운영 체제에게 프로세서 사이클의 절반 및 메모리의 절반(RAM의 512MB)을 할당할 수 있다. 더욱이, 하이퍼바이저는 각각의 운영 체제에 어드레스된(addressed) RAM의 가상의 범위를 제공할 수 있어, 마치 2개의 운영 체제 모두에게 512MB의 RAM만이 사용가능한 것처럼 보이게 할 수 있다.
운영 체제가 물리적 리소스와 통신을 시도할 경우 및 물리적 리소스가 운영 체제로 통신을 시도할 경우, 하이퍼바이저는 적절한 버퍼링 및 변환을 수행하여 각각의 운영 체제로 하여금 마치 컴퓨팅 시스템 상에서 자신만이 유일한 운영 체제인 것처럼 실행환경을 느끼도록 허락할 것이다. 더욱이, 하이퍼바이저는 컴퓨팅 시스템 상의 물리적 리소스가 여전히 보호되면서도 복수의 운영 체제 인스턴스에 의해 공유될 수 있는 방식으로 이를 수행할 것이다.
통상적으로, 하이퍼바이저는 운영 체제의 실행 이전에 시작된다. 이는 물리적 리소스의 가상화된 보기를 나타냄으로써, 하이퍼바이저가 가상 머신(virtual machine)에서 운영 체제를 시작하도록 한다. 운영 체제를 가상 머신에서 즉시 시작하기 위해서, 하이퍼바이저는 물리적 리소스 및 리소스의 본질적인 특징을 발견하기 위해 광범위한 코드를 포함한다. 물리적 리소스의 발견은 실행중인 어떤 운 영 체제가 존재하기 이전에 행해지기 때문에, 이러한 발견 단계에서는 운영 체제에 의존할 수 없다. 따라서, 하이퍼바이저에서의 물리적 리소스의 발견을 위한 코드는 상당히 복잡할 수 있다.
<개요>
본 발명의 원리가 간략한 개요에서 요약된 실시예에 한정되지 않지만, 본원에 기술된 소정의 실시예는 이미 실행 중인 운영 체제가 존재하고 난 이후의 하이퍼바이저의 시작에 관한 것이다. 필수적이지는 않지만, 실행 중인 운영 체제는 컴퓨팅 시스템 상에서 실행중인 물리적 리소스를 발견하기 위해 하이퍼바이저를 대신해 사용될 수 있다. 따라서, 만약 원한다면, 하이퍼바이저는 리소스를 발견하기 위해 코드를 꼭 가지기보다는 동일한 기능을 수행하기 위해 운영 체제에 의존할 수 있다.
본 개요는 아래 발명의 상세한 설명에서 더 기술될 양태의 선택을 간단한 형식으로 도입하기 위해 제공된다. 본 개요는 청구된 내용의 주요 특징 또는 본질적진 특징을 식별하기 위해 의도되지 않으며, 청구된 내용의 범주를 결정하는 데 도움을 주기 위한 것으로 사용되도록 의도되지도 않는다.
앞서 나온 내용과 본 발명의 다른 이점들 및 특징들을 더 명시하기 위해, 본 발명의 더 구체적인 기술이 첨부 도면에 도시된 것에 관하여 구체적인 실시예들을 참조하여 이루어질 것이다. 이러한 도면들이 본 발명의 전형적인 실시예들만을 도시하고, 그러므로 본 발명의 범주를 제한하도록 고려되지 않는다는 것이 인지된다. 본 발명은 첨부 도면의 사용으로 인한 추가적인 특수성 및 세부성으로 기술되고 설명될 것이다.
도 1은 본 발명의 실시예들이 이용될 수 있는 컴퓨팅 환경을 도시한 도면.
도 2는 실행 중인 운영 체제를 이용한 하이퍼바이저의 시작을 위한 방법에 대한 흐름도.
도 3은 추가적인 운영 체제 인스턴스의 시작을 위한 방법에 대한 흐름도.
도 4A는 하이퍼바이저의 부재 시에, 루트 운영 체제(root operating system)가 컴퓨팅 시스템의 물리적 리소스와 직접적으로 통신하는 구성을 도시한 도면.
도 4B는 운영 체제가 하이퍼바이저를 운영 체제와 물리적 리소스 사이의 중개자(intermediary)로서 역할하도록 시작시킨 구성을 도시한 도면.
도 4C는 추가적인 운영 체제들이 하이퍼바이저에 의해 시작되고 지원되는 구성을 도시한 도면.
도 5는 운영 체제를 하이퍼바이저 환경으로 옮기는 방법에 대한 흐름도.
본 발명의 실시예에 따라, 하이퍼바이저는 실행 중인 운영 체제가 이미 존재한 이후에 시작될 수 있다. 실행 중인 운영 체제는 컴퓨팅 시스템 상의 실행 중인 물리적 리소스를 발견하기 위해 하이퍼바이저를 대신해 사용될 수 있다. 다른 운영 체제 인스턴스들은 하이퍼바이저가 동작가능하게 된 이후에 시작될 수 있다. 본 발명의 원리가 실시될 수 있는 일반적인 컴퓨팅 환경은 도 1에 관하여 먼저 기술될 것이다. 이후, 본 발명의 실시예에 관한 추가적인 세부사항들이 이어지는 도면들에 관해서 기술될 것이다.
컴퓨팅 시스템은 점점 더 다양한 형태를 취하고 있다. 컴퓨팅 시스템은, 예를 들면, 핸드헬드 장치, 어플라이언스, 랩탑 컴퓨터, 데스크탑 컴퓨터, 메인 프레임, 분산 컴퓨팅 시스템, 또는 컴퓨팅 시스템으로 통상 간주되지 않았던 장치마저도 될 수 있다. 본 설명 및 청구항에서, "컴퓨팅 시스템"이라는 용어는 적어도 하나의 프로세서, 및 그 프로세서에 의해 실행될 수 있는 컴퓨터 실행가능 명령어를 내장할 수 있는 메모리를 포함하는 임의의 시스템 또는 장치(또는 그 두 가지의 조합)를 포함하는 것으로서 넓게 정의된다. 메모리는 어떠한 형태라도 취할 수 있으며, 컴퓨팅 시스템의 특성 및 형태에 의존할 수 있다. 컴퓨팅 시스템은 네트워크 환경에 분산될 수 있고, 여러 구성 컴퓨팅 시스템을 포함할 수 있다.
도 1을 참조하면, 가장 기본적인 구성으로, 컴퓨팅 시스템(100)은 적어도 하나의 처리 장치(102) 및 메모리(104)를 포함한다. 메모리(104)는 휘발성이거나 비휘발성 또는 두 가지의 조합일 수 있는 물리적 시스템 메모리일 수 있다. 휘발성 메모리의 일례는 RAM을 포함한다. 비휘발성 메모리의 예시들은 ROM, 플래시 메모리, 또는 그 유사한 것을 포함한다. "메모리"라는 용어는 물리적 저장 매체와 같은 비휘발성 저장 장치를 언급하기 위해 본원에서 역시 사용될 수 있다. 이러한 저장 장치는 이동식 또는 비이동식일 수 있고, PCMCIA 카드, 자기 및 광 디스크, 자기 테이프, 및 이와 유사한 것을 포함하지만 이에 한정되지는 않는다.
본원에서 사용된 바와 같이, "모듈" 또는 "컴포넌트"라는 용어는 컴퓨팅 시스템 상에서 실행하는 소프트웨어 오브젝트 또는 루틴(routine)을 언급할 수 있다. 본원에서 기술된 다른 컴포넌트, 모듈, 엔진, 및 서비스들은 (예를 들면, 개별 쓰레드로서) 컴퓨팅 시스템에서 실행하는 오브젝트 또는 프로세스로서 구현될 수 있다. 본원에서 기술된 시스템 및 방법이 소프트웨어로 구현될 수 있지만, 하드웨어로의 구현, 및 소프트웨어와 하드웨어의 조합으로의 구현 역시 가능하며 고려되어진다.
이어 나오는 기술에서, 본 발명의 실시예는 하나 이상의 컴퓨팅 시스템에 의해 수행되는 단계(act)들을 참조하여 기술된다. 만약 이러한 단계들이 소프트웨어로 구현된다면, 이 단계를 수행하는 연관된 컴퓨팅 시스템의 하나 이상의 프로세서는 컴퓨터 실행가능한 명령어를 실행한 것에 대한 응답으로서 컴퓨팅 시스템의 동작을 지시한다. 이러한 동작의 일례는 데이터의 조작을 수반한다. 컴퓨터 실행가능 명령어(및 조작된 데이터)는 컴퓨팅 시스템(100)의 메모리(104)에 저장될 수 있다.
컴퓨팅 시스템(100)은 컴퓨팅 시스템(100)이 , 예를 들면, 네트워크(110)를 통해 다른 컴퓨팅 시스템들과 통신하도록 하는 통신 채널(108) 또한 포함할 수 있다. 통신 채널(108)은 통신 매체의 예시이다. 통신 매체는 통상적으로 반송파(carrier wave)나 다른 전송 메커니즘과 같은 피변조된 데이터 신호 내의 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터를 포함하고, 어떠한 정보 전송 매체를 포함한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 배선 접속(direct-wired connection)과 같은 유선 매체, 그리고 음향, RF, 적외선 및 기타 무선 매체와 같은 무선 매체를 포함하지만 이에 한정되지 않는다. 본원에서 사용된 컴퓨터 판독가능 매체는 저장 매체 및 통신 매체 모두를 포함한다.
본 발명의 범주 내에서의 실시예는 컴퓨터 실행 가능 명령어 또는 데이터 구조가 저장되어 있거나, 이들을 전송하기 위한 컴퓨터 판독가능 매체 역시 포함한다. 이러한 컴퓨터 판독가능 매체는 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 어떤 이용가능한 매체일 수 있다. 예로서, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 저장장치, 자기 디스크 저장장치 또는 다른 자기 저장 장치와 같은 물리적인 저장 장치 및/또는 컴퓨터 실행가능 명령어 또는 데이터 구조 형태의 원하는 프로그램 코드 수단을 운송 또는 저장하기 위해 사용될 수 있고 범용 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 임의의 기타 매체를 포함하지만 이에 한정되지는 않는다. 정보가 네트워크 또는 또다른 통신 연결(유선, 무선, 또는 두 가지의 조합)을 통해 컴퓨터로 전송 또는 제공되면, 컴퓨터는 이 연결을 컴퓨터 판독가능 매체로 간주한다. 따라서, 이러한 어떤 연결은 컴퓨터 판독가능 매체로서 적절히 명명된다. 앞서의 조합은 컴퓨터 판독가능 매체의 범주 내에 역시 포함되어야 한다.
컴퓨터 실행가능 명령어는, 예를 들면, 범용 컴퓨터, 특수 목적 컴퓨터, 또는 특수 목적 처리 장치가 특정한 기능 또는 기능의 그룹을 수행하게 하는 명령어 및 데이터를 포함한다. 본 내용이 구조적인 특징 및/또는 방법론적인 단계에 특정한 언어로 기술되어졌지만, 첨부된 청구항에 정의된 내용은 본원에서 기술된 구체적인 특징 또는 단계에 제한적일 필요는 없다. 대신, 본원에서 기술된 구체적인 특징 및 단계들은 청구항을 구현하는 예시적인 형태로서 개시된다.
도 2는 실행중인 운영 체제가 하이퍼바이저를 시작시키기 위한 방법의 흐름도(200)를 도시한다. 본 설명 및 청구항에서, "하이퍼바이저"는 하나 이상의 실행 중인 운영 체제와 보호된 물리적 리소스간에 배치되도록 구성된 소프트웨어 계층이다. 하이퍼바이저는 운영 체제들에 대해 보호된 물리적 리소스들을 기능적으로 다중화(multiplex)하고, 리소스를 가상의 방식으로 각각의 운영 체제에 대해 명시한다. 따라서, 하이퍼바이저는 컴퓨팅 시스템의 운영 체제와 물리적 리소스간에 특수한 종류의 추상 계층으로서 동작한다.
간단한 예시로서 예를 들면, 하나의 프로세서 및 1GB의 RAM을 가진 컴퓨팅 시스템 상에서 실행 중인 2개의 운영 체제가 있다고 가정한다. 하이퍼바이저는 프로세서 사이클의 절반 및 메모리의 절반(512MB의 RAM)을 각각의 운영 체제에 할당할 수 있다. 더욱이, 하이퍼바이저는 각각의 운영 체제에 어드레스된(addressed) RAM의 가상의 범위를 제공할 수 있어, 마치 2개의 운영 체제 모두에게 512MB의 RAM만이 사용가능한 것처럼 보이게 할 수 있다. 운영 체제가 물리적 리소스와 통신을 시도할 경우 및 물리적 리소스가 운영 체제와 통신을 시도할 경우, 하이퍼바이저는 적절한 버퍼링 및 변환을 수행하여 각각의 운영 체제로 하여금 마치 컴퓨팅 시스템 상에서 자신만이 유일한 운영 체제인 것처럼 실행환경을 느끼도록 허락할 것이다.
통상적인 하이퍼바이저의 구성과는 달리, 본 발명의 실시예는 운영 체제가 컴퓨팅 시스템의 물리적 리소스를 이미 발견했더라도, 운영 체제가 시작된 이후에 하이퍼바이저가 시작되도록 한다. 하이퍼바이저를 개시시키는 운영 체제는 발견된 물리적 리소스의 상태를 나타내는 정보를 하이퍼바이저에게 넘긴다. 따라서, 하이퍼바이저는 컴퓨팅 시스템의 물리적 리소스를 발견하기 위한 개별 코드를 가질 필요가 없다.
운영 체제가 하이퍼바이저를 시작시키고 컴퓨팅 시스템의 발견된 물리적 리소스에 관한 정보를 하이퍼바이저에게 넘기고나면, 운영 체제는 실행을 멈추고 제어권을 하이퍼바이저에게 넘길 수 있다. 이후 하이퍼바이저는 컴퓨팅 시스템의 물리적 리소스의 어떠한 보호된 리소스에 대한 향후 액세스 요청을 조절하기 위한 가상 머신 인스턴스를 규정할 수 있다. 가상 머신 인스턴스는 운영 체제가 갖고 있는 보호된 물리적 리소스에 대한 개념(the operating system's concept of the protected physical resources)과 일치하는 상태로 초기화된다. 이것이 이루어지면, 운영 체제는 가상 머신 환경에서 재개한다. 하지만, 가상 머신 환경에서, 운영 체제는 물리적 리소스와 직접적으로 인터페이스하기 보다는 하이퍼바이저를 통해 간접적으로 인터페이스한다. 운영 체제와 통신하기로 규정된 가상 머신은 운영 체제가 미리 물리적 리소스에 대해 발견한 정보를 존중(honor)하기 때문에, 이러한 변경은 운영 체제에 있어서 투명(transparent)하다.
몇몇 경우에서, 보호된 물리적 리소스들 중 일부에 대해서는, 운영 체제가 하이퍼바이저의 이용 없이 보호된 물리적 리소스를 발견하고 난 후, 이후에 투명한 방식(transparent manner)으로 하이퍼바이저를 통해 동일한 보호된 물리적 리소스로 간접적으로 인터페이스하기는 가능하지 않을 수 있다. 이 경우, 운영 체제는 이후 하이퍼바이저를 통해 동작할 수도 있다는 것을 이해하고, 따라서, 투명한 방식으로 이후 가상화될 수 없는 어떠한 물리적인 리소스를 무시하도록 구성될 수 있다. 예를 들면, 운영 체제 로더(operating system loader)는 다른 운영 체제 컴포넌트에게 특정한 보호된 물리적 리소스를 사용하지 말것을 알리기 위해 구성될 수 있다.
도 2를 재참조하면, 루트 운영 체제가 실행(단계(201))될 때 방법(200)이 시작된다. "루트(root)" 운영 체제는 하이퍼바이저가 이용가능하게 된 이후 시작될 수 있는 운영 체제와는 대조적으로, 하이퍼바이저를 실행시키는 운영 체제이다. 도 4A는 운영 체제(401)가 하이퍼바이저의 부재 시에 직접적으로(404) 컴퓨팅 시스템의 물리적 리소스(402)와 통신하는 동작 단계에서의 구성(400A)을 도시한다.
이후 루트 운영 체제는 도 2의 왼쪽 칼럼 내에 도시된 칼럼 헤더 "루트 운영 체제" 아래의 여러 단계들을 수행한다. 예를 들면, 루트 운영 체제는 적어도 하나의 물리적 리소스를 발견한다(단계(211A)). 운영 체제는 운영 체제의 시작 이후 곧바로 실행되는 컴퓨팅 시스템의 물리적 리소스를 발견하는 명령어를 보통 가지고 있다. 도 4A를 참조하면, 예를 들어, 운영 체제(401)는 물리적 리소스 상태(403)를 발견한다. 컴퓨팅 시스템의 물리적 리소스의 발견은 복잡한 태스크(task)일 수 있다.
하이퍼바이저 시작 이전의 상태에서 운영 체제를 재개하기 위해서, 운영 체제는 하이퍼바이저 시작 이전의 물리적 머신의 상태를 캡쳐(capture)한다. 일 실시예에서, 캡쳐된 상태는 모든 물리적 프로세서 및 물리적 APIC들의 상태를 포함한다. 물리적 프로세서 상태는 다음을 포함한다:
1. 범용 레지스터
2. 부동 소수점(floating point) 및 XMM 레지스터
3. 컨트롤 레지스터(CR).
4. 디버그 레지스터(DR).
5. 명령어 포인터(RIP), 스택 포인터(RSP) 및 플래그 레지스터(RFLAGS).
6. 세그먼트 베이스(base), 리밋(limit) 및 액세스 권한을 포함하는 CS, DS, SS, ES, FS, GS 및 TR 세그먼트에 대한 세그먼트 상태.
7. GDTR(Global Descriptor Table Register), IDTR(Interrupt Descriptor Table Register), LDTR(Local Descriptor Table Register).
8. KernelGsBase, Star, Lstar, Cstar, Sfmask, SysenterCs, SysenterEip, SysenterEsp, 및 ApicBase MSR을 포함하는 특정한 MSR(model specific register).
물리적 Local APIC 상태는 다음을 포함할 수 있다:
1. Local APIC ID
2. In-Request-Register(IRR)
3. In-Service-Register(ISR)
4. Task Priority Register(TPR)
또한, 하이퍼바이저가 시작될 때, 하드웨어의 소정의 다른 양태가 하이퍼바이저에게 부트 파라미터(boot parameter)로서 제공될 수 있다. 이는 다음을 포함할 수도 있다:
1. 런타임(runtime)에 핫플러그(hot-plugged)될 수 있는 논리 프로세서들을 포함하는, 현재의 및 잠재적인 논리 프로세서.
2. BIOS에서 하이퍼스레딩(hyperthreading)이 활성화되는지 비활성화되는지 여부.
3. 현재의 물리적인 RAM 범위 - 하이퍼바이저가 부팅되는 시점에서 RAM으로 차지되는(populated) 시스템 물리적 주소 범위
4. 물리적 노드(부트 타임에는 아무런 연관된 리소스도 없지만 런타임에 차지될 수 있는 노드들을 포함함)
5. 물리적 노드들 사이의 메모리 액세스 비율(memory access ratio)
6. 하이퍼바이저가 반드시 액세스해야 하는 특정 하드웨어의 특징의 주소(예를 들면, 전력 관리 타이머).
운영 체제는 운영 체제와 물리적 리소스 사이에 개입될 하이퍼바이저 또한 시작시킨다(단계(211B)). 도 4B를 예를들어 참조하면, 하이퍼바이저(405)는 루트 운영 체제(401)와 물리적 리소스(402) 사이에 개입된다. 이러한 시작의 일부로서, 운영 체제는 적어도 보호될 물리적 리소스의 상태 정보를 하이퍼바이저에 제공한다(단계(212)). 상태 정보는 하이퍼바이저가 자신에 의해 보호될 물리적 리소스의 관련 상태를 발견하기 위해 필요로 할 수 있는 모든 정보를 포함한다. 일 실시예에서, 상태 정보는 앞에서 기술된 캡쳐 상태를 포함할 수도 있다. 적어도, 상태 정보는 대응하는 물리적 리소스의 적어도 하나의 식별을 포함한다.
또한, 시작의 일부로서, 운영 체제는 제어권을 하이퍼바이저에게로 넘긴다. 이후, 하이퍼바이저는 도 2의 오른쪽 칼럼내에 도시된, 헤딩 "하이퍼바이저" 아래의 단계들을 수행한다. 구체적으로, 이후 하이퍼바이저는 루트 운영 체제에 대해 컴퓨팅 시스템의 보호된 물리적 리소스를 가상화하기에 필요한 태스크를 수행한다(단계(221)).
예를 들면, 하이퍼바이저는 루트 운영 체제를 위한 가상 머신 인스턴스를 생성할 수 있다(단계(231)). 도 4B를 참조하면, 블록(421)은 운영 체제(401)를 위한 가상 머신 인스턴스를 나타낸다. 초기화되고 사용가능해지고나면, 가상 머신 인스턴스(421)는 운영 체제(401)를 위한 물리적 리소스(402)를 위한 프록시(proxy)로서 가능할 것이다. 가상 머신 인스턴스(421)는 물리적 리소스를 위한 운영 체제(401)로부터 서비스 요청을 수신할 것이고, 가상 머신 인스턴스(421)가 액세스 가능한 상태 정보에 의존하여 요청의 적절한 변환 및 버퍼링을 수행할 것이다. 이후, 가상 머신 인스턴스(421)는 하이퍼바이저(405)가 물리적 리소스(402)로부터의 적절한 서비스를 요청하게 할 것이다. 또한, 잠재적으로, 가상 머신 인스턴스(421)는 필요한 적절한 변환 및 버퍼링으로 운영 체제에 요청의 결과를 회신할 것이다.
가상 머신 인스턴스(421)는 가상 머신 인스턴스가 액세스 가능한 상태 정보에 따라 다르게 동작할 것이다. 하이퍼바이저는 물리적 리소스(402)에 관해 운영 체제(401)가 이미 발견한 상태 정보를 존중한다. 따라서, 하이퍼바이저(405)는 운영 체제에 의해 제공된 상태 정보의 적어도 일부로 가상 머신 인스턴스(421)를 초기화한다(단계(232)). 예를 들면, 하이퍼바이저(405)는 운영 체제에 의해 제공된 캡쳐 상태로 가상 머신을 초기화할 수 있다. 이런 방식으로, 가상 머신 인스턴스(421)는 운영 체제에 의해 검출된 물리적 리소스를 나타내는 정보에 일관된 상태로 초기화된다. 이후 운영 체제는 가상 머신 환경에서 재개된다(단계(233) 및 단계(214)). 도 4B에 도시된 바와 같이, 이러한 환경에서, 운영 체제(401)가 물리적 리소스(402)와 직접 인터페이스를 이루는 대신, 물리적 리소스(402)는 가상 머신 인스턴스(421) 및 하이퍼바이저(405)의 이용을 통해 운영 체제(401)를 위해 가상화된다. 가상 머신(421)에 의해 사용되는 상태 정보가 운영 체제(401)에 의해 발견된 상태 정보와 일치하기 때문에, 일부 실시예에서 변경은 운영 체제(401)에게 투명하다.
일 실시예에서, 가상화는 물리적 프로세서의 동작을 에뮬레이트(emulate)하는 가상 프로세서 추상화(virtual processor abstraction)를 통해 제공된다. 마찬가지로, 가상 프로세서 추상화는 물리적 APIC의 동작을 에뮬레이트하는 가상 APIC을 제공한다. 이는 아래에서와 같이 얻어진다.
1. 가상 프로세서의 상태는 물리적 프로세서의 캡쳐 상태로 초기화된다.
2. 가상 APIC의 상태는 물리적 로컬 APIC의 캡쳐 상태로 초기화된다.
3. 하이퍼바이저는 운영 체제가 특별한(privileged) 물리적 하드웨어 리소스에 액세스하는 것을 막기 위해 인터셉트(intercept)를 설치한다. 예를 들면, 로컬 APIC가 하이퍼바이저의 시작 이전에 미리 배치된 게스트 물리적 주소(guest physical address)는 존재하지 않는 것으로 마크(mark)되어, 로컬 APIC로의 모든 액세스는 하이퍼바이저 내로 트랩(trap)된다.
하이퍼바이저가 시작되고나면, 하이퍼바이저는 동일한 운영 체제의 인스턴스들 또는 다른 운영 체제의 인스턴스들 중 하나인 추가적인 운영 체제를 실행할 수 있다. 예를 들어, 도 4C를 참조하면, 생략부호(414)에 의해 표현된 잠재적인 다른 운영 체제들 중 운영 체제(412 및 413)가 추가적으로 시작될 수 있다. 또한 도 3은 추가적인 운영 체제에 대해 물리적 리소스를 가상화하기 위한 방법의 흐름도(300)를 도시한다. 추가적인 운영 체제가 시작될 것이라면, 하이퍼바이저는 대응되는 가상 머신 인스턴스를 먼저 시작하고(단계(301)), 그를 통해 운영 체제가 이후 시작(단계(302))된다. 하이퍼바이저는 대응하는 추가 운영 체제에 대한 물리적 리소스를 가상화하기 위해 대응하는 가상 머신 인스턴스를 사용한다(단계(303)).
각 운영 체제가 그 운영 체제의 기동 시에 물리적 리소스의 발견을 수행하면, 정보에 대한 다양한 요청은 대응하는 가상 머신 인스턴스에 의해 인터셉트된다. 물리적 리소스에 연관된 실제 상태 정보를 찾는 대신, 대응하는 가상 머신은 가상화된 상태 정보를 운영 체제에게 제공한다.
가끔, 하이퍼바이저를 시작시키는 운영 체제가 다른 환경 타입 내에 있을 수 있다. 예를 들면, 아마 운영 체제는 32-비트 모드에서 동작하는 데에 반하여, 시작될 하이퍼바이저는 64-비트 모드에서 실행될 수 있고, 또는 그 역으로 성립될 수 있다. 마찬가지로, 운영 체제와 하이퍼바이저가 서로 다른 페이지 모드(paging mode)에서 동작할 수 있다. 본 발명의 일부 실시예들은, 운영 체제와 하이퍼바이저가 서로 다른 환경에서 동작할지라도, 운영 체제가 하이퍼바이저를 시작시키도록 허용한다.
도 5는 하이퍼바이저 시작의 준비에 있어 운영 체제가 하이퍼바이저의 환경에 진입하는 방법(500)의 흐름을 도시한다. 운영 체제가 시작되는 도 2의 단계(201)로부터, 운영 체제는 먼저 임의의 마스크 불가능한 인터럽트를 비활동 상태(inactionable)로 하고(단계(501)), 임의의 마스크 가능한 인터럽트를 마스크한다. 마스크 불가능한 인터럽트는 여러 다른 방식으로 비활동 상태로 될 수 있다. 어쨌든, 운영 체제가 하이퍼바이저 운영 환경으로 전이되고 있을 때, 하이퍼바이저의 초기 상태가 로드되기 이전에 어떠한 인터럽트 또는 예외사항도 발생하지 않도록 주의가 필요하다. 만약 운영 체제 환경을 떠난 이후지만 하이퍼바이저 환경에 진입하기 이전에 인터럽트 또는 예외사항이 발생하면, 인터럽트 디스크립터 테이블(interrupt descriptor table) 또는 스택의 부재로 인해, 프로세서는 인터럽트 또는 예외사항을 핸들링하지 못할 것이다. 대부분의 예외사항들은 소프트웨어가 발생시키는 것이기 때문에, 쉽게 피할 수 있다. 마스크 가능한 하드웨어 인터럽트는 RFLAGS 레지스터 내의 IF 비트를 클리어함으로써 이 프로세스 중에 금지될 수 있다.
마스크 불가능한 인터럽트(NMI)들은 다음 둘 중의 하나의 메커니즘에 의해 금지될 수 있다:
1. NMI를 자체 전송하고, IRET 명령어를 실행하지 않는다: 이는 운영 체제의 인터럽트 디스크립터 테이블 내의 NMI 핸들러 주소를 다른 핸들러를 포인팅하도록 임시로 변경함으로써 얻어질 수 있다. 이후 NMI는 현재 프로세서로 전송될 수 있다. 이는 프로세서가 NMI 핸들러로서 제공된 주소로 점프하도록 할 것이다. NMI 핸들러에서, 우리는 원래의 NMI 핸들러 주소를 복구하고 계속 진행할 수 있다. 이는 x86 아키텍처 상에서 NMI가 수신되고 난 후 IRET 명령어가 실행되기 전까지, NMI들이 마스크되기 때문에, 더욱 NMI를 효율적으로 마스크할 것이다.
2. 항상 유효한 인터럽트 디스크립터 테이블(IDT)과 스택으로 실행한다: 이는 임시 IDT 및 스택을 생성함으로써 얻어질 수 있다. 임시 페이지 테이블은 임시 IDT, NMI 핸들러 및 스택을 그들의 원래의 가상 주소와 그들 각각의 물리적 주소에서 맵핑할 수 있다. 이는 프로세서가 임시 페이지 테이블로 실행할 시에 NMI가 도착한 경우, 핸들러에게 정확히 전달될 것을 보증한다.
인터럽트가 마스크되거나 다르게 비활동 상태로 되고나면(단계(501)), 임시 가상 머신 인스턴스가 생성된다(단계(502)). 이후 운영 체제는 인터셉트를 유발하는 명령어들로 임시 가상 머신 인스턴스를 초기화한다(단계(503)). 인터셉트는 운영 체제로부터 하이퍼바이저로의 제어권의 전송이다. 임시 가상 머신 인스턴스가 재개되면(단계(504)), 가상 머신 인스턴스는 인터셉트를 유발하는 명령어를 실행하고, 따라서, 인터셉트가 발생된다(단계(505)). 결과적으로, 임시 가상 머신 인스턴스는 하이퍼바이저 상태를 이용하여 실행을 시작하고(단계(506)), 그로 인해, 운영 체제가 하이퍼바이저 모드에서 동작을 계속하도록 한다(단계(507)). 이후 운영 체제는 하이퍼바이저를 시작할 수 있다. 선택적으로, 운영 체제를 하이퍼바이저를 실행하기 위해 필요한 하이퍼바이저 모드로 넣기 위해서만 임시 가상 머신이 필요했기 때문에, 임시 가상 머신 인스턴스는 제거될 수 있다(단계(508)).
따라서, 본 발명의 실시예는 컴퓨팅 시스템 상에 존재하는 실행 중인 운영 체제가 이미 존재하고 난 이후에도, 하이퍼바이저가 시작될 것을 허용한다. 몇몇 실시예에서, 운영 체제는 운영 체제와 하이퍼바이저가 서로 다른 환경에 있더라도 하이퍼바이저를 시작할 수 있다.
본 발명은 발명의 정신 또는 실질적인 특징으로부터 벗어나지 않는 다른 특정한 형태에서 구현될 수 있다. 설명된 실시예는 모든 면에서 설명적이지만 제한적이지는 않는 것으로서 간주될 것이다. 그러므로, 본 발명의 범주는 앞에 나온 설명들에서보다는 첨부된 청구항들에 의해 가리켜진다. 청구항과 등가의 뜻과 범주 내에서의 모든 변경은 본 발명의 범주 내에서 포함될 것이다.

Claims (20)

  1. 컴퓨팅 시스템(100)의 하나 이상의 프로세서(102)에 의해 실행될 때, 상기 컴퓨팅 시스템(100)이 실행 중인 운영 체제를 이용하여 하이퍼바이저를 시작시키는 방법을 수행하게 하는 하나 이상의 컴퓨터 실행 가능 명령어들을 갖는 하나 이상의 컴퓨터 판독가능 매체(104)를 포함하는 컴퓨터 프로그램 제품으로서, 상기 방법은
    운영 체제(401)가 하이퍼바이저(405)를 실행시키는(211B) 단계; 및
    상기 시작된 하이퍼바이저(405)가 상기 하이퍼바이저(405)를 시작시킨 상기 운영 체제(401)에 대해 상기 컴퓨팅 시스템(100)의 적어도 하나의 물리적 리소스(402)를 가상화하는 단계(221)
    를 포함하는 컴퓨터 프로그램 제품.
  2. 제1항에 있어서,
    상기 하나 이상의 컴퓨터 판독가능 매체는 물리적 메모리 및 저장 매체인 컴퓨터 프로그램 제품.
  3. 제1항에 있어서,
    상기 하나 이상의 컴퓨터 판독가능 매체는 물리적 메모리 매체인 컴퓨터 프로그램 제품.
  4. 제1항에 있어서,
    상기 하나 이상의 컴퓨터 판독가능 매체는 물리적 저장 매체인 컴퓨터 프로그램 제품.
  5. 제1항에 있어서,
    상기 컴퓨터 실행가능 명령어들은, 상기 컴퓨팅 시스템의 하나 이상의 프로세서에 의해 실행될 때, 상기 컴퓨팅 시스템이
    상기 운영 체제가 상기 적어도 하나의 물리적 리소스를 발견하는 단계; 및
    상기 운영 체제가 상기 적어도 하나의 물리적 리소스에 대한 상태 정보를 상기 하이퍼바이저에 제공하는 단계 - 상기 상태 정보는 대응하는 물리적 리소스의 적어도 식별을 포함함 -
    를 더 수행하게 하는 구성을 더 갖는 컴퓨터 프로그램 제품.
  6. 제5항에 있어서,
    상기 컴퓨터 실행가능 명령어들은, 상기 컴퓨팅 시스템의 하나 이상의 프로세서에 의해 실행될 때, 상기 컴퓨팅 시스템이
    상기 하이퍼바이저가 상기 운영 체제를 위한 가상 머신 인스턴스를 시작하는 단계;
    상기 운영 체제에 의해 제공된 상태 정보로 상기 가상 머신 인스턴스를 초기화하는 단계;
    상기 가상 머신 인스턴스를 초기화한 후, 상기 하이퍼바이저가 상기 운영 체제를 재개하는 단계; 및
    상기 운영 체제가 재개된 후, 상기 하이퍼바이저가 상기 가상 머신 인스턴스를 이용하여 상기 적어도 하나의 물리적 리소스를 가상화하는 단계
    를 더 수행하게 하는 구성을 더 갖는 컴퓨터 프로그램 제품.
  7. 제6항에 있어서,
    상기 컴퓨터 실행가능 명령어들은, 상기 컴퓨팅 시스템의 하나 이상의 프로세서에 의해 실행될 때, 상기 컴퓨팅 시스템이 상기 컴퓨팅 시스템 상에서 시작되는 각각의 추가적인 운영 체제에 대해,
    상기 하이퍼바이저가 각각의 추가적인 운영 체제에 대한 대응하는 가상 머신 인스턴스를 시작하는 단계;
    상기 대응하는 가상 머신 인스턴스가 시작되고 난 후, 대응하는 추가적인 운영 체제를 시작하는 단계; 및
    상기 하이퍼바이저가 상기 대응하는 가상 머신 인스턴스를 이용하여 상기 대응하는 추가적인 운영 체제에 대해 상기 적어도 하나의 물리적 리소스를 가상화하는 단계
    를 더 수행하게 하는 구성을 더 갖는 컴퓨터 프로그램 제품.
  8. 제1항에 있어서,
    상기 컴퓨터 실행가능 명령어들은, 상기 컴퓨팅 시스템의 하나 이상의 프로세서에 의해 실행될 때, 상기 컴퓨팅 시스템이
    상기 시작된 하이퍼바이저가 상기 하이퍼바이저를 시작시킨 상기 운영 체제에 대해 상기 컴퓨팅 시스템의 적어도 하나의 물리적 리소스를 가상화시키는 단계
    를 더 수행하게 하는 구성을 더 갖는 컴퓨터 프로그램 제품.
  9. 제1항에 있어서,
    상기 컴퓨터 실행가능한 명령어는, 상기 컴퓨팅 시스템의 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 컴퓨팅 시스템이
    상기 운영 체제가 임시 가상 머신 인스턴스를 생성하는 단계;
    인터셉트를 발생시키는 명령어로 상기 임시 가상 머신 인스턴스를 초기화하는 단계;
    상기 초기화하는 단계 이후, 상기 임시 가상 머신 인스턴스를 재개하는 단계; 및
    상기 임시 가상 머신 인스턴스를 재개하는 단계로부터 초래되는 상기 인터셉트의 검출 시, 하이퍼바이저 상태를 이용하여 동작하도록 상기 임시 가상 머신 인스턴스를 개시시키는 단계
    를 수행하게 하는 컴퓨터 실행가능한 명령어를 더 포함하는 컴퓨터 프로그램 제품.
  10. 제9항에 있어서,
    상기 컴퓨터 실행가능한 명령어는, 상기 컴퓨팅 시스템의 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 컴퓨팅 시스템이, 상기 임시 가상 머신 인스턴스의 생성 이전에,
    임의의 마스크 불가능한 인터럽트를 비활동 상태로 하는 단계
    를 수행하게 하는 컴퓨터 실행가능한 명령어를 더 포함하는 컴퓨터 프로그램 제품.
  11. 제9항에 있어서,
    상기 컴퓨터 실행가능한 명령어는, 상기 컴퓨팅 시스템의 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 컴퓨팅 시스템이, 상기 임시 가상 머신 인스턴스가 상기 하이퍼바이저 상태를 이용하여 개시된 후,
    상기 하이퍼바이저를 시작하는 단계; 및
    상기 임시 가상 머신 인스턴스를 제거하는 단계
    를 수행하게 하는 컴퓨터 실행가능한 명령어를 더 포함하는 컴퓨터 프로그램 제품.
  12. 제11항에 있어서,
    상기 운영 체제 및 상기 하이퍼바이저 중 하나는 32 비트 모드에서 동작하는 반면, 상기 운영 체제 및 상기 하이퍼바이저 중 다른 하나는 64 비트 모드에서 동 작하는 컴퓨터 프로그램 제품.
  13. 제11항에 있어서,
    상기 운영 체제 및 상기 하이퍼바이저는 다른 페이지 메커니즘을 이용하여 동작하는 컴퓨터 프로그램 제품.
  14. 하이퍼바이저(405)를 시작시키기 위해 실행 중인 운영 체제(401)를 이용하여 하이퍼바이저(405)를 실행시키기 위한 방법(200)에 있어서,
    하이퍼바이저(405)가 상기 운영 체제(401)에 의해 검출된 복수의 물리적 리소스(212)를 나타내는 정보를 루트 운영 체제(401)로부터 수신하는 단계;
    상기 하이퍼바이저(405)가 상기 루트 운영 체제를 위해 가상 머신 인스턴스를 시작하는 단계(231);
    상기 운영 체제에 의해 검출된 상기 복수의 물리적 리소스를 나타내는 상기 정보에 일치하는 상태로 가상 머신을 초기화하는 단계(232); 및
    상기 루트 운영 체제가 상기 상태를 이용하여 초기화된 상기 가상 머신 인스턴스를 통하여 상기 복수의 물리적 리소스에 간접적으로 인터페이스하도록 상기 루트 운영 체제를 재개하는 단계(233)
    를 포함하는 실행 중인 운영 체제를 이용하여 하이퍼바이저를 실행시키는 방법.
  15. 제14항에 있어서,
    상기 하이퍼바이저가 실행되고 난 후,
    하나 이상의 추가적인 운영 체제를 시작하는 단계
    를 더 포함하는 실행 중인 운영 체제를 이용하여 하이퍼바이저를 실행시키는 방법.
  16. 제15항에 있어서,
    상기 하나 이상의 추가적인 운영 체제 각각에 대해,
    대응하는 추가적인 운영 체제와 인터페이스하기 위해 대응하는 가상 머신 인스턴스를 초기화하는 단계를 더 포함하는 실행 중인 운영 체제를 이용하여 하이퍼바이저를 실행시키는 방법.
  17. 운영 체제(401); 및
    상기 운영 체제(401)에 의해 시작되고 상기 운영 체제(401)에 대해 컴퓨팅 시스템의 적어도 하나의 물리적 리소스(402)를 가상화하도록 구성된 하이퍼바이저(405)
    를 포함하는 하나 이상의 컴퓨터 판독가능 매체(104)를 포함하는 컴퓨터 프로그램 제품.
  18. 제17항에 있어서,
    상기 하나 이상의 컴퓨터 판독가능 매체는 물리적 메모리 및 저장 매체인 컴퓨터 프로그램 제품.
  19. 제17항에 있어서,
    상기 하나 이상의 컴퓨터 판독가능 매체는 물리적 메모리 매체인 컴퓨터 프로그램 제품.
  20. 제17항에 있어서,
    상기 하나 이상의 컴퓨터 판독가능 매체는 물리적 저장 매체인 컴퓨터 프로그램 제품.
KR1020087027870A 2006-05-15 2007-05-14 실행 중인 운영 체제를 이용하여 하이퍼바이저를 실행하는 컴퓨터 프로그램 제품 및 그 방법 KR20090009866A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/383,455 US8176485B2 (en) 2006-05-15 2006-05-15 Launching hypervisor under running operating system
US11/383,455 2006-05-15

Publications (1)

Publication Number Publication Date
KR20090009866A true KR20090009866A (ko) 2009-01-23

Family

ID=38686563

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087027870A KR20090009866A (ko) 2006-05-15 2007-05-14 실행 중인 운영 체제를 이용하여 하이퍼바이저를 실행하는 컴퓨터 프로그램 제품 및 그 방법

Country Status (14)

Country Link
US (1) US8176485B2 (ko)
EP (1) EP2024826B1 (ko)
JP (1) JP2009537897A (ko)
KR (1) KR20090009866A (ko)
CN (1) CN101449240B (ko)
AU (1) AU2007249730A1 (ko)
BR (1) BRPI0711369A8 (ko)
CA (1) CA2648874A1 (ko)
ES (1) ES2744379T3 (ko)
MX (1) MX2008014548A (ko)
NO (1) NO20084432L (ko)
RU (1) RU2446447C2 (ko)
TW (1) TW200813833A (ko)
WO (1) WO2007133741A1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101105528B1 (ko) * 2010-06-29 2012-01-13 삼성에스디에스 주식회사 클라이언트 하이퍼바이저 기반의 광고 시스템에서 사용자에 의해 광고 제어가 가능한 광고용 단말장치 및 방법
KR101284791B1 (ko) * 2009-12-04 2013-07-10 한국전자통신연구원 휴대용 단말기를 이용한 컴퓨터 운영체제 구현 방법 및 그 장치
WO2013115565A3 (ko) * 2012-01-30 2013-10-10 엘지전자 주식회사 가상 머신 관리 방법 및 이를 위한 장치
US8736856B2 (en) 2009-12-23 2014-05-27 Samsung Electronics Co., Ltd. Method of executing additional extended feature of image forming apparatus and image forming apparatus to perform the same
US8887139B2 (en) 2009-11-06 2014-11-11 Samsung Electronics Co., Ltd. Virtual system and method of analyzing operation of virtual system

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8898355B2 (en) * 2007-03-29 2014-11-25 Lenovo (Singapore) Pte. Ltd. Diskless client using a hypervisor
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
US8310336B2 (en) 2008-10-10 2012-11-13 Masimo Corporation Systems and methods for storing, analyzing, retrieving and displaying streaming medical data
US8156298B1 (en) * 2007-10-24 2012-04-10 Adam Stubblefield Virtualization-based security apparatuses, methods, and systems
US9262194B2 (en) * 2008-06-10 2016-02-16 Apple Inc. Virtual machine communications
US8032680B2 (en) * 2008-06-27 2011-10-04 Microsoft Corporation Lazy handling of end of interrupt messages in a virtualized environment
US9323894B2 (en) 2011-08-19 2016-04-26 Masimo Corporation Health care sanitation monitoring system
US10007758B2 (en) 2009-03-04 2018-06-26 Masimo Corporation Medical monitoring system
EP2404253B1 (en) 2009-03-04 2019-09-18 Masimo Corporation Medical monitoring system
US10032002B2 (en) 2009-03-04 2018-07-24 Masimo Corporation Medical monitoring system
US20100234718A1 (en) * 2009-03-12 2010-09-16 Anand Sampath Open architecture medical communication system
US8738781B2 (en) 2009-06-22 2014-05-27 Red Hat Israel, Ltd. Launching a virtual machine associated with a client during startup
US8281018B2 (en) * 2009-06-22 2012-10-02 Red Hat Israel, Ltd. Method for automatically providing a client with access to an associated virtual machine
US8135818B2 (en) * 2009-06-22 2012-03-13 Red Hat Israel, Ltd. Automatic virtual machine migration in mixed SBC/CBC environment
US8341213B2 (en) * 2009-06-22 2012-12-25 Red Hat Israel, Ltd. Method for improving boot time of a client having a virtualized operating environment
US8839239B2 (en) * 2010-06-15 2014-09-16 Microsoft Corporation Protection of virtual machines executing on a host device
US9075642B1 (en) * 2011-09-30 2015-07-07 Emc Corporation Controlling access to resources using independent and nested hypervisors in a storage system environment
US8958420B1 (en) * 2012-03-30 2015-02-17 Juniper Networks, Inc. Methods and apparatus for virtualizing switch control plane engine
RU2538286C9 (ru) * 2013-02-06 2018-07-12 Закрытое акционерное общество "Крафтвэй корпорэйшн ПЛС" Способ запуска гипервизора в компьютерной системе на ранней стадии загрузки компьютера
RU2537814C9 (ru) * 2013-02-06 2018-07-13 Закрытое акционерное общество "Крафтвэй корпорэйшн ПЛС" Способ запуска гипервизора в компьютерной системе на ранней стадии загрузки компьютера
CN104714821B (zh) * 2013-12-17 2018-07-31 华为技术有限公司 操作系统实例创建方法及装置
US10720195B2 (en) 2015-09-25 2020-07-21 Intel Corporation Efficient memory activation at runtime
RU2609761C1 (ru) * 2015-09-30 2017-02-02 Акционерное общество "Лаборатория Касперского" Способ выполнения кода в режиме гипервизора
US10108446B1 (en) * 2015-12-11 2018-10-23 Fireeye, Inc. Late load technique for deploying a virtualization layer underneath a running operating system
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US10318311B2 (en) * 2016-06-30 2019-06-11 Amazon Technologies, Inc. Memory allocation techniques at partially-offloaded virtualization managers
US10127068B2 (en) 2016-06-30 2018-11-13 Amazon Technologies, Inc. Performance variability reduction using an opportunistic hypervisor
DE112018007104T5 (de) * 2018-03-20 2020-10-29 Mitsubishi Electric Corporation Informationsverarbeitungsgerät, Verfahren und Programm
DE112018007748T5 (de) 2018-12-18 2021-04-08 Intel Corporation Berechnungsverfahren und Vorrichtung mit Mehrphasen/stufen-Start
CN112579014A (zh) * 2019-09-27 2021-03-30 宝能汽车集团有限公司 基于Hypervisor的多屏显示方法、系统以及车辆、存储介质
RU2770136C1 (ru) * 2021-04-22 2022-04-14 Общество С Ограниченной Ответственностью "Кировский Региональный Центр Деловой Информации" Способ защиты компьютерной системы от несанкционированного доступа к информации, реализуемый на уровне аппаратной платформы посредством механизмов виртуализации, и устройство для его осуществления

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US6530078B1 (en) 1998-03-26 2003-03-04 Alexander V. Shmid Virtual machines in OS/390 for execution of any guest system
US6567933B1 (en) * 1999-02-19 2003-05-20 Texas Instruments Incorporated Emulation suspension mode with stop mode extension
US6892383B1 (en) 2000-06-08 2005-05-10 International Business Machines Corporation Hypervisor function sets
US6990663B1 (en) 2000-06-08 2006-01-24 International Business Machines Corporation Hypervisor virtualization of OS console and operator panel
US7093239B1 (en) * 2000-07-14 2006-08-15 Internet Security Systems, Inc. Computer immune system and method for detecting unwanted code in a computer system
US7085705B2 (en) 2000-12-21 2006-08-01 Microsoft Corporation System and method for the logical substitution of processor control in an emulated computing environment
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
GB0112781D0 (en) 2001-05-25 2001-07-18 Global Continuity Plc Method for rapid recovery from a network file server failure
US7428485B2 (en) * 2001-08-24 2008-09-23 International Business Machines Corporation System for yielding to a processor
JP2003202964A (ja) 2002-01-09 2003-07-18 Hitachi Ltd 計算機システムの制御方法、計算機システム、記憶装置の制御方法及び記憶装置
US20050160423A1 (en) * 2002-12-16 2005-07-21 Bantz David F. Enabling a guest virtual machine in a windows environment for policy-based participation in grid computations
US7913251B2 (en) 2003-12-12 2011-03-22 International Business Machines Corporation Hypervisor virtualization of OS console and operator panel
US20060070065A1 (en) * 2004-09-29 2006-03-30 Zimmer Vincent J Memory support for heterogeneous virtual machine guests
US8060683B2 (en) 2004-12-17 2011-11-15 International Business Machines Corporation System, method and program to preserve a cache of a virtual machine
US7647589B1 (en) * 2005-02-07 2010-01-12 Parallels Software International, Inc. Methods and systems for safe execution of guest code in virtual machine context

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8887139B2 (en) 2009-11-06 2014-11-11 Samsung Electronics Co., Ltd. Virtual system and method of analyzing operation of virtual system
KR101284791B1 (ko) * 2009-12-04 2013-07-10 한국전자통신연구원 휴대용 단말기를 이용한 컴퓨터 운영체제 구현 방법 및 그 장치
US8736856B2 (en) 2009-12-23 2014-05-27 Samsung Electronics Co., Ltd. Method of executing additional extended feature of image forming apparatus and image forming apparatus to perform the same
KR101105528B1 (ko) * 2010-06-29 2012-01-13 삼성에스디에스 주식회사 클라이언트 하이퍼바이저 기반의 광고 시스템에서 사용자에 의해 광고 제어가 가능한 광고용 단말장치 및 방법
WO2013115565A3 (ko) * 2012-01-30 2013-10-10 엘지전자 주식회사 가상 머신 관리 방법 및 이를 위한 장치
KR20140099873A (ko) * 2012-01-30 2014-08-13 엘지전자 주식회사 가상 머신 관리 방법 및 이를 위한 장치
US9891937B2 (en) 2012-01-30 2018-02-13 Lg Electronics Inc. Method for managing virtual machine and device therefor

Also Published As

Publication number Publication date
BRPI0711369A8 (pt) 2017-01-17
AU2007249730A1 (en) 2007-11-22
ES2744379T3 (es) 2020-02-24
CN101449240B (zh) 2012-06-06
EP2024826B1 (en) 2019-06-26
US20070266389A1 (en) 2007-11-15
EP2024826A1 (en) 2009-02-18
US8176485B2 (en) 2012-05-08
TW200813833A (en) 2008-03-16
NO20084432L (no) 2008-12-12
CN101449240A (zh) 2009-06-03
JP2009537897A (ja) 2009-10-29
BRPI0711369A2 (pt) 2011-11-01
MX2008014548A (es) 2008-11-27
EP2024826A4 (en) 2012-07-11
RU2446447C2 (ru) 2012-03-27
CA2648874A1 (en) 2007-11-22
RU2008145040A (ru) 2010-05-20
WO2007133741A1 (en) 2007-11-22

Similar Documents

Publication Publication Date Title
KR20090009866A (ko) 실행 중인 운영 체제를 이용하여 하이퍼바이저를 실행하는 컴퓨터 프로그램 제품 및 그 방법
US10108446B1 (en) Late load technique for deploying a virtualization layer underneath a running operating system
US8327390B2 (en) VEX—virtual extension framework
US7434224B2 (en) Plural operating systems having interrupts for all operating systems processed by the highest priority operating system
US7945436B2 (en) Pass-through and emulation in a virtual machine environment
KR101019937B1 (ko) 보안 운영 시스템 스위칭
US8024742B2 (en) Common program for switching between operation systems is executed in context of the high priority operating system when invoked by the high priority OS
US8321931B2 (en) Method and apparatus for sequential hypervisor invocation
KR100940335B1 (ko) 멀티프로세서에서 복수의 인스트럭션 스트림/복수의 데이터 스트림 확장을 인에이블링하는 방법, 시스템 및 기계-판독 가능한 매체
US20050246453A1 (en) Providing direct access to hardware from a virtual environment
US11256534B2 (en) System and method for trapping system calls for remote execution
US20080155542A1 (en) Operating Systems
US20070074223A1 (en) Operating systems
EP3048551B1 (en) Systems and methods for active operating system kernel protection
JP2004258840A (ja) 仮想化されたi/oデバイスをもつ計算機システム
Jain Linux Containers and Virtualization
JP2007507779A (ja) オペレーティングシステム
US20060064528A1 (en) Privileged resource access
Im et al. On-Demand Virtualization for Post-Copy OS Migration in Bare-Metal Cloud
US11526358B2 (en) Deterministic execution replay for multicore systems
Im et al. On-demand virtualization for live migration in bare metal cloud
CA2540658A1 (en) Operating systems
JP2005056019A (ja) 情報処理装置

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid