KR100984203B1 - 가상 머신 모니터의 구성요소의 특권을 해제하는 시스템 및방법 - Google Patents
가상 머신 모니터의 구성요소의 특권을 해제하는 시스템 및방법 Download PDFInfo
- Publication number
- KR100984203B1 KR100984203B1 KR1020077015035A KR20077015035A KR100984203B1 KR 100984203 B1 KR100984203 B1 KR 100984203B1 KR 1020077015035 A KR1020077015035 A KR 1020077015035A KR 20077015035 A KR20077015035 A KR 20077015035A KR 100984203 B1 KR100984203 B1 KR 100984203B1
- Authority
- KR
- South Korea
- Prior art keywords
- hypervisor
- micro
- svm
- virtual machine
- platform
- 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
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
일부 실시예에서, 본 발명은 가상 머신 모니터의 구성요소의 특권을 해제하고 특권이 해제된 서비스 가상 머신으로 하여금 선택된 트랩 이벤트를 처리할 수 있게 하는 시스템을 포함한다. 본 발명의 일 실시예는 하드웨어 가상화 지원부를 구비하는 플랫폼에서 동작하는 하이브리드 VMM이다. 하이브리드 VMM은 하이퍼바이저 기반 및 호스트 기반 VMM 아키텍처의 특징들을 이용한다. 적어도 하나의 실시예에서, 전통적인 VMM의 기능성은 마이크로-하이퍼바이저(MH)라고 지칭되는 소형의 플랫폼-종속적인 부분 및 서비스 가상 머신(SVM)이라고 지칭되는 하나 이상의 플랫폼-독립적인 부분으로 나누어진다. SVM 및 기타 VM은 ISA 특권 레벨에 대한 액세스를 갖는데 반해, 마이크로-하이퍼바이저는 임의의 SVM보다 고급의 가상 머신(VM) 특권 레벨에서 동작한다. 기타의 실시예들이 기술되며 또한 청구된다.
가상 머신, 가상 머신 모니터, 특권 레벨(previlege level).
Description
본 발명의 실시예는 일반적으로 가상화 플랫폼(virtualization platform)에 관한 것이며, 상세하게는 가상 머신 모니터(virtual machine monitor)의 구성요소들을 감소된 특권 레벨(privilege level)에서 동작시키는 시스템 및 방법에 관한 것이다.
가상화 플랫폼에서 가상 머신을 관리하기 위한 메커니즘은 다양하다. 한 가지 관리 기술은 시스템에 가상 머신 모니터를 배치하는 것이다. 가상 머신 모니터에 대하여 두 가지의 일반적인 아키텍처가 있다. 하나는, 특권화된 하이퍼바이저(privileged hypervisor; 가상 머신 모니터)가 시스템 내의 다른 모든 소프트웨어를 제어하는, 하이퍼바이저 아키텍처(hypervisor architecture)이다. 하이퍼바이저는 가상 머신(VM; 본 명세서에서 게스트 VM으로 지칭됨)에서 돌아가는 소프트웨어에 제공하고자 하는 모든 장치에 대한 고유 드라이버 및 모델을 포함하여야 한다. 이러한 요건은 상기 VMM 아키텍처가 갖는 문제점이 되어 왔다. 하이퍼바이저 아키텍처에 있어서, VMM은 하부 플랫폼에 대하여 완전한 제어권을 가지며, 게스트 VM이 플랫폼 하드웨어에 액세스하는 것을 제한할 수 있다. 하이퍼바이저는 모든 하드웨어에 대한 액세스를 갖는다. 게스트 VM은 하이퍼바이저가 허용한 경우에만 하드웨어에 직접 액세스할 수 있다. 하이퍼바이저 시스템은, 설계에 따라, 게스트 VM이 하드웨어에 직접 액세스하는 것을 막을 수 있다. 하이퍼바이저를 구현하는 경우, 각각의 물리적 장치에 대한 장치 드라이버도 구현되어야 한다. 물리적 장치가 변경되면(예를 들면 다른 버전의 장치로 대체되는 경우) 새로운 장치 드라이버 또는 대체 장치 드라이버가 하이퍼바이저에 존재하여야 한다. 통상적으로, 모든 운영 체제는 VM에서 동작한다. VM은 서로 다른 방식으로 특권을 부여받을 수 있다. 예를 들면, VM1은 장치 #1에 대한 액세스를 갖는 반면 VM2는 장치 #2에 대한 액세스를 가질 수 있다.
VMM에 대한 두 번째의 일반적인 아키텍처는 호스트 VMM(hosted VMM)이다. 본 아키텍처에서, VMM은 호스팅 운영 체제(OS)에 긴밀하게 연관되며 호스팅 OS에 의해 제공되는 서비스를 이용하여 가상화 기능을 수행한다. 본 아키텍처에서, 호스팅 OS는 플랫폼에 대하여 완전한 제어권을 보유하며, VMM 구성요소는 플랫폼의 게스트 VM의 제어권을 보유한다. 환언하면, VMM 구성요소는 하부 하드웨어를 직접 제어하지 않는다. VMM은 호스팅 OS가 제공하는 서비스를 이용하여 하부 하드웨어를 액세스한다. VMM의 안정성은 호스팅 OS의 안정성과 동일하다. 호스팅 OS는 필요한 모든 장치 드라이버를 포함한다. VMM은 게스트 VM에 제공되는 모든 장치에 대한 모델을 구현하여야 한다. 이러한 고급 아키텍처로 구현된 VMM은, 특정 호스팅 OS에 대한 의존 관계로 인해 이식성(portability)에 제약을 받는다. 또한, 스케줄링을 수행하는 호스팅 OS에 대한 의존 관계가 존재한다. VMM은 게스트 VM의 스케줄링을 제어하나, 그것이 호스팅 OS에 의해 얼마만큼의 시간 동안 제공되는지는 제어하지 않는다. 예를 들면, 호스팅 OS가 매 밀리세컨드마다 VMM을 작동시키도록 하는 요청은 가능하지 않을 수 있다.
오늘날 몇몇 가상화 제품들이 존재하고 있다. 예를 들면, 하이퍼바이저 기반 아키텍처, ESX 서버는 VMware®, Inc.로부터 입수 가능하다. Microsoft® 및 VMware®, Inc. 모두 호스트 기반 아키텍처 소프트웨어를 제공하며, Microsoft는 VirtualPC 및 VirtualServer를 제공하고, VMWare®는 VMWorkstation 및 GSX 서버를 제공한다. 최근 이들 소프트웨어 시스템은 하드웨어 가상화 지원부(hardware virtualization support)를 구비하지 않는 서버 또는 PC 상에 로드될 수 있다.
본 발명의 특징과 장점들은 이하의 상세한 설명으로부터 명백해질 것이다.
도 1은 전통적인 하이퍼바이저 가상 머신 모니터(VMM) 아키텍처 플랫폼을 도시하는 블록도.
도 2A-B는 본 발명의 일 실시예에 따른, IA-32 아키텍처 플랫폼 및 하드웨어 가상화 지원부를 구비하는 플랫폼에서의 다양한 특권 레벨을 도시하는 도.
도 3은 본 발명의 일 실시예에 따른 하이브리드 아키텍처 VMM을 도시하는 블록도.
도 4는 본 발명의 일 실시예에 따른, 입/출력(I/O) 동작 처리에 대하여 특권이 해제된 액세스를 갖는 서비스 가상 머신을 위한 예시 방법을 도시하는 흐름도.
도 5는 본 발명의 일 실시예에 따른, 마이크로-하이퍼바이저(micro- hypervisor)에 의해 수행되는 예시 방법을 도시하는 흐름도.
본 발명의 일 실시예는, 선택된 기능성을 제공하기 위해 가상 머신 모니터의 구성요소에 대한 특권을 해제시키고 특권 해제된 서비스 가상 머신을 인에이블시키는 것과 관련된 시스템 및 방법이다. 본 발명의 일 실시예는 높은 이식성 및 신뢰성을 위해 가상 머신 모니터(VMM)를 구성할 수 있는 수단을 제공한다. 본 발명의 일 실시예는 하이퍼바이저 기반 및 호스트 기반 VMM 아키텍처 모두의 특징을 이용하는 하이브리드 VMM이다. 적어도 하나의 실시예에서, 전통적인 VMM의 기능성은 마이크로-하이퍼바이저(MH)라고 지칭되는 소형의 플랫폼-종속적인 부분 및 서비스 가상 머신(SVM)이라고 지칭되는 하나 이상의 플랫폼-독립적인 부분으로 나누어 질 수 있다. 이러한 하이브리드 VMM 아키텍처는 종래의 VMM 소프트웨어 아키텍처를 능가하는 발전성, 유효성, 보안성, 신뢰성 및 이용성의 이점들을 제공한다.
본 명세서에서 본 발명의 "일 실시예" 또는 "실시예"로 표현된 것은, 본 발명의 적어도 하나의 실시예에 포함된 실시예와 관련하여 기술된 특정한 특징, 구조 또는 속성들을 의미한다. 따라서, 본 명세서의 여러 위치에서 나타나는 "일 실시예에서"라는 문구가 모두 동일한 실시예를 지칭하는 것은 아니다.
설명의 목적으로, 본 발명의 명확한 이해를 돕기 위해 특정한 구성 및 상세 내용이 나열된다. 그러나, 본 명세서에 나타난 특정 내용을 이용하지 않고도 본 발명의 실시예들을 실시할 수 있음은 당업자에게 자명할 것이다. 또한, 본 발명을 모호하게 하지 않기 위해 공지된 특징들은 생략되거나 단순화될 수 있다. 또한 본 설명을 통해 다양한 예시들이 제공될 수 있다. 이들은 단지 발명의 특정 실시예에 대한 설명일 뿐이다. 본 발명의 범주는 주어진 예시에 한정되지 않는다.
본 발명의 실시예에서, 마이크로-하이퍼바이저는, SVM을 포함하는 가상 머신(VM)들 간의 요청을 프락싱하며, 격리 및 보안 정책을 집행하는 역할을 하는 모듈이다. 마이크로-하이퍼바이저의 설계는 고유 플랫폼 지식 및 특권화된 리소스(예를 들면, 플랫폼 칩셋 등)에 대한 액세스를 필요로 한다. 도 2A-B에 관하여 이하 논의되는 바와 같이, 마이크로-하이퍼바이저는 가장 특권화된 모드에서 동작한다. 마이크로-하이퍼바이저는 시스템 부트(boot)에 있어서 조기에 로드되는 모듈(OS 모듈과 유사함)로 구현되거나, 호스팅 OS로부터의 드라이버로서 런칭되거나, 시스템 펌웨어의 일부로서 런칭될 수 있다.
도 2A-B에 관하여 논의되는 바와 같이, SVM은 VM에 있어서 특권이 해제된 모드에서 동작하는 플랫폼 독립적인 모듈이다. SVM은 상용 OS 및 장치 드라이버, 또는 하나 이상의 플랫폼 독립적인 펌웨어 모듈 주변에 구성될 수 있다. SVM은 장치 가상화, 실제 하드웨어 또는 다른 SVM에 대한 요청의 프락싱과 같은 서비스를 제공한다.
도 1은 전통적인 하이퍼바이저 VMM 아키텍처 플랫폼(100)을 도시하는 블록도이다. 다수의 게스트 VM들(101, 103, 105 및 107)이 플랫폼(100) 상에서 동시에 동작하고 있을 수 있다. 가상 머신 모니터(110)는 프로세서/플랫폼 가상화 계층(111)을 경유하여 하드웨어(120)에 대한 게스트 VM의 액세스를 제어한다. 다수의 가상 장치 모델(113 및 115)이 VMM(110) 내에 존재할 수 있다. 도 2A-B에 관하여 이하 논의되는 바와 같이, VMM(110)은 가장 특권화된 레벨에서 동작할 수 있다. 이하에서 추가로 논의되는 바와 같이, VMM(110)은 파일 시스템, 메모리 및 모든 장치에 대한 액세스를 제어한다. VMM(110)은 일반적으로 플랫폼 상의 하드웨어 장치 각각에 대한 장치 드라이버(119)를 갖는다.
VMM(110) 및 게스트 VM(101, 103, 105 및 107)은 플랫폼 하드웨어(120) 상에서 실행된다. 플랫폼 하드웨어(120)는 프로세서(122), 메모리(124) 및 하나 이상의 I/O 장치(126 및 128)를 포함할 수 있다. 플랫폼 하드웨어(120)는 퍼스널 컴퓨터(PC), 메인프레임, 휴대 장치, 휴대용 컴퓨터, 셋톱박스, 또는 기타 임의의 컴퓨팅 시스템이 될 수 있다.
프로세서(122)는 소프트웨어를 실행시킬 수 있는 임의의 유형의 프로세서, 이를테면 마이크로프로세서, 디지털 신호 처리기(digital signal processor), 마이크로컨트롤러 등과 같은 것일 수 있다. 도 1은 그러한 단 하나의 프로세서(122)를 도시하고 있으나, 플랫폼 하드웨어(120)에 하나 이상의 프로세서가 존재할 수 있으며 하나 이상의 프로세서는 다중 스레드, 다중 코어 등을 포함할 수 있다.
메모리(124)는 하드 디스크, 플로피 디스크, RAM, ROM, 플래시 메모리 또는 프로세서(122)에 의해 판독 가능한 기타 임의의 유형의 매체가 될 수 있다. 메모리(124)는 본 발명의 방법 실시예를 실행시키기 위한 명령을 저장할 수 있다.
하나 이상의 I/O 장치(126 및 128)는, 예를 들면, 시스템 버스(예를 들면, PCI(Peripheral Component Interconnect), ISA(Industry Standard Architecture), AGP(Advanced Graphics Port)) 상의 네트워크 인터페이스 카드, 통신 포트, 비디오 컨트롤러, 디스크 컨트롤러, 또는 칩셋 로직 또는 프로세서에 탑재된 장치(예를 들면, 실시간 클럭, 프로그램 가능한 타이머, 성능 카운터), 또는 플랫폼 하드웨어(120) 상의 기타 임의의 장치가 될 수 있다. 하나 이상의 I/O 장치(126 및 128)는 I/O 명령 또는 메모리 맵드 I/O 액세스(memory mapped I/O access)를 통해 액세스되거나, 당 분야에 공지된 기타 임의의 수단을 통해 액세스될 수 있다.
Intel Pentium® 4의 ISA(이하 IA-32 ISA)를 포함하여, 대부분의 명령 집합 아키텍쳐(instruction set architecture; ISA)는 명령 집합 아키텍쳐 내의 특권 레벨 개념을 이용하여 설계된다. 이러한 특권 레벨은 본 명세서에서 ISA 특권 레벨로 지칭된다. 도 2A 및 2B를 참조하면, 다양한 ISA 특권 레벨을 포함하는 플랫폼을 도시하는 블록도가 나타나있다. 예를 들면, IA-32 ISA는 네 개의 ISA 특권 레벨을 가지며, 이는 링 레벨 ring-0(301), ring-1(303), ring-2(305) 및 ring-3(307)로 지칭된다. IA-32 ISA에서, ring-0(301)은 최상위 특권을 부여받은 ISA 특권 레벨이며 ring-3(307)은 최하위 특권을 부여받은 ISA 특권 레벨이다.
ISA 특권 레벨은 OS에 의해 사용자 모드와 커널 모드 간의 기능성을 구분하는데 이용된다. 종래의 시스템에서, 프로세서 명령 집합 아키텍처는 일반적으로 OS 코드에 하드웨어에 대한 완전한 제어권을 부여하도록, 즉 ring-0 모드(301)로 설계된다. ISA는 OS로 하여금 하위 ISA 특권 레벨, 즉 ring-1(303), ring-2(305) 및 ring-3(307)에서 동작하는 다른 소프트웨어에 대한 컨테이너를 생성할 수 있도록 한다. 일반적으로, 종래의 시스템에서, OS 코드는 최상위 ISA 특권 레벨(즉, ring-0(301))에서 동작하고 애플리케이션은 최하위 ISA 특권 레벨(즉, ring-3(307))에서 동작한다. 장치 드라이버는 Microsoft® WindowsTM과 같은 기존 OS에서 일반적으로 최상위 ISA 특권 레벨에서 동작한다. 종래의 OS에 있어서, 점점 더 많은 코드가 최상위 ISA 특권 레벨에서 동작되고 있다. 최상위 ISA 특권 레벨에서 실행되는 코드의 크기가 증가함에 따라, 코드 내에서 가능한 상호작용의 복잡성과 코드의 유효 복잡성이 증가한다. 이러한 복잡성의 증가로 인해 결함이 있는 소프트웨어로 인한 시스템 충돌이 증가할 수 있다. 또한 기존의 시스템은 구성요소 간의 명확한 인터페이스가 부족하고 임의의 규정된 인터페이스의 이용을 집행하는 것이 열악하다는 문제가 있다..
소형의 특권화된 코어 및 특권이 해제된 서비스 구성요소를 이용하는 일반적인 접근 방안이 일부 시스템에서 시도되어 왔다. 예를 들면, 마이크로커널 OS 연구(Jochen Liedtke의 "실질적인 마이크로커널에 대하여", 1996년 9월/39권, No. 9 'ACM의 통신' 참조)에서 OS의 일부에 대한 특권을 해제하는 것과 유사한 기법을 적용하는 시도가 있어왔다. 마이크로커널은 매우 작고, 완전히 특권화된 OS 부분이다. 완전히 특권화된 부분은 (IA-32 용어로) ring-0를 사용하기 때문에, 마이크로커널이 최상위 ISA 특권 레벨에 단독으로 존재할 수 있도록 OS의 나머지 부분은 특권이 해제되어야 한다. OS는 하위 ISA 특권 레벨에서 동작하도록 변경되어야만 한다.
마이크로커널은 운영 체제의 구성요소를 하위 ISA 특권 레벨에서 동작하는 컨테이너로 이동시킴으로써 이들 구성요소를 구분하여, 분리된 컨테이너의 구성요소들이 상호 간에 직접 영향을 미치거나 마이크로커널의 동작에 영향을 미칠 수 없도록 한다. 종래의 시스템에 있어서 몇몇 마이크로커널이 구현되어 왔으나, 이들은 느리고 복잡하며 또한 가상화 플랫폼을 위해 개발된 것이 아니다.
플랫폼이 하드웨어 가상화 지원부를 구비하는 경우, 특권을 두 개의 특권-공간으로 구분하는 새로운 방법이 도입될 수 있다. 첫 번째 특권 공간은 상기 기술된 바와 같이 ISA 특권 레벨이다. 두 번째 특권 공간은 본 명세서에서 VM 특권 레벨로 지칭된다. 일 실시예에서, 두 개의 VM 특권 레벨이 존재한다. 최상위 VM 특권 레벨은 루트 오퍼레이션(root operation; 311)으로 지칭되며 하위 VM 특권 레벨은 논-루트 오퍼레이션(non-root operation; 320)으로 지칭된다. 일 실시예에서, VMM 또는 마이크로-하이퍼바이저는 루트 오퍼레이션(311)에서 동작한다. 게스트 VM은 논-루트 오퍼레이션(320)에서 동작한다. 상위 VM 특권 레벨에서 동작하는 소프트웨어는, 하위 VM 특권 레벨에서 동작하는 소프트웨어의 ISA 특권 레벨과 상관없이, 하위 VM 특권 레벨에서 동작하는 소프트웨어를 제어할 수 있다. 일 실시예에서, 임의의 VM 특권 레벨에서의 소프트웨어는 프로세서의 ISA 특권 레벨 아키텍처(예를 들면, IA-32 ISA의 ring-0(301a))를 이용할 수 있다. 그러나, 하위 VM 특권 레벨(예를 들면, 논-루트 오퍼레이션(320))에서 동작하는 ring-0 소프트웨어는 여전히 상위 VM 특권 레벨(예를 들면, 루트 오퍼레이션(311))에서 동작하는 소프트웨어에 의해 제어될 수 있다.
일 실시예에서, 주어진 프로세스에 대한 VM 특권 레벨 및 ISA 특권 레벨은 상호 독립적이다. 즉, VMM의 구성요소는 최상위 VM 특권 레벨인 동시에 최하위 ISA 특권 레벨에서 동작할 수 있다. 최상위 VM 특권 레벨이지만 감소된 ISA 특권 레벨(예를 들면, IA-32 ISA에서의 ring-3)에서 실행되는 VMM 코드의 능력은, 하위 VM 특권 레벨에서 동작하는 게스트 소프트웨어의 상태를 직접 제어하거나 조작하는데 있어서 그 능력이 제한될 수 있다. 이러한 제한은 가상화 아키텍처에 의해 발생하거나(예를 들면, 하드웨어는 감소된 ISA 특권 레벨 코드가 새로운 VM을 시작하는 것을 막을 수 있다) 최상위 VM 특권 레벨에서 동작하는 최상위 ISA 특권 레벨 코드에 의해(예를 들면, 게스트 소프트웨어의 메모리를 액세스하는 것으로부터 하위 ISA 특권 레벨 코드의 페이지 테이블을 구성함으로써) 발생할 수 있다.
도 3은 본 발명의 실시예에 따른 하이브리드 아키텍처 VMM을 도시하는 블록도이다. 하이브리드 아키텍처 VMM은 하이퍼바이저 기반 및 호스트 기반 VMM 아키텍처 모두의 요소를 이용한다. 도 1의 VMM(110) 및 마이크로-하이퍼바이저(210)는 최상위 VM 특권 레벨에서 동작하며 각각 플랫폼 하드웨어(120 및 220)에 대하여 완전한 제어권을 갖는다.
하이브리드 아키텍처는 SVM(210)과 같은 하나 이상의 서비스 가상 머신(SVM)을 이용할 수 있다. SVM(201)은 사용자 레벨 VMM(211) 및 장치 모델(213)을 포함할 수 있다. SVM(201)의 장치 모델(213)은, 마찬가지로 SVM(201) 내에 있는 하드웨어 드라이버(219)와 상호작용할 수 있다. 하드웨어 드라이버(219)는, 이하 논의되는 바와 같이, 마이크로-하이퍼바이저(210)의 제어하에 플랫폼 하드웨어(220)와 통신한다. 도 3은 그러한 하나의 SVM(201)만을 도시하고 있으나, 이하 논의되는 바와 같이, 시스템(200)에 하나 이상의 SVM이 존재할 수 있다.
마이크로-하이퍼바이저(210), 서비스 VM(201) 및 게스트 VM(203, 205 및 207)은 플랫폼 하드웨어(220) 상에서 실행된다. 플랫폼 하드웨어(220)는 프로세서(222), 메모리(224) 및 하나 이상의 I/O 장치(226 및 228)를 포함할 수 있다. 플랫폼 하드웨어(220)는 PC, 메인프레임, 휴대 장치, 휴대용 컴퓨터, 셋톱박스 또는 기타 임의의 컴퓨팅 시스템이 될 수 있다.
프로세서(222)는, 마이크로프로세서, 디지털 신호 처리기, 마이크로컨트롤러 등과 같이, 소프트웨어를 실행시킬 수 있는 임의의 유형의 프로세서일 수 있다. 도 3은 그러한 하나의 프로세서(222)만을 도시하고 있으나, 하나 이상의 프로세서가 플랫폼 하드웨어(220)에 존재할 수 있으며, 하나 이상의 프로세서는 다중 스레드, 다중 코어 등을 포함할 수 있다.
메모리(224)는 하드 디스크, 플로피 디스크, RAM, ROM, 플래시 메모리, 또는 프로세서(222)에 의해 판독 가능한 기타 임의의 유형의 장치 매체가 될 수 있다. 메모리(224)는 본 발명의 방법 실시예를 실행시키기 위한 명령을 저장할 수 있다.
하나 이상의 I/O 장치(226 및 228)는, 예를 들면, 시스템 버스(예를 들면, PCI, ISA, AGP) 상의 네트워크 인터페이스 카드, 통신 포트, 비디오 컨트롤러, 디스크 컨트롤러, 또는 칩셋 로직 또는 프로세서에 탑재된 장치(예를 들면, 실시간 클럭, 프로그램 가능한 타이머, 성능 카운터), 또는 플랫폼 하드웨어(220) 상의 기타 임의의 장치가 될 수 있다. 하나 이상의 I/O 장치(226 및 228)는 I/O 명령 또는 메모리 맵드 I/O 액세스를 통해 액세스되거나, 당 분야에 공지된 기타 임의의 수단을 통해 액세스될 수 있다.
일 실시예에서, 마이크로-하이퍼바이저(210)는 플랫폼 하드웨어(220)에 대한 완전한 액세스 및 제어권을 보유한다. 종래의 호스트 기반 및 하이퍼바이저 기반 VMM 아키텍처에서, VMM의 장치 드라이버는 완전히 특권화된 모드에서 동작할 수 있으며, 따라서 장치 액세스 및 기타 서비스는 높은 위험이 따르는 연산이 된다. 하이브리드 아키텍처에서, 본 명세서에 기술된 바와 같이, SVM(201)은 완전히 특권화된 레벨에서 동작하지 않으며, 따라서 서비스 및 장치 액세스는 플랫폼 무결성에 대하여 낮은 위험성을 갖는다. SVM(201)은 장치 드라이버, 파일 시스템 및 모든 서비스들을 제공할 수 있으나, 이러한 특징은, VM 내에서, 특권이 해제된 모드에서 수행되어야 한다. SVM(201)은, 호스트 OS가 호스트 기반 아키텍처에서 동작하지만, 호스트 상에서 직접 동작하는 것이 아니라 VM 내에서 동작한다는 동일한 목적에 기여한다. 감소된 VM 특권 레벨에서 VMM의 부분들을 동작시키는 것의 이점은 VMM의 감소된 VM 특권 레벨 부분이 최상위 ISA 특권 레벨(예를 들면, IA-32 ISA의 ring-0)에서 동작하는 경우에도 존재한다.
하이브리드 아키텍처의 일 실시예에서, 시스템 및 서비스를 제어하는 호스트 OS는 존재하지 않는다. 대신, 소형 마이크로-하이퍼바이저가 최상위 VM 특권 레벨에서 동작하는 중요한 서비스를 제어하고, 하나 이상의 SVM이 하위 VM 특권 레벨에서 동작하는 기타의 서비스를 제공할 수 있다. 예를 들면, SVM은 하드웨어 상호작용을 위한 서비스를 제공할 수 있다. SVM은 하부 하드웨어에 대하여 제한된 액세스를 보유할 수 있다. 예를 들면, SVM은 SVM이 제어하는 하드웨어 장치에만 제한된 액세스를 보유할 수 있다. 이와 같이, 로그 애플리케이션(rogue application)이 하드웨어 장치에 대해 인증받지 않은 액세스를 갖지 못하도록 하드웨어 제어를 구획할 수 있다.
본 발명의 실시예는 종래의 OS를 수정하지 않고 게스트 VM 내에서 동작하도록하면서도 사용자가 희망하는 애플리케이션에 대한 인터페이스 및 서비스를 제공할 수 있도록 한다. 이제 모든 서비스는 서비스를 처리하기에 적절한 SVM을 호출하는 마이크로-하이퍼바이저를 통해 실행될 수 있다. 본 발명의 일 실시예에서, 이는 상위 VM 특권 레벨(즉, 도 2의 루트 오퍼레이션(311))이 플랫폼 하드웨어 상에 구현되기 때문에 가능하다. 예를 들면, IBM 370 모델 컴퓨터는 본 발명의 실시예를 지원하는 가상화 플랫폼이다.
VMM은, 메모리, I/O 장치, DMA 엔진 등을 포함하여, 플랫폼의 임의의 특정 구성요소를 게스트 VM이 직접 액세스하는 것을 허용하거나 또는 막을 수 있다. 마이크로-하이퍼바이저는 게스트 VM에게 특정 리소스에 대한 액세스를 부여할 수 있다. 예를 들면, 적어도 하나의 저장 장치(즉, 디스크 드라이브)에 대한 액세스를 갖는 저장 서비스를 제공하는 SVM이 있을 수 있다. 플랫폼 확장을 이용하여, 예를 들면, 그러한 저장 장치에 대한 액세스가 부여된 SVM은 플랫폼 상의 다른 하드웨어 장치를 액세스하는 것이 금지될 수 있다.
일 실시예에서, SVM은 게스트 VM과 동일한 VM 특권 레벨에서 동작한다. 그러나, 마이크로-하이퍼바이저는 SVM에게 모든 VM에게 접근 가능한 것은 아닌 하부 하드웨어 플랫폼의 구성요소를 액세스할 수 있는 능력을 제공할 수 있다. 마이크로-하이퍼바이저는 VM이 특정 하드웨어 장치 또는 메모리를 액세스하는 것을 막기 위해 가상화 플랫폼의 메커니즘을 이용한다. 예를 들면, 특정 I/O 포트에 대한 모든 액세스는 마이크로-하이퍼바이저로의 천이(transition)를 야기할 수 있다.
일부 플랫폼의 하드웨어 아키텍처는 DMA 액세스가 모든 물리적 메모리를 참조하는 것을 막을 수 없다. VM에게 DMA를 수행할 수 있는 장치에 대한 액세스가 부여된 경우, 상기 장치는 메모리 내의 어디에서건 DMA를 수행하도록 프로그램될 수 있다.
일 실시예에서, 하드웨어 아키텍처는, VMM이 DMA가 액세스할 수 없는 물리적 메모리 내의 페이지를 특정할 수 있는 메커니즘을 제공할 수 있다. 이와 같이, 페이지가 모든 장치로부터 보호될 수 있다. 그러나, CPU 버스로부터의 액세스는 차단되지 않는다. 이것으로 잘못된 또는 악의적인 장치에 대한 보호를 수행할 수 있다.
다른 실시예에서, 하드웨어 아키텍처는, VMM으로 하여금 물리적 메모리의 특정 페이지에 대한 특정 장치로부터의 DMA 액세스를 허용하고, 다른 페이지에 대하여는 허용하지 않도록 하면서, VMM이 장치 단위 기반(per-device basis)에서 DMA가 액세스할 수 없는 물리적 메모리 내의 페이지를 특정할 수 있는 메커니즘을 제공할 수 있다.
가상화를 위한 하드웨어 지원부는 VMM에 의해 이용되는 다양한 설비를 포함할 수 있다. 일 실시예에서, VMM 소프트웨어는 게스트 VM이 동작하는 동안 발생할 수 있는 이벤트를 특정할 수 있으며, 이는 VMM으로 돌아가는 천이를 유발하게 된다. 게스트 VM으로부터 VMM으로의 천이는 VM 탈출(VM exit)이라고 지칭된다. VMM으로부터 게스트 VM으로의 천이는 VM 진입(VM entry)으로 지칭된다. 일 실시예에서, VM 진입은 VMM에 의해 특정 프로세서 명령을 실행시킴으로써 개시된다. 하드웨어는 VMM에 의해 설정된 정책에 기초하여 플랫폼이 최상위 특권 모드(즉, 상위 VM 특권 레벨)와 하위 특권화된, 즉 "특권 해제된(deprivileged)" 모드(즉, 하위 VM 특권 레벨) 사이를 이리저리 천이할 수 있도록 한다. VM 탈출을 유발하도록 VMM에 의해 특정될 수 있는 이벤트의 집합은 그 범위가 광범위할 것이다. 이벤트로는, VMM이 물리적 메모리를 가상화(즉, VMM이 게스트 VM의 페이지 테이블을 제어할 수 있음)하는데 이용할 수 있는 모든 이벤트, 인터럽트 및 익셉션(exception), I/O 명령, 머신 특유 레지스터(machine specific register; MSR) 및 제어 레지스터(예를 들면, IA-32 ISA의 CR0)와 같은 특정 프로세서 상태에 대한 액세스 등을 포함한다. 이러한 방식으로, VMM은 특정 플랫폼 기능성을 가상화할 수 있다.
예를 들면, 게스트 VM에서 동작하는 OS가 I/O 명령을 수행하는 경우, VMM은 이러한 I/O 이벤트가 VMM으로의 VM 탈출을 이용하는 천이(즉, 특권화된 모드)를 유발한다고 지정함으로써 그러한 이벤트를 트랩할 수 있다. 일 실시예에서, VMM은, 게스트 VM으로 하여금 일부 I/O 포트를 액세스할 수 있도록 하고 다른 포트에 액세스하는 것은 금지하여, 어느 I/O 포트 액세스가 VM 탈출을 유발하여야 하는지 특정할 수 있다. 그러한 VM 탈출이 발생하는 경우, VMM은 I/O 장치를 가상화하거나 서비스를 제공할 수 있고 필요한 I/O 동작을 수행할 수 있다. 이는 게스트 VM에게 명백할 것이다. 본 발명의 일 실시예에서, 최상위 VM 특권 레벨에서 동작하는 마이크로-하이퍼바이저는 하위 VM 특권 레벨에서 동작하는 SVM에 대한 서비스를 위한 요청을 프락싱할 수 있다. 그러면 SVM은, 예를 들면 저장 장치를 액세스하는 서비스를 제공한다.
일 실시예에서, 가상화 플랫폼은 제어 구조부 내의 데이터에 따라 감소된 VM 특권 레벨에서 동작하는 소프트웨어의 동작을 제어할 수 있으며, 상기 제어 구조부는 가상 머신 제어 구조부(virtual machine control structure; VMCS)로 지칭된다. VMCS는 이벤트의 각 유형에 대하여, 그것이 VMM으로의 천이를 유발하여야 하는지를 특정하는 일단의 제어를 포함한다. 예를 들면, I/O 포트 액세스에 대해, IA-32 플랫폼에서 액세스 가능한 I/O 포트 각각에 대하여 VMM이 설정 또는 해제할 수 있는 비트가 존재한다. 직접 액세스될 수 있거나 혹은 직접 액세스 될 수 없는 포트의 리스트가 존재한다. 또한, VMCS는, 기타 제어에 부가하여, VM 진입 및 VM 탈출 중에 상태(state)가 어떤 방식으로 관리되는지 또한 VM의 소프트웨어가 어떤 방식으로 동작하는지를 결정하는 제어를 포함할 수 있다. 이러한 정책을 규정하기 위해 다른 메커니즘 및/또는 데이터 구조가 사용될 수도 있음은 당업자에게 명백할 것이다.
도 4는 본 발명의 일 실시예에 따른, 입/출력(I/O) 동작을 처리하는, 특권이 해제된 서비스 가상 머신에 대한 예시 프로세스를 도시한다. 하드웨어 가상화 지원부를 구비하는 플랫폼에서, 마이크로-하이퍼바이저(MH)는 게스트 VM을 시작시키고 게스트 VM에 제어권을 트랜스퍼한다(즉, VM 진입을 수행한다)(블록 401). 게스트 VM은 입/출력(I/O) 동작을 실행시키고자 할 때까지 예정된 바대로 동작한다(블록 403).
I/O 동작이 특권화된 I/O 포트로의 액세스를 필요로 하는지에 대하여 결정이 이루어진다(블록 405). 상기 기술된 바와 같이, 특권화된 액세스를 필요로 하는 I/O 포트의 리스트는 가상 머신 제어 구조부(VMCS), 또는 다른 방식으로 구현된 구조부 내에 이뉴머레이트된다(enumerated). I/O 포트에 대한 액세스는 VM 탈출을 유발할 수 있다. 상기 액세스가 보호된 I/O 포트에 대한 것이 아닌 경우, I/O 액세스는 차단되지 않으며 상기 액세스는 해당 하드웨어와 직접 통신한다(블록 407). 그 후 또 다른 I/O 동작이 시도될 때까지 게스트 VM 내에서 실행이 계속된다(블록 403).
I/O 뿐만 아니라 다양한 하드웨어 이벤트가 이러한 방식으로 트랩될 수 있음은 당업자에게 명백할 것이다. 이하의 설명에서, VMM으로의 천이를 유발하도록 만들어진 임의의 이벤트는 "서비스 요청(request for service)"으로 지칭된다. VMM으로의 천이는 트랩으로 지칭된다. "서비스 요청"이라는 용어는, 게스트 VM이 자신을 제어하는 VMM에 대해 인식하지 못하고 자신이 플랫폼 하드웨어 상에서 직접 동작한다고 믿는 경우에도 사용된다. 마이크로-하이퍼바이저 및 SVM(들)이 제공하는 "서비스"는, 예를 들면, 플랫폼 장치의 에뮬레이션, 또는 상위 레벨 서비스의 제공 등을 포함한다. 예를 들면, 일 실시예에서, SVM은 VM 간 통신(inter-VM communication)을 위한 공유 메모리 버퍼를 수립하고 관리하는 설비를 제공할 수 있다. 또 다른 실시예에서, 향상된 시스템 성능, 보안성, 신뢰성 등을 위하여 SVM은 마이크로-하이퍼바이저 및 SVM의 존재에 대해 인식하고 있는 게스트 VM에게 파일 시스템 기능성을 제공할 수 있다. 서비스 요청은 I/O 명령을 실행하거나, 보호된 메모리 세그먼트를 액세스하거나, 마이크로-하이퍼바이저 또는 SVM과 명백히 통신하는 게스트 VM에 의해 개시될 수 있다(예를 들면 VM 탈출을 야기하는 명령의 실행을 통해). 도 4와 관련한 나머지 논의는 I/O 액세스 시도를 처리하는 것에 대한 상세 내용이지만, 이는 특정 예시일 뿐이며 본 명세서에 기술된 발명의 적용성을 한정하는 것이 아님을 이해하여야 한다. SVM으로부터의 VM 탈출은 특별하게 취급될 수 있음을 유의한다. 예를 들면, SVM으로부터의 특정 VM 탈출은 SVM(즉, 제2 SVM)의 상호작용을 필요로 하지 않을 수 있으며, 마이크로-하이퍼바이저에서 직접 처리될 수 있다. 이에 관하여는 이하에서 자세히 설명한다.
I/O 액세스 시도가 특권화된 I/O 포트에 대한 것이라면, 플랫폼은 게스트 VM 실행으로부터 마이크로-하이퍼바이저 실행으로 천이한다(블록 411). 마이크로-하이퍼바이저는 VM 탈출을 유발하는 이벤트를 식별하고 어떤 서비스 VM(SVM)이 I/O 액세스를 처리하여야 하는지를 결정한다(블록 413). 마이크로-하이퍼바이저는 I/O 액세스를 처리하기 위해 VM 진입을 이용하여 선택된 SVM에 진입한다(블록 415).
특정 요청을 처리하기에 적절한 SVM을 결정하는 것은 다수의 기준(criteria)에 기초하여 이루어진다. 일 실시예에서, 모든 요청을 처리하는 하나의 SVM이 존재한다. 이 경우, 요청에 대한 적절한 SVM을 결정하는 일은 문제가 되지 않는다. 다른 실시예에서, 각각 특정 유형의 요청을 처리하는 복수의 SVM이 존재한다. 그러한 실시예에서, 마이크로-하이퍼바이저는 프로세서 또는 메모리 상태를 검사하거나 게스트 VM으로부터의 VM 탈출의 원인(일 실시예에서 프로세서에 의해 VM 탈출의 일부로서 제공됨)을 검사함으로써 요청의 유형을 결정하여야 한다. 이러한 유형 정보를 이용하여, 마이크로-하이퍼바이저는 요청 유형을 담당 SVM(들)에 매핑하는 매핑 테이블 또는 기타의 데이터 구조부를 참조한다. 또 다른 실시예에서, 복수의 SVM이 동일한 유형의 요청을 처리할 수 있다. 마이크로-하이퍼바이저는 로드 밸런싱, 프로세서 유사성(affinity) 또는 기타 선택 기준에 기초하여 그러한 복수의 가용 SVM 중에서 선택할 수 있다. 일부 실시예에서, 그러한 매핑 테이블의 내용은, SVM에 의해 적절하게 적용된 정책을 집행만 하도록 동작하는 마이크로-하이퍼바이저를 이용하여, 하나 이상의 SVM에 의해 결정될 수 있다.
SVM은 I/O 액세스를 적절하게 가상화한다(블록 417). 각각이 상이한 형태의 I/O 또는 기타 서비스를 처리하는, 여러 개의 SVM이 존재할 수 있다. 따라서, SVM의 실행은 플랫폼 상의 다른 I/O 장치에 대한 인증받지 않은 액세스를 허용하지 않는다. 요청된 I/O의 가상화가 완료되면, SVM은 다시 마이크로-하이퍼바이저로 제어권이 천이되도록 한다(블록 419). 일 실시예에서, 이러한 천이는 특정 명령을 실행하거나 VM 탈출을 유발하는 특정 이벤트를 일으키는 게스트 VM의 소프트웨어에 의해 개시될 수 있다. 마이크로-하이퍼바이저는, 이하 논의되는 바와 같이, 가상화된 I/O의 결과가 게스트 VM에 의해 액세스 가능함을 확인한 후, 제어권을 게스트 VM으로 반환한다(블록 421). 게스트 VM은 차후의 I/O 액세스 시도가 발생할 때까지 일반적인 동작을 계속한다(블록 403).
일 실시예에서, 게스트 VM으로부터 마이크로-하이퍼바이저로의 천이를 유발하는 일부 이벤트는 서비스 VM으로의 천이를 유발하지 않는다. 일부 이벤트는 보안성 또는 성능상의 이유로 마이크로-하이퍼바이저에서 처리될 수 있다. 서비스 VM은 그것을 대신하여(on its behalf) 기능성을 수행하도록 마이크로-하이퍼바이저를 구성할 수 있다. 마이크로-하이퍼바이저는 서비스 VM에 의해 특정된 정책을 지원하는 메커니즘을 구현한다.
예를 들면, 물리적 메모리의 가상화와 관련하여 빈번하게 발생하는 이벤트는 개선된 시스템 성능을 촉진시키기 위해 (서비스 VM으로의 천이를 제거함으로써) 마이크로-하이퍼바이저 내에서 처리될 수 있다. 예를 들면, 시스템 메모리를 관리하는 역할을 하는 특정 서비스 VM은 특정 게스트 VM이 물리적 메모리의 일단의 페이지에 대한 액세스를 보유하고 있다는 것을 표시할 수 있다. 그러면 마이크로-하이퍼바이저는, 게스트 VM이 그에 할당되지 않은 메모리를 액세스하는 것을 막으면서 적절한 기능성을 제공하기 위해 필요한 바대로, 게스트 VM이 이러한 물리적 메모리의 페이지를 이용하는 것을 관리하는 역할을 한다. SVM-특유한 정책(즉, 특정 페이지집합을 이용하는 것)을 구현하는데 이용되는 알고리즘에 따라, 게스트가 물리적 메모리의 페이지를 액세스할 때 게스트 VM으로부터 마이크로-하이퍼바이저로의 천이가 빈번하게 발생할 수 있다. 마이크로-하이퍼바이저는 서비스 VM을 수반하지 않고 (또한 서비스 VM으로 제어를 천이시키는 것의 지연시간을 피하지 않고) 이벤트를 처리하여 게스트 VM으로 제어를 반환할 수 있다.
일 실시예에서, 마이크로-하이퍼바이저는 서비스 VM과의 상호작용 없이 가상 머신 시스템의 무결성을 보장하는데 필요한 보안 기능성을 제공한다. 예를 들면, 게스트-물리적 주소를 호스트-물리적 주소로 해석하는 일은 보호되어야 하며 따라서 마이크로-하이퍼바이저에 의해 수행되어야 한다. 다른 실시예에서, 마이크로-하이퍼바이저는, DMA(direct memory access)에 이용되는 어떠한 물리적 주소도 메모리의 보호되거나 제한된 영역에 대한 것이 아님을 확실히 하기 위해 플랫폼 상의 DMA 컨트롤러를 프로그램하려는 모든 시도를 조정할 수 있다. 이러한 경우, SVM은 상기 해석을 수행하도록 활성화되지 않으나, 상기 주소가 해석될 수 없는 경우 SVM에 통지가 될 것이다.
또 다른 실시예에서, 마이크로-하이퍼바이저는, SVM을 수반하지 않고, 게스트 VM에 의한 사용을 위해 보안 메커니즘을 제공할 수 있다. 예를 들면, 마이크로-하이퍼바이저는 데이터 패킷을 암호화하라는 게스트 VM으로부터의 서비스 요청에 응답할 수 있다. 일 실시예에서, 마이크로-하이퍼바이저는, 임의의 SVM을 포함하여, 어떤 VM도 신뢰 플랫폼 모듈(trusted-platform module; TPM)과 같은 플랫폼-기반 보안 장치를 액세스하는 것을 허용하지 않을 수 있다.
일 실시예에서, 마이크로-하이퍼바이저는 제한된 수의 장치 드라이버 및 장치 모델을 포함한다. 이는 최상위 VM 특권 레벨에서 동작하는 코드의 크기를 증가시킨다. 그러나, 이와 같이 장치 드라이버 및 장치 모델을 포함하면 게스트 VM에 의해 빈번하게 액세스되는 장치에 대하여 큰 성능상의 이점을 제공할 수 있다. 예를 들면, 하드웨어 인터럽트가 발생할 때마다 플랫폼 인터럽트 제어기(예를 들면, Intel® 82093AA I/O Advanced Programmable Interrupt Controller)가 여러 번 액세스될 수 있다. 마이크로-하이퍼바이저 내에 인터럽트 제어기에 대한 장치 모델 및 드라이버를 포함함으로써, (마찬가지로 이러한 기능성을 제공할 수 있는) 서비스 VM으로의 천이가 감소하여, 시스템 성능을 향상시킨다. 마이크로-하이퍼바이저 내에 이러한 장치에 대한 장치 모델 및 드라이버를 포함함으로써, 서비스 VM은 모든 스케줄링 및 인터럽트 라우팅 결정(interrupt routing determination)을 수행할 필요가 없어, 또한 시스템 성능을 향상시킨다.
SVM에서 서비스를 제공하는 것의 일부로서, 마이크로-하이퍼바이저 또는 SVM은 서비스를 요청하는 게스트 VM에게 소정 형태의 결과 또는 데이터를 제공할 필요가 있을 수 있다. 예를 들면, I/O 명령을 이용하는 게스트 VM에 의해 액세스되는 장치의 에뮬레이션에 있어서, SVM 또는 마이크로-하이퍼바이저는 프로세서 레지스터 또는 메모리 내의 예정된 값을 게스트 VM로 반환함으로써 게스트 VM에게 결과를 제공할 수 있으며, 게스트 VM은 프로세서 ISA에 의해 제공된 바대로 상기 결과를 액세스할 수 있게 된다. 예를 들면, IA-32 ISA에 있어서, I/O 장치를 액세스하기 위해(즉, I/O 장치로부터 값을 읽어오기 위해) IN 명령이 사용될 수 있다. IA-32 ISA에서, IN 명령의 결과는, 사용된 IN 명령의 특정 형태에 따라, IN 명령의 피연산자(operand)로 주어진 프로세서 레지스터 또는 메모리 위치에 반환될 수 있다. SVM 또는 마이크로-하이퍼바이저는 게스트 VM으로 제어권을 반환하기 전에 ISA의 이러한 특성을 에뮬레이트할 수 있다. SVM에 의해 제공되는 서비스가 보다 복잡한 경우, 데이터 또는 결과는 메모리 내의 위치를 통해 반환되거나 당 분야에 공지된 임의의 기타 메커니즘을 이용하여 반환될 수 있다.
도 5는 본 발명의 일 실시예에 따른, 마이크로-하이퍼바이저 내에서 가상화 이벤트를 직접 처리하는 예시 프로세스를 도시한다. 예시 실시예에서, 마이크로-하이퍼바이저는 게스트 VM(501)으로 제어권을 천이시킨다. 일 실시예에서, 이러한 천이는 마이크로-하이퍼바이저에 의해 프로세서 명령을 실행시킴으로써 개시된다. 마이크로-하이퍼바이저는 요청 서비스를 수행하기 위해 VM 탈출을 기다리거나 일반적인 모니터링 기능을 주기적으로 수행하는 동작을 지속할 수 있다.
가상화 이벤트(예를 들면, 하드웨어 인터럽트 발생, 피제어 장치 또는 메모리 위치에 대한 게스트 VM의 액세스 요청, 또는 가상화 이벤트를 생성하도록 지정된, 선택된 시스템 서비스 요청)가 일어나는 경우, VM 탈출이 발생할 수 있다. 그러면 마이크로-하이퍼바이저는 이러한 가상화 이벤트에 기인하여 제어권을 인수한다(503).
마이크로-하이퍼바이저는, 통상 보안성 또는 성능상의 목적으로, 가상화 이벤트가 마이크로-하이퍼바이저에 의해 직접 처리되어야 하는지를 결정한다(505). 마이크로-하이퍼바이저가 가상화 이벤트를 처리하여야 하는 경우, 상기 이벤트가 처리(507)된 후 제어권은 게스트 VM에 반환될 수 있다(501). 일 실시예에서, 게스트 VM으로 제어권을 반환하는 것은 VM 진입 명령을 실행하는 마이크로-하이퍼바이저에 의해 개시된다.
일부 경우, 가상화 이벤트는 SVM으로부터의 완료 통지(completion notification)일 수 있다. SVM은 게스트 VM 내에서 실행되기 때문에, 이들은 다른 게스트 VM과 동일한 방식(통상적으로 VM 탈출을 유발하도록 지시된 명령을 실행하는 SVM에 의해 유발될 수 있는 VM 탈출)으로 마이크로-하이퍼바이저에게 제어권을 트랜스퍼할 수 있다. 마이크로-하이퍼바이저는 이벤트가 이전의 SVM 요청의 완료를 나타내는 것인지를 판단한다(509). 가상화 이벤트가 이전의 SVM 요청의 완료를 나타내는 것이면, 마이크로-하이퍼바이저는, 상기 기술된 바와 같이, 임의의 필요한 데이터 또는 결과를 본래의 SVM 요청을 유발한 게스트 VM에게 트랜스퍼한다(511). 이러한 천이는 일반적으로 VM 진입 명령을 실행함으로써 수행된다.
가상화 이벤트가 SVM 완료 이벤트는 아니지만, 새로운 서비스 또는 액세스 요청인 경우, 마이크로-하이퍼바이저는 상기 이벤트를 처리하기에 적절한 SVM을 활성화시킨다(513). SVM이 게스트 VM에서 실행되기 때문에, 이러한 천이는 통상 VM 진입이다.
마이크로-하이퍼바이저에 의한 다른 동작도 가능하다는 것은 당업자에게 자명하다. 예를 들면, 마이크로-하이퍼바이저가 게스트 VM 실행의 스케줄링을 처리하는 경우, 마이크로-하이퍼바이저는 이벤트를 처리하기 위해 SVM을 활성화(513)하는 대신, 오히려 또 다른 게스트 VM에 실행 시간을 부여하도록 이러한 요청을 지연시키면서, 다른 게스트 VM을 스케줄링하기로 할 수 있다. 만일, 예를 들어, SVM이 다른 요청을 대기하면서 블록되어 새로운 요청을 즉시 처리할 수 없는 경우, 마이크로-하이퍼바이저는 상기와 같은 흐름의 동작을 취할 수 있다. 이와 달리, 상위 우선권을 가진 게스트 VM이 실행을 기다리고 있는 경우(예를 들면 실시간 게스트 VM) 마이크로-하이퍼바이저는 상기의 스케줄링을 수행할 수 있다.
본 명세서에 설명된 기술은 임의의 특정한 하드웨어 또는 소프트웨어 구성에 한정되지 않으며, 임의의 컴퓨팅 환경, 가전제품 또는 프로세싱 환경에 적용 가능하다. 본 기술은 하드웨어, 소프트웨어 또는 이들의 조합으로 구현될 수 있다. 본 기술은, 휴대용 또는 고정 컴퓨터, PDA, 셋톱박스, 휴대전화 및 페이저, 가전제품 장치(DVD 플레이어, 개인용 비디오 리코더, 개인용 비디오 플레이어, 위성 수신기, 스테레오 수신기, 케이블 TV 수신기를 포함함) 및 기타 전자 장치로서 프로세서, 프로세서에 의해 액세스 가능한 저장 매체(휘발성 및 비휘발성 메모리 및/또는 저장 요소를 포함함), 적어도 하나의 입력 장치 및 하나 이상의 출력 장치를 포함하는 장치 등과 같은 프로그램 가능한 머신 상에서 실행되는 프로그램으로 구현될 수 있다. 기술된 기능을 수행하고 출력 정보를 생성하기 위해 입력 장치를 이용하여 입력된 데이터에 프로그램 코드가 적용된다. 출력 정보는 하나 이상의 출력 장치에 적용될 수 있다. 당업자라면 본 발명이, 멀티프로세서 시스템, 미니컴퓨터, 메인프레임 컴퓨터, 독립 상용 전자공학 장치 등을 포함하는 하드웨어에 있어서, 가상화 지원부를 구비하는 다양한 시스템 구성을 이용하여 실시될 수 있음을 인지할 것이다. 본 발명은 또한 분산 컴퓨팅 환경에서 실시될 수 있으며, 이 경우 그 작업 및 구성은 통신 네트워크를 통해 연결되는 원격 처리 장치에 의해 수행될 수 있다.
각 프로그램은 프로세싱 시스템과 통신하기 위해 고급 언어 또는 객체 지향 프로그래밍 언어로 구현될 수 있다. 그러나, 필요한 경우, 프로그램은 어셈블리 또는 기계어로 구현될 수 있다. 어떤 경우이든, 상기 언어는 컴파일 또는 인터프리트된다.
프로그램 명령은 본 명세서에 기술된 동작을 수행하는 명령으로 프로그램된 범용 또는 특정 목적의 프로세싱 시스템을 생성하는데 사용될 수 있다. 이와 달리, 상기 동작은, 상기 동작을 수행하는 고정배선된 로직(hardwired logic)을 포함하는 특정 하드웨어 구성요소에 의해, 또는 프로그램된 컴퓨터 구성요소와 커스텀 하드웨어 구성요소의 임의의 조합에 의해 수행될 수 있다. 본 명세서에 기술된 방법은, 상기 방법을 수행하기 위해 프로세싱 시스템 또는 기타 전자 장치를 프로그램하는데 사용될 수 있는 내장 명령을 가진 머신-액세스 가능한 매체(machine-accessible medium)를 포함할 수 있는 컴퓨터 프로그램 제품으로서 제공될 수 있다. 본 명세서에서 사용된 "머신-액세스 가능한 매체"라는 용어는 머신에 의한 실행을 위한 명령의 시퀀스를 저장 또는 인코딩할 수 있으며 머신으로 하여금 본 명세서에 기술된 방법 중 임의의 하나를 수행하도록 하는 임의의 매체를 포함하는 것이다. 따라서, "머신-액세스 가능한 매체"는 고형 메모리(solid-state memory), 광학 및 자기 디스크, 및 데이터 신호를 인코딩하는 반송파(carrier wave)를 포함하지만, 이에 한정되는 것은 아니다. 또한, 당 분야에서 소프트웨어를, 여러가지 형태에 있어서(예를 들면, 프로그램, 프로시저, 프로세스, 애플리케이션, 모듈, 로직 등), 동작을 취하거나 결과를 유도하는 것으로 말하는 것은 일반적이다. 그러한 표현은, 프로세서로 하여금 결과를 생성하는 동작을 수행하도록 하는 프로세싱 시스템에 의해 소프트웨어를 실행하는 것을 기술하는 간단한 방식일 뿐이다.
본 발명이 예시적인 실시예를 참조하여 기술되었으나, 이러한 기술은 한정적인 의미로 해석되어서는 아니된다. 본 발명의 기타 실시예들 뿐만 아니라, 본 발명이 속하는 분야의 당업자에게 자명한, 예시적인 실시예에 대한 다양한 변형들은 본 발명의 사상과 범주에 속하는 것으로 해석되어야 한다.
Claims (25)
- 가상 머신 모니터의 구성요소에 대한 특권을 해제시키는 시스템으로서,가상화 하드웨어 지원부를 구비하며 복수의 가상 머신(VM) 특권 레벨을 갖는 플랫폼 - 상기 플랫폼은 적어도 하나의 트랩 이벤트(trapped event)에 기초하여 다양한 VM 특권 레벨에서 돌아가는 프로세스들 간을 천이할 수 있음 -;가상 머신 모니터(VMM)의 마이크로-하이퍼바이저 부분 - 상기 플랫폼 상의 프로그램 실행은 선택된 트랩 이벤트들 이후 상기 마이크로-하이퍼바이저로 트랜스퍼하기 위한 것임 -; 및적어도 하나의 트랩 이벤트를 서비스하는, VMM의 적어도 하나의 서비스 가상 머신(SVM) 부분 - 상기 SVM은 상기 마이크로-하이퍼바이저가 동작하는 VM 특권 레벨보다 하위의 VM 특권 레벨에서 동작함 -;을 포함하고, 상기 플랫폼 상의 프로그램 실행은 상기 적어도 하나의 트랩 이벤트에 기초하여 상기 마이크로-하이퍼바이저에 의해 상기 적어도 하나의 SVM으로 트랜스퍼하기 위한 것인, 시스템.
- 제1항에 있어서,상기 마이크로-하이퍼바이저는 상기 플랫폼 상의 최상위 VM 특권 레벨에서 돌아가는 것인, 시스템.
- 제1항에 있어서,상기 플랫폼 상의 제1 게스트 가상 머신에서 돌아가는 제1 운영 체제(operating system)는 상기 마이크로-하이퍼바이저가 동작하는 VM 특권 레벨보다 하위의 VM 특권 레벨에서 돌아가는, 시스템.
- 제3항에 있어서,상기 제1 운영 체제 하에서 돌아가는 게스트 소프트웨어가 서비스를 요청하는 경우 트랩 이벤트가 유발되는, 시스템.
- 제3항에 있어서,상기 제1 운영 체제의 적어도 일부는 상기 플랫폼의 최상위 ISA 특권 레벨에서 동작하는, 시스템.
- 제3항에 있어서,복수의 추가적인 운영 체제를 더 포함하고, 각각의 추가적인 운영 체제는 대응되는 추가적인 가상 머신에서 돌아가며, 상기 복수의 운영 체제는 상기 마이크로-하이퍼바이저가 동작하는 VM 특권 레벨보다 하위의 VM 특권 레벨에서 돌아가는, 시스템.
- 제1항에 있어서,상기 적어도 하나의 SVM은 선택된 적어도 하나의 구성요소에 대한 액세스에 있어서 제한되는 시스템.
- 제1항에 있어서,상기 마이크로-하이퍼바이저는 부팅 운영 체제로부터의 드라이버로서 개시되는 시스템.
- 제1항에 있어서,상기 마이크로-하이퍼바이저는 상기 플랫폼에 통신 가능한 방식으로(communicatively) 연결된 시스템 펌웨어에 상주하는, 시스템.
- 제1항에 있어서,상기 마이크로-하이퍼바이저는 시스템 부팅중 로드되는, 시스템.
- 제1항에 있어서,상기 적어도 하나의 SVM은 하드웨어 상호작용을 위한 서비스를 제공하는, 시스템.
- 제1항에 있어서,상기 플랫폼 상의 최상위 VM 특권 레벨은 상기 플랫폼 상의 최상위 ISA 특권 레벨보다 상위의 것인, 시스템.
- 가상화 플랫폼 상의 가상 머신 모니터에서의 서비스에 대한 특권을 해제하는 방법으로서,가상 머신 모니터(VMM)의 마이크로-하이퍼바이저 부분에 의해, 하드웨어 가상화 지원부를 구비하는 플랫폼의 게스트 가상 머신(VM)으로 제어권을 천이시키는 단계 - 상기 게스트 VM은 상기 마이크로-하이퍼바이저보다 하위의 VM 특권 레벨에서 실행됨 -;트랩 이벤트에 따라 제어권을 받아들이는 단계;상기 VMM의 어느 서비스 가상 머신(SVM) 부분이 상기 트랩 이벤트를 처리하여야 하는지를 결정하는 단계; 및상기 트랩 이벤트에 대하여 상기 결정된 SVM으로 제어권을 천이시키는 단계를 포함하고,상기 SVM은 상기 마이크로-하이퍼바이저가 동작하는 VM 특권 레벨보다 하위의 VM 특권 레벨에서 실행되는 것인, 방법.
- 제13항에 있어서,상기 마이크로-하이퍼바이저는 상기 플랫폼 상의 최상위 VM 특권 레벨에서 실행되는, 방법.
- 제13항에 있어서,상기 결정된 SVM으로부터 제어권을 받아들이는 단계; 및상기 게스트 VM으로 실행을 천이시키는 단계를 더 포함하는, 방법.
- 제13항에 있어서,상기 결정된 SVM은 상기 마이크로-하이퍼바이저의 일부이며 상기 트랩 이벤트는 다른 VM으로 제어권을 명백하게 천이시키지 않고 상기 마이크로-하이퍼바이저에 의해 자체적으로(locally) 처리되는, 방법.
- 제13항에 있어서,상기 이벤트들의 트랩(trapping)은 상기 하드웨어 가상화 지원부에 의해 인에이블되는, 방법.
- 제13항에 있어서,상기 게스트 가상 머신으로 제어권을 천이시키기 전에, 가상 머신 제어 구조부(VMCS) 내에 트랩될 적어도 하나의 이벤트 유형을 이뉴머레이트(enumerate)하는 단계를 더 포함하고, 상기 VMCS는 이벤트의 각 유형에 대하여 상기 이벤트 유형이 상기 마이크로-하이퍼바이저로의 천이를 유발하는 것인지를 특정하는 일단의 제 어를 포함하는, 방법.
- 제13항에 있어서,상기 마이크로-하이퍼바이저, 게스트 VM 및 SVM 간에 제어권을 천이시키는 것은 상기 하드웨어 가상화 지원부에 의해 인에이블되는, 방법.
- 가상화 컴퓨팅 플랫폼 상의 가상 머신 모니터에서의 서비스에 대한 특권을 해제하는 컴퓨터 판독가능 기록매체로서, 상기 매체는 액세스되는 경우 상기 컴퓨팅 플랫폼으로 하여금,가상 머신 모니터(VMM)의 마이크로-하이퍼바이저 부분에 의해, 하드웨어 가상화 지원부를 구비하는 플랫폼의 게스트 가상 머신(VM)으로 제어권을 천이시키는 동작 - 상기 게스트 VM은 상기 마이크로-하이퍼바이저보다 하위의 VM 특권 레벨에서 실행됨 -;트랩 이벤트에 따라 제어권을 받아들이는 동작;상기 VMM의 어느 서비스 가상 머신(SVM) 부분이 상기 트랩 이벤트를 처리하여야 하는지를 결정하는 동작; 및상기 트랩 이벤트에 대하여 상기 결정된 SVM 및 마이크로-하이퍼바이저 부분 중 하나로 제어권을 천이시키는 동작을 수행하게 하는 명령어들을 포함하고,상기 SVM은 상기 마이크로-하이퍼바이저가 동작하는 VM 특권 레벨보다 하위의 VM 특권 레벨에서 실행되는 것인, 컴퓨터 판독가능 기록매체.
- 제20항에 있어서,상기 마이크로-하이퍼바이저는 상기 플랫폼 상의 최상위 VM 특권 레벨에서 실행되는, 컴퓨터 판독가능 기록매체.
- 제20항에 있어서,상기 매체는, 액세스되는 경우 상기 컴퓨팅 플랫폼으로 하여금,상기 결정된 SVM으로부터 제어권을 받아들이는 동작; 및상기 게스트 VM으로 실행을 천이시키는 동작을 수행하게 하는 명령어들을 더 포함하는, 컴퓨터 판독가능 기록매체.
- 제20항에 있어서,상기 이벤트들의 트랩은 상기 하드웨어 가상화 지원부에 의해 인에이블되는, 컴퓨터 판독가능 기록매체.
- 제20항에 있어서,상기 매체는, 액세스되는 경우,상기 게스트 가상 머신으로 제어권을 천이시키기 전에, 가상 머신 제어 구조부(VMCS) 내에 트랩될 적어도 하나의 이벤트 유형을 이뉴머레이트하는 동작을 수행하는 명령어들을 더 포함하며,상기 VMCS는 이벤트의 각 유형에 대하여 상기 이벤트 유형이 상기 마이크로-하이퍼바이저로의 천이를 유발하는 것인지를 특정하는 일단의 제어를 포함하는, 컴퓨터 판독가능 기록매체.
- 제20항에 있어서,상기 마이크로-하이퍼바이저, 게스트 VM 및 SVM 간에 제어권을 천이하는 것은 상기 하드웨어 가상화 지원부에 의해 인에이블되는, 컴퓨터 판독가능 기록매체.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/008,911 | 2004-12-10 | ||
US11/008,911 US7757231B2 (en) | 2004-12-10 | 2004-12-10 | System and method to deprivilege components of a virtual machine monitor |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20070086843A KR20070086843A (ko) | 2007-08-27 |
KR100984203B1 true KR100984203B1 (ko) | 2010-09-28 |
Family
ID=36123076
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020077015035A KR100984203B1 (ko) | 2004-12-10 | 2005-12-09 | 가상 머신 모니터의 구성요소의 특권을 해제하는 시스템 및방법 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7757231B2 (ko) |
EP (1) | EP1839142A1 (ko) |
JP (1) | JP5042848B2 (ko) |
KR (1) | KR100984203B1 (ko) |
CN (1) | CN101076781A (ko) |
WO (1) | WO2006063274A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017010665A1 (ko) * | 2015-07-14 | 2017-01-19 | 서울대학교 산학협력단 | 하이퍼바이저를 이용한 로깅 방법 및 그 장치 |
Families Citing this family (132)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7380119B2 (en) * | 2004-04-29 | 2008-05-27 | International Business Machines Corporation | Method and system for virtualization of trusted platform modules |
US7484091B2 (en) * | 2004-04-29 | 2009-01-27 | International Business Machines Corporation | Method and system for providing a trusted platform module in a hypervisor environment |
DE602004027516D1 (de) * | 2004-12-03 | 2010-07-15 | St Microelectronics Srl | Ein Verfahren zum Verwalten von virtuellen Maschinen in einer körperlichen Verarbeitungsmaschine, ein entsprechendes Prozessorsystem und Computerprogrammprodukt dafür |
US7765544B2 (en) * | 2004-12-17 | 2010-07-27 | Intel Corporation | Method, apparatus and system for improving security in a virtual machine host |
US8706942B2 (en) * | 2004-12-29 | 2014-04-22 | Intel Corporation | Direct memory access (DMA) address translation between peer-to-peer input/output (I/O) devices |
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 |
US8578385B2 (en) * | 2005-04-21 | 2013-11-05 | Microsoft Corporation | Method and system for virtual service isolation |
CN100547515C (zh) * | 2005-07-15 | 2009-10-07 | 联想(北京)有限公司 | 支持可信计算的虚拟机***及在其上实现可信计算的方法 |
US8327353B2 (en) * | 2005-08-30 | 2012-12-04 | Microsoft Corporation | Hierarchical virtualization with a multi-level virtualization mechanism |
US8528107B1 (en) * | 2005-09-19 | 2013-09-03 | Vmware, Inc. | Enforcing restrictions related to a virtualized computer environment |
US20090106754A1 (en) * | 2005-12-10 | 2009-04-23 | Benjamin Liu | Handling a device related operation in a virtualization enviroment |
US7840964B2 (en) * | 2005-12-30 | 2010-11-23 | Intel Corporation | Mechanism to transition control between components in a virtual machine environment |
US20070174429A1 (en) | 2006-01-24 | 2007-07-26 | Citrix Systems, Inc. | Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment |
US7814307B2 (en) * | 2006-03-16 | 2010-10-12 | Microsoft Corporation | Fast booting a computing device to a specialized experience |
US8042109B2 (en) | 2006-03-21 | 2011-10-18 | Intel Corporation | Framework for domain-specific run-time environment acceleration using virtualization technology |
US20070234412A1 (en) * | 2006-03-29 | 2007-10-04 | Smith Ned M | Using a proxy for endpoint access control |
US8332940B2 (en) * | 2006-04-11 | 2012-12-11 | Installfree, Inc. | Techniques for securing a computing environment |
WO2008019380A2 (en) * | 2006-08-07 | 2008-02-14 | Bea Systems, Inc. | System and method for providing hardware virtualization in a virtual machine environment |
US7870336B2 (en) * | 2006-11-03 | 2011-01-11 | Microsoft Corporation | Operating system protection against side-channel attacks on secrecy |
KR100790304B1 (ko) * | 2006-11-10 | 2008-01-02 | 주식회사 대우일렉트로닉스 | 자바 가상 머신과 운영 체제의 스케줄링 실행방법 |
JP5100133B2 (ja) * | 2007-01-19 | 2012-12-19 | 株式会社東芝 | 情報処理装置 |
US8380987B2 (en) | 2007-01-25 | 2013-02-19 | Microsoft Corporation | Protection agents and privilege modes |
US7765374B2 (en) * | 2007-01-25 | 2010-07-27 | Microsoft Corporation | Protecting operating-system resources |
US8776041B2 (en) * | 2007-02-05 | 2014-07-08 | Microsoft Corporation | Updating a virtual machine monitor from a guest partition |
US8495708B2 (en) * | 2007-03-22 | 2013-07-23 | The Invention Science Fund I, Llc | Resource authorizations dependent on emulation environment isolation policies |
US20080235000A1 (en) * | 2007-03-22 | 2008-09-25 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Implementing security control practice omission decisions from service emulation indications |
US9378108B2 (en) * | 2007-03-22 | 2016-06-28 | Invention Science Fund I, Llc | Implementing performance-dependent transfer or execution decisions from service emulation indications |
US8874425B2 (en) * | 2007-03-22 | 2014-10-28 | The Invention Science Fund I, Llc | Implementing performance-dependent transfer or execution decisions from service emulation indications |
US20080234998A1 (en) * | 2007-03-22 | 2008-09-25 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Coordinating instances of a thread or other service in emulation |
US9558019B2 (en) * | 2007-03-22 | 2017-01-31 | Invention Science Fund I, Llc | Coordinating instances of a thread or other service in emulation |
US20080235001A1 (en) * | 2007-03-22 | 2008-09-25 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Implementing emulation decisions in response to software evaluations or the like |
US8438609B2 (en) * | 2007-03-22 | 2013-05-07 | The Invention Science Fund I, Llc | Resource authorizations dependent on emulation environment isolation policies |
US8689288B2 (en) * | 2007-04-16 | 2014-04-01 | Samsung Electronics Co., Ltd. | Apparatus and method for protecting system in virtualized environment |
JP5496464B2 (ja) * | 2007-04-16 | 2014-05-21 | 三星電子株式会社 | 仮想化環境での安全なシステム保護装置および方法 |
US8527673B2 (en) | 2007-05-23 | 2013-09-03 | Vmware, Inc. | Direct access to a hardware device for virtual machines of a virtualized computer system |
US8127292B1 (en) * | 2007-06-22 | 2012-02-28 | Parallels Holdings, Ltd. | Virtualization system with hypervisor embedded in bios or using extensible firmware interface |
CN101334751B (zh) * | 2007-06-29 | 2010-04-14 | 联想(北京)有限公司 | 虚拟机监视器识别客户操作***中进程的方法及装置 |
US8151264B2 (en) * | 2007-06-29 | 2012-04-03 | Intel Corporation | Injecting virtualization events in a layered virtualization architecture |
US8739156B2 (en) * | 2007-07-24 | 2014-05-27 | Red Hat Israel, Ltd. | Method for securing the execution of virtual machines |
US8799903B1 (en) * | 2007-07-31 | 2014-08-05 | Hewlett-Packard Development Company, L.P. | Systems and methods for exchanging runtime functionalities between software stacks |
US8370559B2 (en) * | 2007-09-28 | 2013-02-05 | Intel Corporation | Executing a protected device model in a virtual machine |
US8521966B2 (en) * | 2007-11-16 | 2013-08-27 | Vmware, Inc. | VM inter-process communications |
US8539551B2 (en) * | 2007-12-20 | 2013-09-17 | Fujitsu Limited | Trusted virtual machine as a client |
US8522236B2 (en) * | 2007-12-28 | 2013-08-27 | Intel Corporation | Method and system for establishing a robust virtualized environment |
US8839237B2 (en) * | 2007-12-31 | 2014-09-16 | Intel Corporation | Method and apparatus for tamper resistant communication in a virtualization enabled platform |
CN101216777B (zh) * | 2008-01-11 | 2010-11-03 | 华中科技大学 | 一种多虚拟机环境下的快速部署*** |
US8719936B2 (en) * | 2008-02-01 | 2014-05-06 | Northeastern University | VMM-based intrusion detection system |
US8219653B1 (en) | 2008-09-23 | 2012-07-10 | Gogrid, LLC | System and method for adapting a system configuration of a first computer system for hosting on a second computer system |
CN101488113B (zh) * | 2008-11-25 | 2014-07-30 | 华为技术有限公司 | 一种设备驱动域的实现方法、***及装置 |
US8239938B2 (en) * | 2008-12-08 | 2012-08-07 | Nvidia Corporation | Centralized device virtualization layer for heterogeneous processing units |
US8776028B1 (en) * | 2009-04-04 | 2014-07-08 | Parallels IP Holdings GmbH | Virtual execution environment for software delivery and feedback |
WO2011075484A2 (en) | 2009-12-14 | 2011-06-23 | Citrix Systems, Inc. | A secure virtualization environment bootable from an external media device |
US9804866B2 (en) * | 2009-12-14 | 2017-10-31 | Citrix Systems, Inc. | Methods and systems for securing sensitive information using a hypervisor-trusted client |
US9342335B2 (en) | 2009-12-23 | 2016-05-17 | Open Innovation Network, LLC | Systems, methods and computer readable media for managing multiple virtual machines |
CN102158386B (zh) * | 2010-02-11 | 2015-06-03 | 威睿公司 | ***管理程序级的分布式负载平衡 |
KR20110094764A (ko) * | 2010-02-17 | 2011-08-24 | 삼성전자주식회사 | 트랜잭션 기반 입출력 인터페이스를 제공하는 가상화 장치 및 방법 |
US8938782B2 (en) * | 2010-03-15 | 2015-01-20 | Symantec Corporation | Systems and methods for providing network access control in virtual environments |
US8601226B1 (en) | 2010-05-20 | 2013-12-03 | Gogrid, LLC | System and method for storing server images in a hosting system |
US10474875B2 (en) | 2010-06-07 | 2019-11-12 | Affectiva, Inc. | Image analysis using a semiconductor processor for facial evaluation |
EP2580670A4 (en) | 2010-06-10 | 2017-12-20 | Hewlett-Packard Development Company, L.P. | Virtual machine |
US8181176B2 (en) * | 2010-06-21 | 2012-05-15 | Intel Corporation | Uniform storage device access using partial virtual machine executing within a secure enclave session |
EP2606448B1 (en) * | 2010-08-18 | 2016-02-10 | Security First Corp. | Systems and methods for securing virtual machine computing environments |
US20120059976A1 (en) * | 2010-09-07 | 2012-03-08 | Daniel L. Rosenband | Storage array controller for solid-state storage devices |
US20150121003A1 (en) * | 2010-09-07 | 2015-04-30 | Daniel L. Rosenband | Storage controllers |
US8789042B2 (en) * | 2010-09-27 | 2014-07-22 | Mips Technologies, Inc. | Microprocessor system for virtual machine execution |
CN101976200B (zh) * | 2010-10-15 | 2013-05-08 | 浙江大学 | 在虚拟机监控器外进行输入输出设备虚拟化的虚拟机*** |
US8910155B1 (en) * | 2010-11-02 | 2014-12-09 | Symantec Corporation | Methods and systems for injecting endpoint management agents into virtual machines |
US8892788B2 (en) * | 2011-02-22 | 2014-11-18 | Red Hat Israel, Ltd. | Exposing a DMA engine to guests in a virtual machine system |
JP5809362B2 (ja) | 2011-08-30 | 2015-11-10 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. | 仮想トラステッドランタイムbiosとの通信 |
CN103748552A (zh) | 2011-08-30 | 2014-04-23 | 惠普发展公司,有限责任合伙企业 | 用于***管理请求的虚拟高特权模式 |
US8826275B2 (en) | 2011-09-01 | 2014-09-02 | Ca, Inc. | System and method for self-aware virtual machine image deployment enforcement |
US8695010B2 (en) | 2011-10-03 | 2014-04-08 | International Business Machines Corporation | Privilege level aware processor hardware resource management facility |
US10310879B2 (en) * | 2011-10-10 | 2019-06-04 | Nvidia Corporation | Paravirtualized virtual GPU |
US9176763B2 (en) | 2011-11-28 | 2015-11-03 | Ravello Systems Ltd. | Apparatus and method thereof for efficient execution of a guest in a virtualized environment |
TWI459296B (zh) * | 2012-02-21 | 2014-11-01 | Hon Hai Prec Ind Co Ltd | 增加伺服器的虛擬機配置數量的方法 |
JP5813554B2 (ja) * | 2012-03-30 | 2015-11-17 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
US20130268774A1 (en) | 2012-04-06 | 2013-10-10 | Security First Corp. | Systems and methods for securing and restoring virtual machines |
ES2439804B1 (es) * | 2012-04-19 | 2014-10-29 | Universitat Politècnica De Catalunya | Procedimiento, sistema y pieza de código ejecutable para virtualizar un recurso de hardware asociado a un sistema informático |
TWI471734B (zh) * | 2012-06-28 | 2015-02-01 | Galaxy Software Services Corp | 雲端服務系統及雲端服務方法 |
US9384024B2 (en) * | 2012-12-18 | 2016-07-05 | Dynavisor, Inc. | Dynamic device virtualization |
JP2013061994A (ja) * | 2013-01-07 | 2013-04-04 | Fujitsu Ltd | ウイルス検出プログラム、ウイルス検出方法、監視プログラム、監視方法、及びコンピュータ |
US9575789B1 (en) * | 2013-06-26 | 2017-02-21 | Veritas Technologies | Systems and methods for enabling migratory virtual machines to expedite access to resources |
US20150007196A1 (en) * | 2013-06-28 | 2015-01-01 | Intel Corporation | Processors having heterogeneous cores with different instructions and/or architecural features that are presented to software as homogeneous virtual cores |
US9697027B1 (en) * | 2013-07-02 | 2017-07-04 | Ca, Inc. | Hypercall-based security for hypervisors |
TWI530954B (zh) * | 2013-11-22 | 2016-04-21 | 新唐科技股份有限公司 | 保護非揮發性記憶體中儲存之程式碼的裝置 |
US9507617B1 (en) * | 2013-12-02 | 2016-11-29 | Trend Micro Incorporated | Inter-virtual machine communication using pseudo devices |
US9507935B2 (en) | 2014-01-16 | 2016-11-29 | Fireeye, Inc. | Exploit detection system with threat-aware microvisor |
US20150205962A1 (en) * | 2014-01-23 | 2015-07-23 | Cylent Systems, Inc. | Behavioral analytics driven host-based malicious behavior and data exfiltration disruption |
US9652631B2 (en) * | 2014-05-05 | 2017-05-16 | Microsoft Technology Licensing, Llc | Secure transport of encrypted virtual machines with continuous owner access |
DE102014209592A1 (de) * | 2014-05-20 | 2015-11-26 | Robert Bosch Gmbh | Verfahren zum Erzeugen einer Hypervisor-Einheit und Hypervisor-Einheit |
US10019275B2 (en) | 2014-06-23 | 2018-07-10 | Vmware, Inc. | Hypervisor context switching using a trampoline scheme in processors having more than two hierarchical privilege levels |
US10255090B2 (en) | 2014-06-23 | 2019-04-09 | Vmware, Inc. | Hypervisor context switching using a redirection exception vector in processors having more than two hierarchical privilege levels |
US10162655B2 (en) * | 2014-06-23 | 2018-12-25 | Vmware, Inc. | Hypervisor context switching using TLB tags in processors having more than two hierarchical privilege levels |
US9792222B2 (en) * | 2014-06-27 | 2017-10-17 | Intel Corporation | Validating virtual address translation by virtual machine monitor utilizing address validation structure to validate tentative guest physical address and aborting based on flag in extended page table requiring an expected guest physical address in the address validation structure |
US9680862B2 (en) * | 2014-07-01 | 2017-06-13 | Fireeye, Inc. | Trusted threat-aware microvisor |
JP2014225302A (ja) * | 2014-09-08 | 2014-12-04 | 富士通株式会社 | ウイルス検出プログラム、ウイルス検出方法、及びコンピュータ |
WO2016105232A1 (en) | 2014-12-25 | 2016-06-30 | Siemens Aktiengesellschaft | Increasing the level of security for micro-hypervisor based virtualization platforms |
US9934376B1 (en) | 2014-12-29 | 2018-04-03 | Fireeye, Inc. | Malware detection appliance architecture |
US10230693B2 (en) | 2015-01-29 | 2019-03-12 | WebCloak, LLC | Safechannel encrypted messaging system |
CN104598842B (zh) * | 2015-02-03 | 2018-05-01 | 中国电子科技集团公司第三十研究所 | 一种虚拟机监控器信任域分割方法 |
US10474813B1 (en) | 2015-03-31 | 2019-11-12 | Fireeye, Inc. | Code injection technique for remediation at an endpoint of a network |
US10956571B2 (en) * | 2015-05-15 | 2021-03-23 | Intel Corporation | Kernel runtime integrity using processor assists |
US10642753B1 (en) | 2015-06-30 | 2020-05-05 | Fireeye, Inc. | System and method for protecting a software component running in virtual machine using a virtualization layer |
US10454950B1 (en) | 2015-06-30 | 2019-10-22 | Fireeye, Inc. | Centralized aggregation technique for detecting lateral movement of stealthy cyber-attacks |
US10216927B1 (en) | 2015-06-30 | 2019-02-26 | Fireeye, Inc. | System and method for protecting memory pages associated with a process using a virtualization layer |
US10726127B1 (en) | 2015-06-30 | 2020-07-28 | Fireeye, Inc. | System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer |
US10395029B1 (en) | 2015-06-30 | 2019-08-27 | Fireeye, Inc. | Virtual system and method with threat protection |
US11113086B1 (en) | 2015-06-30 | 2021-09-07 | Fireeye, Inc. | Virtual system and method for securing external network connectivity |
DE102015214385A1 (de) * | 2015-07-29 | 2017-02-02 | Robert Bosch Gmbh | Verfahren und Vorrichtung zum Absichern der Anwendungsprogrammierschnittstelle eines Hypervisors |
DE102015214389A1 (de) * | 2015-07-29 | 2017-02-02 | Robert Bosch Gmbh | Verfahren und Vorrichtung zum Aktualisieren einer auf einer physischen Maschine unter einem Hypervisor betriebenen virtuellen Maschine |
US10033759B1 (en) | 2015-09-28 | 2018-07-24 | Fireeye, Inc. | System and method of threat detection under hypervisor control |
US10846117B1 (en) * | 2015-12-10 | 2020-11-24 | Fireeye, Inc. | Technique for establishing secure communication between host and guest processes of a virtualization architecture |
US10447728B1 (en) | 2015-12-10 | 2019-10-15 | Fireeye, Inc. | Technique for protecting guest processes using a layered virtualization architecture |
US10108446B1 (en) | 2015-12-11 | 2018-10-23 | Fireeye, Inc. | Late load technique for deploying a virtualization layer underneath a running operating system |
US20170177395A1 (en) * | 2015-12-21 | 2017-06-22 | Mingqiu Sun | Embedded architecture based on process virtual machine |
US20170180325A1 (en) * | 2015-12-22 | 2017-06-22 | Intel Corporation | Technologies for enforcing network access control of virtual machines |
US9886303B2 (en) * | 2016-06-15 | 2018-02-06 | International Business Machines Corporation | Specialized micro-hypervisors for unikernels |
CN107566319B (zh) * | 2016-06-30 | 2021-01-26 | 中央大学 | 虚拟机器即时转移方法 |
US10348838B2 (en) * | 2016-07-22 | 2019-07-09 | Cisco Technology, Inc. | Scaling service discovery in a micro-service environment |
US11412053B2 (en) | 2016-07-22 | 2022-08-09 | Cisco Technology, Inc. | Scaling service discovery in a micro-service environment |
US10191861B1 (en) | 2016-09-06 | 2019-01-29 | Fireeye, Inc. | Technique for implementing memory views using a layered virtualization architecture |
US11824863B2 (en) * | 2016-11-03 | 2023-11-21 | Nicira, Inc. | Performing services on a host |
ES2941312T3 (es) * | 2018-12-03 | 2023-05-19 | Nagravision Sarl | Despliegue y funcionamiento seguros de un sistema de plataforma virtual |
CN109858288B (zh) * | 2018-12-26 | 2021-04-13 | 中国科学院信息工程研究所 | 实现虚拟机安全隔离的方法与装置 |
US11115324B2 (en) | 2019-08-27 | 2021-09-07 | Nokia Solutions Networks Oy | System and method for performing segment routing over an MPLS network |
US11442873B2 (en) * | 2019-09-06 | 2022-09-13 | Meta Platforms Technologies, Llc | Microkernel architecture with enhanced reliability and security |
US11314522B2 (en) | 2020-02-26 | 2022-04-26 | Red Hat, Inc. | Fast boot resource allocation for virtual machines |
US11586458B2 (en) | 2020-02-26 | 2023-02-21 | Red Hat, Inc. | Fast device discovery for virtual machines |
CN111547270A (zh) * | 2020-04-22 | 2020-08-18 | 中国电子科技集团公司电子科学研究院 | 一种卫星电子一体化处理***及微纳卫星 |
KR20220077694A (ko) * | 2020-12-02 | 2022-06-09 | 삼성전자주식회사 | 하이퍼바이저를 이용한 가상 머신 모니터링 방법 및 이를 지원하는 전자 장치 |
CN113297563B (zh) * | 2021-06-18 | 2023-01-24 | 海光信息技术股份有限公司 | 访问片上***特权资源的方法、装置及片上*** |
CN114520825B (zh) * | 2022-01-07 | 2023-12-26 | 中汽创智科技有限公司 | 一种基于分布式的Hypervisor微内核架构、通信方法及设备 |
Family Cites Families (8)
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 |
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 |
JP3630087B2 (ja) | 2000-05-10 | 2005-03-16 | 日本電気株式会社 | 自動データ処理装置 |
US7272831B2 (en) * | 2001-03-30 | 2007-09-18 | Intel Corporation | Method and apparatus for constructing host processor soft devices independent of the host processor operating system |
US20030229794A1 (en) * | 2002-06-07 | 2003-12-11 | Sutton James A. | System and method for protection against untrusted system management code by redirecting a system management interrupt and creating a virtual machine container |
US6996748B2 (en) * | 2002-06-29 | 2006-02-07 | Intel Corporation | Handling faults associated with operation of guest software in the virtual-machine architecture |
US7376949B2 (en) * | 2003-10-01 | 2008-05-20 | Hewlett-Packard Development Company, L.P. | Resource allocation and protection in a multi-virtual environment |
US20050076186A1 (en) * | 2003-10-03 | 2005-04-07 | Microsoft Corporation | Systems and methods for improving the x86 architecture for processor virtualization, and software systems and methods for utilizing the improvements |
-
2004
- 2004-12-10 US US11/008,911 patent/US7757231B2/en active Active
-
2005
- 2005-12-09 EP EP05853583A patent/EP1839142A1/en not_active Ceased
- 2005-12-09 KR KR1020077015035A patent/KR100984203B1/ko not_active IP Right Cessation
- 2005-12-09 JP JP2007545682A patent/JP5042848B2/ja not_active Expired - Fee Related
- 2005-12-09 WO PCT/US2005/044701 patent/WO2006063274A1/en active Application Filing
- 2005-12-09 CN CNA2005800424417A patent/CN101076781A/zh active Pending
Non-Patent Citations (1)
Title |
---|
HALL, J. S. et al. Virtualizing the VAX Architecture. ACM SIGARCH Computer Architecture News. Volume 19 , Issue 3, May 1991, Pages: 380 - 389. |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017010665A1 (ko) * | 2015-07-14 | 2017-01-19 | 서울대학교 산학협력단 | 하이퍼바이저를 이용한 로깅 방법 및 그 장치 |
KR101754334B1 (ko) * | 2015-07-14 | 2017-07-19 | 서울대학교산학협력단 | 하이퍼바이저를 이용한 로깅 방법 및 그 장치 |
Also Published As
Publication number | Publication date |
---|---|
US7757231B2 (en) | 2010-07-13 |
WO2006063274A1 (en) | 2006-06-15 |
KR20070086843A (ko) | 2007-08-27 |
JP5042848B2 (ja) | 2012-10-03 |
EP1839142A1 (en) | 2007-10-03 |
CN101076781A (zh) | 2007-11-21 |
US20060130060A1 (en) | 2006-06-15 |
JP2008523511A (ja) | 2008-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100984203B1 (ko) | 가상 머신 모니터의 구성요소의 특권을 해제하는 시스템 및방법 | |
US10310882B2 (en) | Algorithm and apparatus to deploy virtual machine monitor on demand | |
CA2915646C (en) | Page fault injection in virtual machines to cause mapping of swapped-out memory pages into (vm) virtualized memory | |
US7209994B1 (en) | Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests | |
RU2398267C2 (ru) | Иерархическая виртуализация посредством многоуровневого механизма виртуализации | |
US8595487B2 (en) | Virtualization hardware for device driver isolation | |
US10162655B2 (en) | Hypervisor context switching using TLB tags in processors having more than two hierarchical privilege levels | |
US7707341B1 (en) | Virtualizing an interrupt controller | |
WO2015032312A1 (zh) | 硬件资源访问方法及装置 | |
US20150370591A1 (en) | Hypervisor context switching using a redirection exception vector in processors having more than two hierarchical privilege levels | |
US20050216920A1 (en) | Use of a virtual machine to emulate a hardware device | |
JP2011134320A (ja) | 効率的なネストした仮想化 | |
US9286105B1 (en) | System and method for facilitating joint operation of multiple hypervisors in a computer system | |
US10019275B2 (en) | Hypervisor context switching using a trampoline scheme in processors having more than two hierarchical privilege levels | |
CN113449292B (zh) | 一种可信应用的运行方法、装置及设备 | |
US11169838B2 (en) | Hypercall implementation in a virtualized computer system | |
US8291415B2 (en) | Paging instruction for a virtualization engine to local storage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
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: 20130902 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20140829 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20150827 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20160831 Year of fee payment: 7 |
|
LAPS | Lapse due to unpaid annual fee |