KR20060099404A - 가상 머신들 간에서 페이지들을 공유하기 위한 방법,시스템 및 컴퓨터 판독가능 매체 - Google Patents

가상 머신들 간에서 페이지들을 공유하기 위한 방법,시스템 및 컴퓨터 판독가능 매체 Download PDF

Info

Publication number
KR20060099404A
KR20060099404A KR1020060017164A KR20060017164A KR20060099404A KR 20060099404 A KR20060099404 A KR 20060099404A KR 1020060017164 A KR1020060017164 A KR 1020060017164A KR 20060017164 A KR20060017164 A KR 20060017164A KR 20060099404 A KR20060099404 A KR 20060099404A
Authority
KR
South Korea
Prior art keywords
virtual machine
pages
physical address
access
reference count
Prior art date
Application number
KR1020060017164A
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 KR20060099404A publication Critical patent/KR20060099404A/ko

Links

Images

Classifications

    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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
    • G06F12/0261Garbage collection, i.e. reclamation of unreferenced memory using reference counting
    • 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/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Bus Control (AREA)
  • Storage Device Security (AREA)

Abstract

복수 가상 머신 환경 내의 가상 머신들 간에서 페이지들을 공유하기 위한 방법은, 처음에 제2 가상 머신과의 페이지 공유를 위하여 제1 가상 머신의 임시 게스트 물리 어드레스 범위를 할당하는 것을 포함한다. 임시 범위는 제1 가상 머신의 게스트 물리 어드레스 공간 내에 있다. 제1 가상 머신이 이용할 수 있는 페이지들에 대한 제2 가상 머신으로부터의 DMA 요청에서와 같은 액세스 요청이 수신된다. 페이지들에 대한 미해결 액세스의 참조 카운트는 미해결 액세스를 나타내도록 증분되고, 페이지들은 임시 게스트 물리 어드레스 범위로 맵핑된다. 페이지들이 액세스되고 참조 카운트가 감소된다. 그 다음, 참조 카운트가 0인 경우, 임시 게스트 물리 어드레스 범위 내의 맵핑이 제거된다.
가상 머신 환경, 페이지 공유, 임시 게스트 물리 어드레스 범위, 게스트 물리 어드레스 공간, DMA 요청

Description

가상 머신들 간에서 페이지들을 공유하기 위한 방법, 시스템 및 컴퓨터 판독가능 매체{METHOD AND SYSTEM FOR A GUEST PHYSICAL ADDRESS VIRTUALIZATION IN A VIRTUAL MACHINE ENVIRONMENT}
도 1은 본 발명의 양태들이 구현될 수 있는 예시적인 가상 머신 환경을 나타낸 도면.
도 2는 가상 머신을 위한 게스트 물리 어드레스 대 시스템 물리 어드레스 맵핑을 나타낸 도면.
도 3은 가상 머신을 위한 게스트 가상 어드레스 대 시스템 물리 어드레스 맵핑을 나타낸 도면.
도 4는 가상 머신을 위한 게스트 가상 어드레스 대 게스트 물리 어드레스 맵핑을 나타낸 도면.
도 5는 본 발명의 양태들을 포함하는 방법의 흐름도.
도 6은 본 발명의 양태들이 구현될 수 있는 예시적인 컴퓨팅 환경을 나타낸 블럭도.
<도면의 주요 부분에 대한 부호의 설명>
100 : 가상 컴퓨터 시스템
105 : 호스트 컴퓨터 시스템
110 : 제1 가상 머신
115 : 제2 가상 머신
120 : 가상화 소프트웨어
125 : 가상 머신 어플리케이션
130, 140 : 오퍼레이팅 시스템
135 : 가상 머신 어플리케이션
145 : 데이터베이스
155 : 가상 드라이버
165 : I/O 경로
본 발명은 컴퓨터 프로그래밍 분야에 관한 것이다. 더 상세하게는, 본 발명은 가상 머신 환경 내에서 제1 가상 머신이 이용할 수 있는 호스트 자원들에 제2 가상 머신이 액세스하는 것에 관한 것이다.
가상 컴퓨팅은 각각 자기 자신만의 오퍼레이팅 시스템을 갖고 있는 다수의 가상 머신이 한 호스트 컴퓨터 상에서 동작할 수 있게 해 준다. 호스트 컴퓨터는 가상화기 프로그램(virtualizer program)을 가지며, 그 프로그램은 호스트 컴퓨터가 자신과는 다른 CPU 모델을 갖고 있을 수 있는 가상 머신 프로그램의 명령어들을 실행할 수 있게 해 준다. 호스트 컴퓨터 가상화기 프로그램은 호스트 머신의 하드 웨어 자원들도 가상 머신이 사용하도록 가상화할 수 있다. CPU, 메모리, I/O 및 디스크 공간과 같은 하드웨어 자원들을 요청하고 있는 가상 머신은 호스트 컴퓨터에 대하여 게스트라고 칭해진다.
가상 머신에서, 게스트 컴퓨터 시스템은 호스트 컴퓨터 시스템 내에서 하나의 특정한 하드웨어 아키텍쳐의 동작에 관한 순수한 소프트웨어 표현으로서만 존재한다. 가상화기, 에뮬레이터, 가상 머신 및 프로세서 에뮬레이션이라는 용어는 공지되어 있거나 당업자들이 알 수 있는 하나 이상의 방법을 이용하여 전체 컴퓨터 시스템의 하드웨어 아키텍쳐를 모방하거나 에뮬레이션하는 능력을 나타내기 위해 상호교환가능하게 사용된다. 호스트 컴퓨터의 오퍼레이팅 시스템 소프트웨어 및 하드웨어 아키텍쳐 상에서 실행 중인 가상화기 프로그램은 전체 게스트 컴퓨터 시스템의 동작을 모방한다.
가상화기 프로그램은 호스트 머신의 하드웨어 아키텍쳐와, 에뮬레이션된 게스트 가상 머신 환경 내에서 실행 중인 소프트웨어(예를 들어, 오퍼레이팅 시스템, 어플리케이션 등)에 의해 전송된 명령어들 간의 인터체인지(interchange)로서 기능한다. 가상 머신 환경의 일 실시예에서, 에뮬레이션된 환경은, 호스트 하드웨어 바로 위에서 실행되는 소프트웨어 계층인 가상 머신 모니터(virtual machine moniter, VMM)를 포함하며, 이 VMM은 호스트 오퍼레이팅 시스템과 협동하여 작업하고 사이드-바이-사이드(side by side) 방식으로 동작할 수 있으며, 또한 자신이 가상화하고 있는 하드웨어와 동일한 인터페이스들을 노출시킴으로써 호스트 머신의 모든 자원들(소정의 가상 자원들도 당연히 포함됨)을 가상화할 수 있다. 이러한 가상화에 의해, (호스트 컴퓨터 시스템 자체는 물론) 가상화기는 그 위에서 동작 중인 오퍼레이팅 시스템 계층들이 알아치리지 못한 채로 유지될 수 있다. 가상 머신 환경에서, 다수의 가상 머신은 호스트 머신의 하드웨어 자원들에 성능 요구조건들을 부과한다. 하나의 가상 머신을 호스트로부터 분리시키는 것은 물론, 다른 가상 머신들로부터도 분리시키는 것이 바람직하다. 하나의 가상 머신을 다른 것으로부터 분리 또는 고립시키는 것은, 에러 및 결함들을 고립시켜 한 가상 머신의 결함이 다른 가상 머신에 영향을 주지 않게 하는 데에 유용하다.
그러나, 일부 구성에서는, 하나의 가상 머신이 제2 가상 머신이 이용할 수 있는 호스트 자원들에 액세스하게 하는 것이 바람직하다. 도 1은 가상 컴퓨터 시스템(100)을 도시한 것이다. 시스템(100)은 제1 가상 머신(110), 제2 가상 머신(115), 및 호스트 컴퓨터 시스템(105) 내에 상주하는 가상화 소프트웨어(120)를 포함한다. 가상화 소프트웨어는 예를 들어 가상 머신 어드레스를 호스트 시스템 어드레스로부터 분리시킴으로써 가상 머신들 간의 제어된 고립을 유지하는 것을 돕는다. 제1 가상 머신(110)은 데이터베이스(145)에 액세스하기 위한 드라이버(150)를 갖는 오퍼레이팅 시스템(130) 상에서 실행되는 가상 머신 어플리케이션들(125)을 포함하는 소프트웨어 프로그램이다. 제2 가상 머신(115)은 가상 드라이버(155)를 갖는 오퍼레이팅 시스템(140) 상에서 실행되는 가상 머신 어플리케이션들(135)을 포함하는 소프트웨어 프로그램이다. 호스트 컴퓨터 시스템(105)은 가상 머신들(110, 115) 중 임의의 것에 할당될 수 있는 입출력 채널, 메모리, 프로세서 및 소프트웨어와 같은 호스트 자원들을 갖는다. 도 1의 구체적인 예에서, 호스트 자원 은 데이터베이스(145)에 액세스하는 I/O 채널(165)이다. 도 1의 구성은 제2 가상 머신(115)이 가상 드라이버(155)를 이용하여 가상화 소프트웨어(120)를 통해, 데이터베이스(145)로의 I/O 경로(165)에 연결된 드라이버(150)와 통신함으로써, 데이터베이스(145)에 액세스할 수 있음을 나타내고 있다.
가상 머신 환경에서, 게스트는 메모리와 같은 호스트 시스템 자원을 할당받는다. 게스트 가상 머신의 어플리케이션은 게스트를 위하여 메모리에 액세스하기 위한 가상 어드레스를 생성한다. 이러한 가상 어드레스는 게스트에 관련된 물리 어드레스로 번역된다. 그러나, 가상 머신 환경 내의 각 가상 머신은 물리 어드레스 공간의 별개의 표기법을 보유한다. 한 가상 머신의 관점에서, 그 가상 머신의 물리 어드레스 공간은 물리 어드레스 0 또는 임의의 다른 페이지 정렬된 물리 어드레스에서 시작하는 것으로 보일 수 있으며, 호스트 시스템의 다양한 가상 머신들에서의 메모리 할당을 기록하고 있는 가상화 소프트웨어에 의해 지원되는 크기의 영역의 범위에 이를 수 있다. 전형적으로, 각각의 가상 머신에 별도의 물리 어드레스 공간을 제공하기 위해, 쉐도우 페이지 테이블이 가상화 소프트웨어의 일부로서 사용된다.
게스트 물리 어드레스 공간 또는 GPA 공간은 가상 머신의 물리 어드레스 공간을 칭하는 것이다. 따라서, 게스트 물리 어드레스 또는 GPA는 GPA 공간 내의 어드레스를 칭하는 것이다. 게스트 물리 어드레스 공간의 사용은 게스트 가상 머신의 지원을 위하여 삽입, 제거 및 질의의 동작을 지원한다. 게스트 가상 어드레스 또는 GVA는 특정한 가상 머신에 전용인 가상 어드레스이다. 정상적으로, 게스트 가상 어드레스(GVA)는 게스트 물리 어드레스(GPA)로 번역된다. 그러나, GPA는 호스트 물리 메모리에 액세스하는 데에 사용될 수 없다. 따라서, GPA는 호스트 또는 시스템 물리 어드레스(SPA)로 번역된다. 어드레스 번역에서의 오버헤드를 감소시키기 위하여, 가상화기 프로그램은 GVA를 SPA에 맵핑시키는 쉐도우 페이지 테이블을 보유한다. 또한, 가상화기는 GPA-대-SPA 맵핑을 저장하는 내부 데이터 구조를 보유한다. 도 2는 게스트 물리 페이지의 시스템 물리 페이지로의 예시적인 맵핑을 나타낸 것이다. 하나의 게스트 물리 어드레스에 다수의 게스트 물리 어드레스가 맵핑할 수 있음에 주목해야 한다. 예를 들어, 게스트 물리 어드레스 공간 페이지 프레임 번호(page frame number) PFN 202 및 PFN 203은 시스템 물리 페이지 번호 PFN(102)에 맵핑된다.
가상 머신의 동작 및 게스트 물리 어드레스 공간의 관리는 몇가지 흥미로운 문제점을 제시할 수 있다. 예를 들어, 게스트 물리 어드레스 공간의 영역이 제거되면, 게스트 물리 어드레스 공간의 제거된 섹션 내의 영역들에 맵핑되는 게스트 가상 어드레스를 퍼지(purge)할 필요가 있다. 이러한 퍼지로 인해, GPA의 제거된 섹션 내의 영역들로의 임의의 남아있는 맵핑들이 무효화된다. 따라서, GPA의 한 섹션이 제거되면, 제거된 영역 내의 GPA를 사용하여 구성되었던 임의의 가상 어드레스가 무효화될 필요가 있을 것이다. 예시적인 아키텍쳐에서, GVA-대-SPA 맵핑이 유지되는 2개의 위치가 존재할 수 있으며, 따라서 이러한 GVA-대-SPA 맵핑이 반드시 제거되어야 하는 2개의 장소가 존재한다. 가상-대-물리 맵핑을 유지하는 2개의 영역은 쉐도우 페이지 테이블과 하드웨어 TLB(translation look-aside buffer) 내 에 있다. 이러한 캐시들 각각은 가상화의 정확성을 유지하고 가상 머신들 간의 보안 결함을 방지하기 위하여 반드시 퍼지되어야 한다. 도 3은 GVA-대-SPA 맵핑을 도시한 것이다. 다수의 게스트 가상 어드레스가 동일한 시스템 물리 어드레스 페이지에 맵핑될 수 있음에 유의해야 한다. 예를 들어, 게스트 가상 어드레스 VA C000:1000 및 VA C000:2000은 시스템 물리 페이지 번호 PFN 102에 맵핑된다. 게스트 가상 어드레스 대 시스템 어드레스 번역의 변환을 가속화하는 데에 유용한 쉐도우 페이지 테이블에서, 그러한 맵핑은 명백한 것이다.
불행하게도, 쉐도우 페이지 테이블 데이터 구조는 GVA-대-SPA로의 맵핑을 보유하기 때문에, 도 3에 도시된 쉐도우 페이지 테이블에 질의하는 것에 의해 특정 GPA에 맵핑되는 모든 GVA를 질의하는 것은 불가능하다. 그러나, 도 2에 도시된 것과 같은 GPA-대-SPA의 맵핑도 유지된다. 특정 GPA를 사용하여 생성된 모든 게스트 가상 어드레스를 결정하는 한가지 기술은, 특정 GPA에 맵핑되는 모든 SPA에 관하여 GPA-대-SPA 맵(도 2)에 질의한 다음, GVA-대-SPA (도 3의 쉐도우 페이지 테이블) 맵으로부터 그 SPA들에 맵핑되는 모든 엔트리를 제거하는 것이다. 불행하게도, 이 방법의 각 단계들은 GPA-대-SPA 및 GVA-대-SPA 맵 각각의 선형 검색을 포함하기 때문에, 매우 느릴 수 있다. 대안적으로, 이러한 상황을 명시적으로 다루기 위하여, GPA-대-GVA의 역방향 맵핑이 유지될 수 있다. 불행하게도, 이러한 역방향 맵핑을 유지하는 방식은 대량의 추가 메모리를 소비한다.
컴퓨터 시스템 내의 물리 장치들은 가상 어드레스가 아니라 물리 어드레스를 사용하여 시스템 메모리의 어드레스를 결정하기 때문에, 더 복잡해진다. 따라서, SPT(shadow page table) 및 TLB로부터 가상-대-물리 맵핑을 퍼지하더라도, 장치가 직접 메모리 액세스(direct memory access, DMA) 동작을 수행하도록 설정된 경우에는 물리 장치가 시스템 메모리에 물리적으로 액세스하는 것을 방지할 수 없을 것이다. DMA 동작은 DMA 컨트롤러 하드웨어 및 소프트웨어가 존재하는 가상 머신 환경에서 수행될 수 있다.
게스트 물리 어드레스 공간을 제거할 때에는, 그 공간이 현재 DMA 동작에 관련되어 있지 않은지를 확인하는 것이 중요하다. 미해결의 DMA 트랜잭션이 진행중인 동안에, 일반적으로 4K 바이트 이상인 게스트 어드레스 공간 페이지의 제거를 방지하기 위한 한가지 기술은, 페이지가 DMA 동작에 사용되고 있는지를 나타내는 플래그를 페이지마다 하나씩 유지하는 것이다. 불행하게도, 상이한 물리 장치들이 동일한 물리 어드레스 공간에 맵핑될 수 있고, 따라서 동일한 어드레스 공간이 계류 중일 수 있는 2개의 상이한 DMA 동작에 관련될 수 있다. 따라서, 단일 플래그는 2개의 DMA 트랜잭션이 언제 완료될 것인지를 알게 해 주는 충분한 정보가 아니다. 보다 더 개선된 메커니즘이 필요하다.
다수의 계류 중인 DMA 동작에 대한 한가지 가능한 해결안은 시스템 물리 메모리의 특정 영역들에 대한 DMA 요청을 방지하는 메커니즘을 제공하는 것이다. 일반적으로, 오퍼레이팅 시스템이 특정 페이지가 DMA 트랜잭션 동안 발생하는 것과 같은 비-CPU 에이전트를 통해 판독 또는 기입될지를 제어할 수 있게 해 주는 테이블이 제공된다. 테이블은 페이지가 DMA 동작을 통해 판독 또는 기입될 수 있는지 를 지정하는 플래그를 물리 메모리의 페이지마다 하나 이상씩 갖는다. 이 테이블은 DMA 제외 벡터(DMA exclusion vector, DEV)라고 칭해진다. DMA 제외 벡터 메커니즘을 사용하면서도, GPA 테이블로부터 퍼지 또는 수정되어야 하는 물리 어드레스 공간으로 타겟팅된 다중 DMA 트랜잭션 문제를 회피하는 것이 바람직하다.
따라서, 게스트-대-호스트 물리 어드레스에서 사용되는 기준 테이블로부터 물리 어드레스 공간의 퍼지 또는 수정을 허용하면서도, 가상 머신들 간의 DMA 및 기타 I/O 동작과 같은 물리 어드레스로의 소정의 액세스를 허용하는 방법 및 시스템이 필요하다. 본 발명은 상기의 요구를 충족시키고, 여기에 개시되는 추가의 이점들로 그 요구들을 해결한다.
본 발명의 한 양태는 하나의 가상 머신이 다른 가상 머신에 할당된 자원들로의 액세스를 요청할 때, 가상 머신들 간의 액세스를 허용하는 방법 및 시스템을 포함한다. 본 발명의 일 실시예는 제1 가상 머신 게스트 물리 어드레스 내의 임시적인 범위를 사용하는 2개의 가상 머신 간에서, DMA 액세스와 같은 액세스를 행하려는 요청을 수신하는 것을 포함한다. 액세스된 페이지는 임시 어드레스 공간으로 맵핑되고, 계류 중인 액세스의 개수를 추적하기 위하여 참조 카운터가 사용된다. 액세스가 완료되고 난 후, 참조 카운터가 감소된다. 참조 카운터가 0으로 되어 해당 페이지에 대한 계류 중인 액세스가 더 이상 존재하지 않는 것으로 나타나면, 맵핑은 폐기될 수 있다. 일 실시예에서, 본 발명은 게스트 물리 어드레스 위치를 업데이트하는 것이 바람직하고 또한 여전히 액세스 요청에 속해있는 요구되는 페이지 에 대응하는 어드레스를 수정 또는 퍼지할 필요가 있을 때에, 가상 머신 환경 내에서 사용될 방법으로서의 용도도 갖고 있다. 수정될 페이지들로의 참조는 임시 게스트 물리 어드레스 위치, 번역 룩-어사이드 버퍼(translation look-aside buffer) 또는 쉐도우 페이지 테이블 내에서 찾아질 수 있다.
예시적인 실시예에 관한 이하의 상세한 설명은 물론, 상기의 발명의 개요도 첨부된 도면들을 참조하여 읽으면 더 잘 이해할 수 있다. 본 발명의 실시예들을 설명하기 위하여, 본 발명의 예시적인 구성들의 도면이 도시되어 있지만, 본 발명은 여기에 개시되어 있는 특정한 방법 및 수단으로 한정되지 않는다.
본 발명의 한 양태에서, 게스트 물리 어드레스 공간의 신속한 삭제 또는 수정을 허용하기 위해 GPA 공간의 어느 섹션들이 게스트 물리 어드레스를 게스트 가상 어드레스에 맵핑시키는 추가의 데이터 구조를 필요로 하는지를 결정하기 위하여, GPA 공간의 일시적 또는 임시적 영역이 생성된다. 이러한 특징은 가상 머신 환경 내의 파티션들 또는 가상 머신들 간의 I/O 트랜잭션의 지원을 위해 필요한 GPA 공간의 신속한 삽입 및 제거에 유용하다. 일례로서, 가상 머신들 간의 DMA 트랜잭션의 지원은 임시 GPA 공간의 사용으로 용이해질 수 있다. 일 실시예에서, GPA 공간의 일시적(transient) 또는 임시적(temporary) 영역은 게스트 또는 가상화 소프트웨어 중 하나에 의해, GPA 공간 내에 있되 게스트 머신 오퍼레이팅 시스템에서의 정상적인 어플리케이션 동작을 위해 할당된 공간 외부에 있는 공간으로서 정의된다. 이와 같이 정상적인 게스트 오퍼레이팅 시스템 외부에 있는 위치를 사용하면, 게스트 오퍼레이팅 시스템 또는 게스트 어플리케이션이 정상적인 게스트 가 상 머신 동작에서 일시적 또는 임시적 공간을 우연하게 사용하는 문제를 회피할 수 있다.
게스트 물리 어드레스의 일시적 또는 임시적 영역의 도입은, GPA 수정 또는 퍼지 동안, 일부 어드레스 영역들은 반드시 신속하게 제거되어야 하는 반면에, 다른 어드레스 영역들은 가상 머신의 수명 동안 거의 또는 전혀 변하지 않는다는 관찰에 기초한 것이다. 따라서, 별도의 임시 SPA-대-GVA 역방향 맵핑 테이블이 구현되었다면, 그것은 많이 사용되지는 않았을 것이고, 메모리 자원의 소비는 타당하지 않을 수 있다. 결과적으로, 본 발명의 한 양태에 따르면, 변경되어야 하는 특정 GVA들을 식별하기 위한 SPA-대-GVA 맵핑은 일시적 영역에 대해서만 유지된다. GPA-대-SPA 맵 내의 비-일시적 영역이 수정되는 경우, GVA-대-SPA 맵핑으로부터의 GVA의 보다 느린 퍼지가 수행된다.
본 발명의 한 양태에서, 일시적인 것으로 표시된 게스트 물리 어드레스 공간의 부분들을 위하여, GPA로부터 GVA를 신속하게 식별할 수 있게 해 주는 추가의 GPA-대-GVA 맵핑이 유지된다. 도 4는 GPA-대-GVA 맵핑의 일례를 도시한 것이다. 하나의 GPA에 맵핑될 수 있는 GVA는 잠재적으로 복수개임에 유의해야 한다. 예를 들어, 도 4에서 GPA 100은 GVA 8000:000, 8000:1000, 8000:2000 및 8000:3000에 맵핑될 수 있다.
본 발명의 다른 양태에서, 식별된 페이지들은 DMA 동작과 같은 I/O 트랜잭션들에 대하여 "잠궈질(locked)" 수 있다. 게스트 물리 어드레스 범위를 퍼지하고 그 어드레스들에 대한 대응 참조를 제거하는 것이 바람직하게 된 때에, 페이지가 현재 또는 계류 중인 I/O 또는 기타 DMA 트랜잭션에 관련되어 있다면, 수정은 행해지지 않는 것이 바람직하다. 본 발명의 한 양태에 따르면, 게스트 물리 어드레스에 대응하여 잠긴 상태를 유지하면, GPA 공간의 퍼지 또는 수정이 계류 중일 때에 I/O 액세스 또는 DMA 등의 기타 동작이 계속될 수 있게 된다.
전술한 바와 같이, 하나의 페이지가 I/O 또는 DMA 트랜잭션과 같은 다수의 계류 중인 동작에 관련될 수 있다. 수정되는 영역의 일부분에 대하여 미해결의 DMA 요청이 있는 동안에는 GPA-대-SPA 맵핑의 수정을 금지하는 것이 바람직하다. 본 발명의 한 양태에서, 주어진 페이지에 대하여 계류 중인 DMA와 같은 I/O 또는 기타 트랜잭션의 개수를 기록하기 위하여, 참조 카운터가 사용된다. 일 구현예에서, 미해결 트랜잭션들의 참조 카운트는, DMA 동작과 같은 미해결 I/O 또는 기타 트랜잭션들을 갖는 페이지를 포함하는 게스트 물리 어드레스 공간에 대한 수정을 허가 또는 불허하는 데에 사용된다. 참조 카운트의 사용은, 미해결 트랜잭션들이 진행중인 동안 게스트 물리 어드레스 공간이 수정되는 것을 회피하고, 또한 단일 페이지에 대해 다수의 남아있는 DMA 요청이 존재할 때에 DMA 제외 벡터 내에 단일 플래그를 유지하는 이중적인 문제를 해결한다.
참조 카운트와 관련하여, GPA-대-SPA 맵은 참조 카운트가 0이 아닌 동안에는 수정되지 않는 것이 바람직하다. 또한, GPA-대-SPA 맵을 수정하라는 요청이 수신된 때에, 참조 카운트가 0이 아니라면, 새로운 DMA 요청의 처리는 게스트 물리 어드레스 공간을 수정하라는 요청이 처리될 때까지 연기될 수 있다.
메모리 내에서 특정 페이지가 잠궈지고 게스트 물리 어드레스 공간을 수정 또는 퍼지하기 위한 요청이 임의적으로 긴 기간 동안 보류되는 상황을 방지하기 위하여, I/O 트랜잭션은 차단(blocking)된 채로 유지될 수 있다. 게스트 물리 어드레스가 폐쇄된 상태(closed state)에 있을 때, DMA 요청과 같은 트랜잭션을 위해 그 영역 내에 있는 페이지들을 잠그라는 새로운 요청은 실패하거나, 게스트 물리 어드레스 공간에 대한 수정이 이루어진 이후까지 기다릴 것이다. 이러한 상태는 임의적으로 오랜 대기 기간에 의해 GPA 공간이 수정되지 못하는 것을 방지할 수 있다. 상기에서 GPA-대-SPA 맵의 수정을 보호하기 위하여 사용된 방식은 DMA 제외 벡터를 보호하는 데에도 사용될 수 있다. 구체적으로, 특정 페이지에 대하여 미해결 DMA 트랜잭션의 개수에 대한 참조 카운트가 유지되고, 카운트가 0에 도달하면, 어드레스는 수정될 수 있다. 따라서, 참조 카운트가 0에 도달하고, 페이지에 대한 추가의 I/O 어드레스가 현재 계류 중이지 않다면, 페이지는 DMA를 통해 액세스가능하지 않은 것으로 표시된다.
본 발명의 다른 양태에서, 게스트 물리 어드레스 공간의 신속한 수정 및 질의를 위하여, 밸런싱된 바이너리 트리(balanced binary tree)가 사용된다. 게스트 물리 어드레스 공간 맵 내의 엔트리들은 게스트 어플리케이션들로부터의 요청들에 기초하여 삽입, 삭제 및 질의될 수 있다. 게스트 물리 어드레스 공간 데이터 구조의 신속한 삽입, 제거 및 질의를 달성하기 위하여, 밸런싱된 바이너리 트리 데이터 구조가 선호된다. 밸런싱된 바이너리 트리는 게스트 물리 어드레스 공간 상에서의 모든 동작에 대하여 O(log2 n)의 최저 성능(worst case performance)을 제공한다.
도 5는 본 발명의 양태들에 따른 예시적인 방법(500)을 도시한 것이다. 이 방법이 수행되는 컴퓨터 환경은 호스트 컴퓨터가 2개 이상의 가상 머신에 자원을 제공하는 도 1에서와 유사한 가상 머신 환경인 것으로 가정한다. 가상 머신이 호스트 자원을 요청하는 환경에서, 게스트 가상 어드레스는 게스트 물리 어드레스로 번역된 후, 시스템 물리 어드레스로 번역된다. 이와 같이 수행되고 나면, 가상 머신 동작을 가속화하기 위하여, 쉐도우 페이지 테이블과 번역 룩-어사이드 버퍼 둘 다에서의 어드레스 번역이 사용된다. 그러나, 게스트 물리 어드레스 공간에 대한 변경이 필요한 때에, 쉐도우 페이지 테이블 및 번역 룩-어사이드 버퍼는 맵핑되지 않은 어드레스로의 불필요한 액세스를 방지하고 어드레스 공간 내의 보다 더 적합한 영역들로 재맵핑하기 위한 업데이트를 필요로 한다. 도 5의 예시적인 방법(500)은 이러한 환경에서 동작하며, 한 파티션 또는 가상 머신으로부터 다른 파티션 또는 가상 머신으로의 액세스를 허용하는 한편, 어드레스 변경 및 업데이트 메커니즘의 일부로서 사용될 수 있다.
방법(500)의 시작은, 가상 머신들 간에서 페이지를 공유하기 위하여, 제1 가상 머신 내의 임시적인 게스트 물리 어드레스 공간의 할당이 확인되는 셋업일 수 있다 (단계 510). 이러한 임시적 또는 일시적 공간은 게스트 물리 어드레스 영역 내에 있되, 그 가상 머신 내에서 그 게스트 물리 어드레스 영역을 사용하는 어플리케이션들의 동작 범위 밖에 있도록 배치되는 것이 바람직하다. 그러한 일시적 영역은 처음에 가상화 소프트웨어에 의해 가상 머신 내에 할당될 수 있다. 대안적으로, 일시적 또는 임시적 영역은 게스트 오퍼레이팅 시스템에 의해 할당될 수 있다. 게스트 물리 어드레스 공간 내의 임시 영역의 할당은 가상 머신-대-가상 머신 트랜잭션 이전의 임의의 시간에서 달성될 수 있으며, 트랜잭션이 요구될 때마다 달성될 필요는 없다.
메모리의 입출력 액세스 또는 직접 메모리 액세스와 같은 동작을 수행하라는 요청이 제2 가상 머신으로부터 제1 가상 머신으로 수신된다 (단계 520). 액세스는 가상 머신 환경 내에서 호스트 컴퓨터 상의 가상화 소프트웨어를 통해 라우팅되다. 요청에 응답하여, 그 요청 내의 어드레스 페이지에 관련된 참조 카운터가 증분된다 (단계 530). 이것은 대상 페이지를 잠그는 효과를 가지며, 지정된 페이지를 공유하기 위한 준비가 행해질 수 있다. 요청된 트랜잭션이 DMA 동작인 경우, 그리고 참조 카운터가 0에서 1로 증분된 경우, DMA 동작이 허용되는지를 확인하기 위하여, DMA 제외 벡터가 검사된다. 대상 페이지들이 존재하며 또한 유효한 GPA-대-SPA 맵핑임을 확인하기 위하여, 그 대상 페이지들도 검사된다.
그 다음 대상 페이지들은 이전에 정의된 임시 어드레스 범위 내의 제1 가상 머신의 게스트 물리 어드레스 공간 내로 맵핑된다 (단계 540). 제1 가상 머신의 게스트 물리 어드레스로 페이지들이 맵핑된 후, 의도된 트랜잭션이 시작될 수 있다 (단계 550). 액세스가 DMA 요청인 경우, 트랜잭션을 시작하는 것은, DMA 트랜스퍼를 확립 및 수행하기 위하여 판독 및 기입 커맨드 등의 커맨드, 비디오 컬러와 같은 특정 유형의 데이터를 위한 트랜잭션 등의 파라미터, 및 제2 가상 머신으로부터 제1 가상 머신으로의 특정 소스 및 목적지 어드레스를 송신하는 것을 포함한다.
제2 가상 머신과 제1 가상 머신 간에 데이터가 교환된 후, 트랜잭션이 완료 된다 (단계 560). 트랜잭션이 DMA 동작인 경우, 제1 가상 머신은 데이터가 트랜스퍼되었다는 신호를 제2 가상 머신에 보낸다. 완료되면, 제2 가상 머신은 트랜잭션에 관련된 페이지들을 잠금해제하고 공유해제하기 위한 표시를 가상화 소프트웨어에 송신한다. 단계(530)에서 증분된 참조 카운터는 감소된다[단계(570)]. 트랜잭션이 DMA 동작인 경우, 참조 카운트는 1에서 0으로 되고, 그러면 DMA 제외 벡터는 더 이상의 DMA 트랜잭션을 허용하지 않도록 설정될 수 있다. 본 발명의 한 양태에서, 이러한 액션은, 시스템이 DMA 트랜잭션이 완료된 후에 대상 페이지를 포함하는 게스트 물리 어드레스 범위를 수정 또는 퍼지할 수 있게 해 준다.
참조 카운터가 감소된 후에도 여전히 계류 중인 트랜잭션이 존재한다면, 그러한 트랜잭션들이 실행될 수 있다. 실행이 완료되고, 참조 카운터가 0으로 되면, 시스템은 대상 페이지 또는 맵핑을 요구되는 대로 자유롭게 수정할 수 있다. 참조 카운터가 0으로 감소된 후에는 필요에 따라 맵핑이 수정될 수 있다[단계(580)]. 이러한 재맵핑 기회는, 시스템이 게스트 물리 어드레스 공간 내의 변경들을 수용하기 위하여 반드시 변경되어야 하는 어드레스들에 관련된 맵핑을 변경하거나 퍼지하기 위하여 수정될 트랜잭션 룩-어사이드 버퍼 및 쉐도우 페이지 테이블을 업데이트할 수 있게 해 준다.
예시적인 컴퓨팅 장치
도 6 및 이하의 논의는 본 발명의 실시예들이 구현될 수 있는 적합한 컴퓨팅 환경의 개괄적인 설명을 제공하도록 의도된 것이다. 이하에서는 일반 목적의 컴퓨터가 설명되지만, 이것은 하나의 단일 프로세서 예시일 뿐이며, 네트워크/버스 상 호운용성 및 상호작용을 갖는 기타 컴퓨팅 장치들과 함께 복수의 프로세서를 갖는 본 발명의 실시예들도 구현될 수 있음을 알 것이다. 따라서, 본 발명의 실시예들은 아주 적은 또는 최소한의 클라이언트 자원들이 포함되는 네트워크화된 호스트 서비스들의 환경, 예를 들어 클라이언트 장치가 장비, 또는 다른 컴퓨팅 장치 및 객체 내에 위치된 객체와 같이, 네트워크/버스에 대한 인터페이스로서만 기능하는 네트워크화된 환경에서 구현될 수 있다. 본질적으로, 데이터가 저장될 수 있고 검색될 수 있는 곳이라면 어디든 동작에 바람직하고 적합한 환경이다.
필수적인 것은 아니지만, 본 발명의 실시예들은 장치 또는 객체에 대한 서비스의 개발자에 의한 사용을 위해 오퍼레이팅 시스템을 통해 구현되고/되거나 어플리케이션 소프트웨어 내에 포함될 수 있다. 소프트웨어는 클라이언트 워크스테이션, 서버 또는 기타 장치들과 같이, 하나 이상의 컴퓨터에 의해 실행되고 있는 프로그램 모듈 등의 컴퓨터 실행가능 명령어들에 일반적으로 관련하여 설명될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 타입을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 전형적으로, 프로그램 모듈의 기능성은 다양한 실시예들에서의 필요에 따라 조합 또는 분산될 수 있다. 또한, 당업자라면, 본 발명의 다양한 실시예들이 다른 컴퓨터 구성으로도 구현될 수 있음을 알 것이다. 사용에 적합할 수 있는 다른 공지된 컴퓨팅 시스템, 환경 및/또는 구성으로는 퍼스널 컴퓨터(PC), ATM(automated teller machine), 서버 컴퓨터, 핸드핼드 또는 랩탑 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 프로그래밍가능한 소비자 가전기기, 네트워크 PC, 장비, 조 명, 환경 제어 소자, 미니컴퓨터, 메인프레임 컴퓨터 등이 포함되지만, 그에 한정되는 것은 아니다. 본 발명의 실시예들은 통신 네트워크/버스 또는 기타 데이터 전송 매체를 통해 링크된 원격 프로세싱 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 구현될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하는 로컬 및 원격 컴퓨터 저장 매체 둘다에 위치될 수 있으며, 클라이언트 노드는 서버 노드로서 기능할 수 있다.
이에 따라, 도 6은 본 발명의 실시예들이 구현될 수 있는 적합한 컴퓨팅 시스템 환경(600)의 일례를 도시하고 있지만, 상기에서 분명하게 밝히고 있는 바와 같이, 컴퓨팅 시스템 환경(600)은 적합한 컴퓨팅 환경의 일례일 뿐이며, 본 발명의 실시예의 용도 또는 기능성의 범위에 어떤 제한을 가하려는 의도는 없다. 또한, 컴퓨팅 환경(600)은 예시적인 컴퓨팅 환경(600)에 나타난 컴포넌트들 중 임의의 것 또는 그들에 조합에 관련된 어떠한 종속성이나 요구조건을 갖는 것으로 해석되어서도 안된다.
도 6을 참조하면, 본 발명의 실시예를 구현하기 위한 예시적인 시스템은 컴퓨터 시스템(610)의 형태로 된 일반 목적의 컴퓨팅 장치를 포함한다. 컴퓨터 시스템(610)의 컴포넌트들은 프로세싱 유닛(620), 시스템 메모리(630), 및 시스템 메모리를 비롯한 다양한 시스템 컴포넌트들을 프로세싱 유닛(620)에 연결하는 시스템 버스(621)를 포함하지만, 이에 한정되는 것은 아니다. 시스템 버스(621)는 메모리 버스 또는 메모리 컨트롤러, 주변 버스, 및 다양한 버스 아키텍쳐 중 임의의 것을 사용하는 로컬 버스를 포함하는 여러 유형의 버스 구조 중 임의의 것일 수 있다. 한정적이지 않은 예를 들면, 그러한 아키텍쳐로는 ISA(Industrial Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 버스, 및 PCI(Peripheral Component Interconnect) 버스(메자닌 버스라고도 알려져 있음)가 포함된다.
전형적으로, 컴퓨터 시스템(610)은 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터 시스템(610)에 의해 액세스될 수 있고, 휘발성 및 비휘발성 매체, 분리가능형 및 분리불가능형 매체 둘다를 포함하는 임의의 매체일 수 있다. 제한적이지 않은 예를 들면, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성의 분리가능형 및 분리불가능형 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, CD-RW, DVD 또는 기타 광 디스크 저장장치, 자기 카세트, 자기 테입, 자기 디스크 저장장치 또는 기타 자기 저장 장치, 또는 원하는 정보를 저장하는 데에 사용될 수 있고 컴퓨터 시스템(610)에 의해 액세스될 수 있는 임의의 기타 매체를 포함하지만, 이에 한정되지는 않는다. 전형적으로, 통신 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터를 반송파 또는 기타 전송 메커니즘과 같은 변조된 데이터 신호에 구현하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 그 특성 중 하나 이상이 신호 내에 정보를 인코딩하는 방식으로 설정 또는 변경된 신호를 의미한다. 제한 적이지 않은 예를 들면, 통신 매체는 유선 네트워크 또는 직접 배선 접속과 같은 유선 매체, 및 음향, RF, 적외선 및 기타 무선 매체와 같은 무선 매체를 포함한다. 또한, 상기 나열한 것들의 임의의 조합도 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
시스템 메모리(630)는 판독 전용 메모리(ROM)(631) 및 랜덤 액세스 메모리(RAM)(632)와 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 기동 시 등에 컴퓨터 시스템(610) 내의 구성요소들 간의 정보 전송을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(633)(BIOS)은 전형적으로 ROM(631) 내에 저장된다. 전형적으로, RAM(632)은 프로세싱 유닛(620)이 즉각적으로 액세스할 수 있고/있거나 프로세싱 유닛(620)에 의해 현재 실행 중인 데이터 및/또는 프로그램 모듈을 포함한다. 제한적이지 않은 예로서, 도 6은 오퍼레이팅 시스템(634), 어플리케이션 프로그램(635), 기타 프로그램 모듈(636) 및 프로그램 데이터(637)를 도시하고 있다.
컴퓨터 시스템(610)은 다른 분리가능형/분리불가능형의 휘발성/비휘발성 컴퓨터 저장 매체도 포함할 수 있다. 단지 예로서, 도 6은 분리불가능형 비휘발성 자기 매체에 대한 판독 또는 기입을 행하는 하드 디스크 드라이브(641), 분리가능형 비휘발성 자기 디스크(652)에 대한 판독 또는 기입을 행하는 자기 디스크 드라이브(651), CD-ROM, CD-RW, DVD 또는 기타 광 매체와 같은 분리가능형 비휘발성 광 디스크(656)에 대한 판독 또는 기입을 행하는 광 디스크 장치(655)를 도시하고 있다. 예시적인 오퍼레이팅 환경에서 사용될 수 있는 다른 분리가능형/분리불가능형 의 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테입 카세트, 플래시 메모리 카드, DVD, 디지탈 비디오 테입, 고체 상태 RAM, 고체 상태 ROM 등을 포함하지만, 이에 한정되지는 않는다. 전형적으로, 하드 디스크 드라이브(641)는 인터페이스(640)와 같은 분리불가능형 메모리 인터페이스를 통해 시스템 버스(621)에 접속되고, 자기 디스크 드라이브(651) 및 광 디스크 드라이브(655)는 인터페이스(650)와 같은 분리가능형 메모리 인터페이스에 의해 시스템 버스(621)에 접속된다.
상기에 논의되고 도 6에 도시된 드라이브들 및 그 관련 컴퓨터 저장 매체는 컴퓨터 시스템(610)에 대하여 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 저장을 제공한다. 예를 들어, 도 6에서, 하드 디스크 드라이브(641)는 오퍼레이팅 시스템(644), 어플리케이션 프로그램(645), 기타 프로그램 모듈(646) 및 프로그램 데이터(647)를 저장하는 것으로 도시되어 있다. 이러한 컴포넌트들은 오퍼레이팅 시스템(634), 어플리케이션 프로그램(635), 기타 프로그램 모듈(636) 및 프로그램 데이터(637)와 동일할 수도 있고 다를 수도 있음에 유의해야 한다. 오퍼레이팅 시스템(644), 어플리케이션 프로그램(645), 기타 프로그램 모듈(646) 및 프로그램 데이터(647)는 적어도 그들이 상이한 사본임을 나타내기 위하여 상이한 번호들을 부여받았다. 사용자는 키보드(662), 및 마우스, 트랙볼 또는 터치패드라고 흔하게 칭해지는 포인팅 장치(661)와 같은 입력 장치를 통하여, 컴퓨팅 시스템(610)에 커맨드 및 정보를 입력할 수 있다. (도시되지 않은) 기타 입력 장치는 마이크로폰, 조이스틱, 게임패드, 위성 접시, 스캐너 등을 포함할 수 있다. 여기에 개시된 것과 그 외의 입력 장치들은 주로 시스템 버스(621)에 연결 된 사용자 입력 인터페이스(660)를 통해 프로세싱 유닛(620)에 접속되지만, 병렬 포트, 게임 포트 또는 USB와 같은 기타 인터페이스 및 버스 구조에 의해서도 접속될 수 있다. 모니터(691) 또는 기타 유형의 디스플레이 장치도 (도시되지 않은) 비디오 메모리와 통신할 수 있는 비디오 인터페이스(690) 등의 인터페이스를 통해 시스템 버스(621)에 접속된다. 컴퓨터 시스템은 모니터(691) 이외에, 출력 주변장치 인터페이스(695)를 통해 접속될 수 있는 스피커(697) 및 프린터(696)와 같은 기타 주변 출력 장치를 포함할 수 있다.
컴퓨터 시스템(610)은 원격 컴퓨터(680)와 같은 하나 이상의 원격 컴퓨터로의 논리 접속을 이용하여 네트워크 또는 분산 환경에서 동작할 수 있다. 원격 컴퓨터(680)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 공통 네트워크 노드일 수 있으며, 도 6에는 메모리 저장 장치(681)만이 도시되어 있지만, 전형적으로는 컴퓨터 시스템(610)에 관련하여 상기에서 설명한 구성요소들 중 다수 또는 전부를 포함한다. 도 6에 도시된 논리 접속은 근거리 네트워크(LAN)(671) 및 광역 네트워크(WAN)(673)를 포함하지만, 다른 네트워크/버스도 포함할 수 있다. 그러한 네트워크 환경은 가정, 사무실, 기업 규모 컴퓨터 네트워크, 인트라넷 및 인터넷에서 흔한 것이다.
LAN 네트워크 환경에서 사용될 때, 컴퓨터 시스템(610)은 네트워크 인터페이스 또는 어댑터(670)를 통해 LAN(671)에 접속된다. WAN 네트워크 환경에서 사용될 때, 컴퓨터 시스템(610)은 전형적으로 모뎀(672), 또는 인터넷과 같은 WAN(673)을 통한 통신을 확립하기 위한 다른 수단을 포함한다. 내장형일 수도 있고 외장형일 수도 있는 모뎀(672)은 사용자 입력 인터페이스(660) 또는 기타 적절한 메커니즘을 통해 시스템 버스(621)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터 시스템(610)과 관련하여 설명된 프로그램 모듈 또는 그 일부는 원격 메모리 저장 장치에 저장될 수 있다. 제한적이지 않은 예로서, 도 6은 원격 어플리케이션 프로그램이 메모리 장치(681) 상에 상주하는 것으로 도시하고 있다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들 간의 통신 링크를 확립하기 위한 다른 수단들도 사용될 수 있음을 알 것이다.
퍼스널 컴퓨터와 인터넷의 수렴성과 관련하여, 다양한 분산 컴퓨팅 프레임워크가 개발되어 왔고, 또 현재도 개발 중이다. 개인 사용자와 기업 사용자 둘다 마찬가지로, 어플리케이션 및 컴퓨팅 장치에 대하여 한결같이 상호운영가능한 웹-인에이블드 인터페이스를 제공받으며, 이에 의해 컴퓨팅 활동들은 점점 더 웹 브라우저 또는 네트워크 지향적으로 되어 가고 있다.
예를 들어, 마이크로소프트사로부터 입수할 수 있는 MICROSOFT®의 .NET™ 플랫폼은 서버, 웹-기반 데이터 저장소와 같은 블록-구축 서비스, 및 다운로드가능한 장치 소프트웨어를 포함한다. 여기에서, 예시적인 실시예들은 컴퓨팅 장치에 상주하는 소프트웨어에 관련하여 설명되지만, 본 발명의 하나 이상의 부분은 오퍼레이팅 시스템, 어플리케이션 프로그래밍 인터페이스(API), 또는 코프로세서, 디스플레이 장치 및 요청측 객체 중 임의의 것들 간의 미들맨 객체(middle man object)를 통해 구현되어, 동작이 다른 분산 컴퓨팅 프레임워크는 물론, .NET의 언어 및 서비스 전부에 의해 수행, 지원 또는 액세스될 수 있게 할 수 있다.
전술한 바와 같이, 본 발명의 실시예들이 다양한 컴퓨팅 장치 및 네트워크 아키텍쳐와 관련하여 설명되었지만, 기본적인 개념들은 내장된 시스템을 위한 소프트웨어 프로그램 프로파일러를 구현하는 것이 바람직한 임의의 컴퓨팅 장치 또는 시스템에 적용될 수 있다. 따라서, 본 발명의 실시예들과 관련하여 설명된 방법 및 시스템은 다양한 어플리케이션 및 장치에 적용될 수 있다. 여기에서, 예시적인 프로그래밍 언어, 이름 및 예시들은 다양한 선택안들을 나타내도록 선택되었으며, 이러한 언어, 이름 및 예시들은 한정적인 것으로 의도된 것이 아니다. 당업자라면, 본 발명의 실시예들에 의해 달성된 시스템 및 방법과 동일, 유사 또는 등가인 시스템 및 방법을 달성하는 객체 코드를 제공하는 다양한 방법들이 존재함을 알 것이다.
여기에 설명된 다양한 기술들은 하드웨어 또는 소프트웨어, 또는 적절하게는 그 둘의 조합과 관련하여 구현될 수 있다. 따라서, 본 발명의 방법 및 장치, 또는 그 특정 양태나 부분은 플로피 디스크, CD-ROM, 하드 드라이브 또는 임의의 다른 기기 판독가능 저장 매체와 같은 실체적인 매체로 구현된 프로그램 코드의 형태를 취할 수 있으며, 프로그램 코드가 컴퓨터와 같은 기기에 로드되어 실행될 때, 그 기기가 본 발명을 구현하는 장치로 된다. 프로그래밍가능한 컴퓨터에서 프로그램 코드가 실행되는 경우에서, 컴퓨팅 장치는 일반적으로, 프로세서, 프로세서에 의해 판독가능한 저장 매체(휘발성 및 비휘발성 메모리 및/또는 저장 소자 포함), 적어도 하나의 입력 장치, 및 적어도 하나의 출력 장치를 포함할 것이다. 예를 들어 데이터 프로세싱 API 등을 사용하여 본 발명의 실시예의 신호 처리 서비스를 이 용할 수 있는 하나 이상의 프로그램은, 컴퓨터와 통신하기 위하여 하이레벨의 절차적 또는 객체 지향적 프로그래밍 언어로 구현되는 것이 바람직하다. 그러나, 필요에 따라, 프로그램은 어셈블리 또는 기기 언어로 구현될 수 있다. 어떠한 경우에서든, 언어는 컴파일 또는 번역된 언어일 수 있으며, 하드웨어 구현과 조합될 수 있다.
본 발명의 양태들이 다양한 도면의 바람직한 실시예와 관련하여 설명되었지만, 본 발명의 범위를 벗어나지 않고서, 다른 유사한 실시예들이 사용될 수 있으며, 또한 본 발명의 동일 기능을 수행하기 위해 개시된 실시예들에 수정 및 추가가 이루어질 수 있음을 알아야 한다. 또한, 특히 무선 네트워크 장치의 수가 급격하게 증가함에 따라, 핸드핼드 장치의 오퍼레이팅 시스템 또는 다른 어플리케이션 특유의 오퍼레이팅 시스템을 비롯한 다양한 컴퓨터 플랫폼이 예상될 수 있음이 강조해야 한다. 그러므로, 청구되는 본 발명은 어떠한 하나의 실시예로 제한되어서는 안 되며, 오히려 첨부된 특허청구범위에 따른 폭과 범위 내에 있는 것으로 간주되어야 한다.
본 발명에 따르면, 게스트-대-호스트 물리 어드레스에서 사용되는 기준 테이블로부터 물리 어드레스 공간의 퍼지 또는 수정을 허용하면서도, 가상 머신들 간의 DMA 및 기타 I/O 동작과 같은 물리 어드레스로의 소정의 액세스를 허용하는 방법 및 시스템이 제공된다.

Claims (20)

  1. 호스트 컴퓨터로부터의 자원들을 사용하여 동작하는 가상 머신들 간에서 페이지들을 공유하는 방법으로서,
    가상 머신들 간에서 페이지들을 공유하기 위하여 제1 가상 머신의 임시 게스트 물리 어드레스 범위를 할당하는 단계,
    상기 제1 가상 머신이 이용할 수 있는 페이지들에 액세스하려는 요청을 제2 가상 머신으로부터 수신하는 단계 -상기 요청은 상기 호스트 컴퓨터 상의 가상화 소프트웨어(virtualization software)에 의해 수신됨- ,
    상기 페이지들에 대한 계류 중인 액세스들의 참조 카운트를 증분시키는 단계 -상기 참조 카운트는 계류 중인 액세스들의 개수를 표시함- ,
    상기 제1 가상 머신의 상기 임시 게스트 물리 어드레스 범위의 한 부분에 상기 페이지들을 맵핑하는 단계,
    상기 제1 가상 머신이 이용할 수 있는 페이지들이 상기 제2 가상 머신에 의해 액세스되도록 허용하는 단계,
    상기 제2 가상 머신에 의해 페이지들의 액세스를 완료하고, 상기 가상화 소프트웨어에 액세스 완료를 통지하는 단계,
    상기 페이지들에 대한 계류 중인 액세스들의 참조 카운트를 감소시키는 단계, 및
    상기 참조 카운트가 0인 경우, 상기 임시 게스트 물리 어드레스 범위로부터 상기 페이지들의 맵핑을 제거하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 제1 가상 머신이 이용할 수 있는 페이지들에 액세스하려는 요청을 제2 가상 머신으로부터 수신하는 단계는, 제1 가상 머신에 맵핑된 페이지들에 액세스하라는 직접 메모리 어드레스(direct memory address, DMA) 요청을 제2 가상 머신으로부터 수신하는 단계를 포함하는 방법.
  3. 제1항에 있어서,
    상기 페이지들에 대한 계류 중인 액세스들의 참조 카운트를 증분시키는 단계는, DMA 트랜스퍼를 위한 참조 카운트를 증분시키는 단계를 포함하고, 또한 상기 페이지들에 대한 게스트 물리 어드레스-대-호스트 물리 어드레스 맵핑이 유효하고 DMA 제외 벡터(DMA exclusion vector)가 상기 페이지들에 대한 액세스를 허용함을 검증하는 단계를 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 제1 가상 머신이 이용할 수 있는 페이지들이 상기 제2 가상 머신에 의해 액세스되도록 허용하는 단계는, 상기 제2 가상 머신과 소정 범위의 호스트 물리 어드레스들 간의 DMA 트랜스퍼를 셋업하는 단계를 포함하는 방법.
  5. 제1항에 있어서,
    상기 제2 가상 머신에 의해 페이지들의 액세스를 완료하고, 상기 가상 소프트웨어에 상기 액세스 완료를 통지하는 단계는, 상기 호스트 하드웨어로부터 DMA 동작들이 완료되었다는 표시를 수신하고, 상기 제1 가상 머신으로부터 상기 제2 가상 머신으로 완료 메시지를 송신하는 단계를 포함하며, 상기 제2 가상 머신이 상기 가상화 소프트웨어에 완료를 통지하는 방법.
  6. 제1항에 있어서,
    상기 페이지들에 대한 계류 중인 액세스들의 참조 카운트를 감소시키는 단계는, 상기 참조 카운트가 0으로 감소된 경우에 상기 페이지들에 대한 후속 DMA 동작을 제외시키도록 DMA 제외 벡터를 설정하는 단계를 포함하는 방법.
  7. 제1항에 있어서,
    상기 임시 게스트 물리 어드레스 범위로부터 상기 페이지들의 맵핑을 제거하는 단계는, 쉐도우 페이지 테이블(shadow page table) 및 번역 룩-어사이드 테이블(translation look-aside table) 중 하나로부터 상기 페이지들의 엔트리들을 언맵핑(un-mapping)하는 단계를 더 포함하는 방법.
  8. 가상 머신들 간에서 페이지들을 공유하기 위한 컴퓨터 시스템으로서,
    복수의 가상 머신이 이용할 수 있는 하드웨어 자원들을 갖는 호스트 컴퓨터,
    상기 호스트 컴퓨터와, 상기 복수의 가상 머신 중 임의의 가상 머신 간의 인터페이스를 포함하는 가상화 소프트웨어,
    적어도 하나의 페이지 자원에 대한 액세스를 갖는 제1 가상 머신, 및 제2 가상 머신,
    가상 머신들 간에서 페이지들을 공유하기 위한 상기 제1 가상 머신의 임시 게스트 물리 어드레스 범위,
    메모리에 대한 액세스를 갖는 호스트 프로세서
    를 포함하고,
    상기 메모리는, 실행된 때에,
    상기 제1 가상 머신이 이용할 수 있는 페이지들에 액세스하려는 요청을 제2 가상 머신으로부터 수신하는 단계 -상기 요청은 가상화 소프트웨어에 의해 수신됨- ,
    상기 페이지들에 대한 계류 중인 액세스들의 참조 카운트를 증분시키는 단계 -상기 참조 카운트는 계류 중인 액세스들의 개수를 표시함- ,
    상기 임시 게스트 물리 어드레스 범위의 한 부분에 상기 페이지들을 맵핑하는 단계,
    상기 제1 가상 머신이 이용할 수 있는 페이지들이 상기 제2 가상 머신에 의해 액세스되도록 허용하는 단계,
    상기 가상화 소프트웨어에 액세스 완료를 통지하는 단계,
    상기 페이지들에 대한 계류 중인 액세스들의 참조 카운트를 감소시키는 단계, 및
    상기 참조 카운트가 0인 경우, 상기 임시 게스트 물리 어드레스 범위로부터 상기 페이지들의 맵핑을 제거하는 단계
    를 포함하는 방법을 수행하는 명령어들을 갖는 시스템.
  9. 제8항에 있어서,
    번역 룩-어사이드 버퍼 및 쉐도우 페이지 테이블 중 적어도 하나를 더 포함하고,
    상기 번역 룩-어사이드 버퍼 및 상기 쉐도우 페이지 테이블 중 상기 적어도 하나는 상기 페이지들의 맵핑을 제거하는 단계의 결과로서 업데이트되는 시스템.
  10. 제9항에 있어서,
    상기 임시 게스트 물리 어드레스 범위로부터 상기 페이지들의 맵핑을 제거하는 단계는, 상기 쉐도우 페이지 테이블 및 상기 번역 룩-어사이드 버퍼 중 하나 이상으로부터의 상기 페이지들의 엔트리들을 언맵핑하는 단계를 더 포함하는 시스템.
  11. 제8항에 있어서,
    DMA 컨트롤러를 더 포함하고,
    상기 제1 가상 머신이 이용할 수 있는 페이지들이 상기 제2 가상 머신에 의 해 액세스되도록 허용하는 단계는, 상기 제2 가상 머신과 소정 범위의 호스트 물리 어드레스들 간에서 정보를 트랜스퍼하기 위하여 상기 DMA 컨트롤러를 셋업하는 단계를 포함하는 시스템.
  12. 제11항에 있어서,
    참조 카운터를 더 포함하고,
    상기 페이지들에 대한 계류 중인 액세스들의 참조 카운트를 증분시키는 단계는, 계류 중인 DMA 트랜스터를 나타내도록 상기 참조 카운터를 증분시키는 단계를 포함하고, 또한 상기 페이지들에 대한 게스트 물리 어드레스-대-호스트 물리 어드레스가 유효하며 DMA 제외 벡터가 상기 페이지들에 대한 액세스를 허용함을 검증하는 단계를 더 포함하는 시스템.
  13. 제12항에 있어서,
    상기 페이지들에 대한 계류 중인 액세스들의 참조 카운트를 감소시키는 단계는, 상기 참조 카운터가 0으로 감소된 경우에, 상기 페이지들에 대한 상기 DMA 컨트롤러 동작을 제외시키도록 DMA 제외 벡터를 설정하는 단계를 포함하는 시스템.
  14. 제11항에 있어서,
    상기 제2 가상 머신에 의해 상기 페이지들로의 액세스를 완료하고, 상기 가상 소프트웨어에 액세스 완료를 통지하는 단계는, 상기 DMA 컨트롤러로부터 상기 정보 트랜스퍼가 완료되었다는 표시를 수신하고, 상기 제1 가상 머신으로부터 상기 제2 가상 머신으로 완료 메시지를 송신하는 단계를 포함하며, 상기 제2 가상 머신이 상기 가상화 소프트웨어에 완료를 통지하는 시스템.
  15. 호스트 컴퓨터로부터의 자원들을 사용하여 동작하는 가상 머신들 간에서 페이지들을 공유하는 방법을 수행하기 위한 컴퓨터 실행가능 명령어들을 갖는 컴퓨터 판독가능 매체로서,
    상기 방법은,
    가상 머신들 간에서 페이지들을 공유하기 위하여 제1 가상 머신의 임시 게스트 물리 어드레스 범위를 할당하는 단계,
    상기 제1 가상 머신이 이용할 수 있는 페이지들에 액세스하려는 요청을 제2 가상 머신으로부터 수신하는 단계 -상기 요청은 상기 호스트 컴퓨터 상의 가상화 소프트웨어에 의해 수신됨- ,
    상기 페이지들에 대한 계류 중인 액세스들의 참조 카운트를 증분시키는 단계 -상기 참조 카운트는 상기 페이지들에 대한 다른 액세스를 잠그는 기능을 함- ,
    상기 제1 가상 머신의 상기 임시 게스트 물리 어드레스 범위의 한 부분에 상기 페이지들을 맵핑하는 단계,
    상기 제1 가상 머신이 이용할 수 있는 페이지들이 상기 제2 가상 머신에 의해 액세스되도록 허용하는 단계,
    상기 제2 가상 머신에 의해 상기 페이지들의 액세스를 완료하고, 상기 가상 화 소프트웨어에 액세스 완료를 통지하는 단계,
    상기 페이지들에 대한 계류 중인 액세스들의 참조 카운트를 감소시키는 단계, 및
    상기 참조 카운트가 0인 경우, 상기 임시 게스트 물리 어드레스 범위로부터 상기 페이지들의 맵핑을 제거하는 단계
    를 포함하는 컴퓨터 판독가능 매체.
  16. 제15항에 있어서,
    상기 제1 가상 머신이 이용할 수 있는 페이지들에 액세스하려는 요청을 제2 가상 머신으로부터 수신하는 단계는, 제1 가상 머신에 맵핑된 페이지들에 액세스하라는 직접 메모리 어드레스(direct memory address, DMA) 요청을 제2 가상 머신으로부터 수신하는 단계를 포함하는 컴퓨터 판독가능 매체.
  17. 제15항에 있어서,
    상기 페이지들에 대한 계류 중인 액세스들의 참조 카운트를 증분시키는 단계는, DMA 트랜스퍼를 위한 참조 카운트를 증분시키는 단계를 포함하고, 또한 상기 페이지들에 대한 게스트 물리 어드레스-대-호스트 물리 어드레스 맵핑이 유효하고 DMA 제외 벡터가 상기 페이지들에 대한 액세스를 허용함을 검증하는 단계를 더 포함하는 컴퓨터 판독가능 매체.
  18. 제15항에 있어서,
    상기 제1 가상 머신이 이용할 수 있는 페이지들이 상기 제2 가상 머신에 의해 액세스되도록 허용하는 단계는, 상기 제2 가상 머신과 소정 범위의 호스트 물리 어드레스들 간의 DMA 트랜스퍼를 셋업하는 단계를 포함하는 컴퓨터 판독가능 매체.
  19. 제15항에 있어서,
    상기 제2 가상 머신에 의해 페이지들로의 액세스를 완료하고, 상기 가상 소프트웨어에 액세스 완료를 통지하는 단계는, 호스트 하드웨어로부터 DMA 동작들이 완료되었다는 표시를 수신하고, 상기 제1 가상 머신으로부터 상기 제2 가상 머신으로 완료 메시지를 송신하는 단계를 포함하며, 상기 제2 가상 머신이 상기 가상화 소프트웨어에 완료를 통지하는 컴퓨터 판독가능 매체.
  20. 제15항에 있어서,
    상기 페이지들에 대한 계류 중인 액세스들의 참조 카운트를 감소시키는 단계는, 상기 참조 카운트가 0으로 감소된 경우에 상기 페이지들에 대한 후속 DMA 동작을 제외시키도록 DMA 제외 벡터를 설정하는 단계를 포함하는 컴퓨터 판독가능 매체.
KR1020060017164A 2005-03-08 2006-02-22 가상 머신들 간에서 페이지들을 공유하기 위한 방법,시스템 및 컴퓨터 판독가능 매체 KR20060099404A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/075,219 2005-03-08
US11/075,219 US7334076B2 (en) 2005-03-08 2005-03-08 Method and system for a guest physical address virtualization in a virtual machine environment

Publications (1)

Publication Number Publication Date
KR20060099404A true KR20060099404A (ko) 2006-09-19

Family

ID=36579174

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060017164A KR20060099404A (ko) 2005-03-08 2006-02-22 가상 머신들 간에서 페이지들을 공유하기 위한 방법,시스템 및 컴퓨터 판독가능 매체

Country Status (13)

Country Link
US (1) US7334076B2 (ko)
EP (1) EP1701268B1 (ko)
JP (1) JP4237190B2 (ko)
KR (1) KR20060099404A (ko)
CN (1) CN100578471C (ko)
AT (1) ATE521036T1 (ko)
AU (1) AU2006200312A1 (ko)
BR (1) BRPI0600347A (ko)
CA (1) CA2535484A1 (ko)
MX (1) MXPA06001608A (ko)
RU (1) RU2393534C2 (ko)
TW (1) TW200634551A (ko)
ZA (1) ZA200601080B (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100914081B1 (ko) * 2006-12-27 2009-08-27 인텔 코오퍼레이션 분할 시스템에서 메모리를 액세스하는 디바이스들에 대한게스트 대 호스트 어드레스 변환
KR101145144B1 (ko) * 2010-11-23 2012-05-14 한국과학기술정보연구원 가상머신 스케줄링 방법 및 시스템
KR101303079B1 (ko) * 2011-05-04 2013-09-03 한국과학기술원 멀티-코어 기반의 가상화 환경에서 캐쉬 일관성을 제어하는 장치 및 방법
WO2020159055A1 (ko) * 2019-01-28 2020-08-06 삼성전자주식회사 전자 장치 및 전자 장치의 제어 방법

Families Citing this family (103)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2864398A1 (fr) * 2003-12-23 2005-06-24 France Telecom Terminal de telecommunication a deux espaces d'execution
US7299337B2 (en) * 2005-05-12 2007-11-20 Traut Eric P Enhanced shadow page table algorithms
US7774514B2 (en) * 2005-05-16 2010-08-10 Infortrend Technology, Inc. Method of transmitting data between storage virtualization controllers and storage virtualization controller designed to implement the method
US7467292B2 (en) * 2005-05-19 2008-12-16 Dell Products L.P. Method and system for migrating information between information handling systems
US7370137B2 (en) * 2005-06-06 2008-05-06 Intel Corporation Inter-domain data mover for a memory-to-memory copy engine
US20060288130A1 (en) * 2005-06-21 2006-12-21 Rajesh Madukkarumukumana Address window support for direct memory access translation
US8423747B2 (en) * 2008-06-30 2013-04-16 Intel Corporation Copy equivalent protection using secure page flipping for software components within an execution environment
US7426627B2 (en) * 2006-03-10 2008-09-16 Microsoft Corporation Selective address translation for a resource such as a hardware device
US20070220217A1 (en) * 2006-03-17 2007-09-20 Udaya Shankara Communication Between Virtual Machines
US7636831B1 (en) * 2006-03-31 2009-12-22 Vmware, Inc. Optimization of reverse mappings for immutable guest physical pages of virtual memories in a virtualized computer system
DE102006032832A1 (de) * 2006-07-14 2008-01-17 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Netzwerksystem und Verfahren zur Steuerung verteilter Speicher
US7490191B2 (en) * 2006-09-22 2009-02-10 Intel Corporation Sharing information between guests in a virtual machine environment
US7657659B1 (en) * 2006-11-30 2010-02-02 Vmware, Inc. Partial copying of data to transmit buffer for virtual network device
JP4952308B2 (ja) 2007-03-09 2012-06-13 日本電気株式会社 メモリ共有システム、方法、及び、プログラム
US20100107163A1 (en) * 2007-03-20 2010-04-29 Sanggyu Lee Movable virtual machine image
US7984483B2 (en) 2007-04-25 2011-07-19 Acxess, Inc. System and method for working in a virtualized computing environment through secure access
US8799620B2 (en) 2007-06-01 2014-08-05 Intel Corporation Linear to physical address translation with support for page attributes
US8078827B2 (en) * 2007-07-05 2011-12-13 International Business Machines Corporation Method and apparatus for caching of page translations for virtual machines
US20100211944A1 (en) * 2007-09-12 2010-08-19 Mitsubishi Electric Corporation Information processing apparatus
US7890472B2 (en) 2007-09-18 2011-02-15 Microsoft Corporation Parallel nested transactions in transactional memory
US8117418B1 (en) * 2007-11-16 2012-02-14 Tilera Corporation Method and system for managing virtual addresses of a plurality of processes corresponding to an application
US9418220B1 (en) * 2008-01-28 2016-08-16 Hewlett Packard Enterprise Development Lp Controlling access to memory using a controller that performs cryptographic functions
US8104083B1 (en) * 2008-03-31 2012-01-24 Symantec Corporation Virtual machine file system content protection system and method
US8151032B2 (en) * 2008-06-26 2012-04-03 Microsoft Corporation Direct memory access filter for virtualized operating systems
US8230155B2 (en) 2008-06-26 2012-07-24 Microsoft Corporation Direct memory access filter for virtualized operating systems
JP5146174B2 (ja) * 2008-07-28 2013-02-20 富士通株式会社 仮想マシンモニタ装置およびプログラム,ならびに仮想マシン間メモリ共有管理方法
US8028113B2 (en) * 2008-08-15 2011-09-27 International Business Machines Corporation Methods and systems for deadlock-free allocation of memory
US9450960B1 (en) 2008-11-05 2016-09-20 Symantec Corporation Virtual machine file system restriction system and method
US8135937B2 (en) 2008-11-17 2012-03-13 International Business Machines Corporation Logical partition memory
US8301863B2 (en) * 2008-11-17 2012-10-30 International Business Machines Corporation Recursive logical partition real memory map
US10255463B2 (en) 2008-11-17 2019-04-09 International Business Machines Corporation Secure computer architecture
CN101800730B (zh) * 2009-02-09 2013-02-27 国际商业机器公司 安全增强的虚拟机通信方法和虚拟机系统
KR101144346B1 (ko) * 2009-02-20 2012-05-11 에스케이플래닛 주식회사 자바 애플리케이션 관리 방법 및 이를 실현시키기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체
CN101819564B (zh) 2009-02-26 2013-04-17 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
US9535767B2 (en) * 2009-03-26 2017-01-03 Microsoft Technology Licensing, Llc Instantiating a virtual machine with a virtual non-uniform memory architecture
US9529636B2 (en) 2009-03-26 2016-12-27 Microsoft Technology Licensing, Llc System and method for adjusting guest memory allocation based on memory pressure in virtual NUMA nodes of a virtual machine
US8225069B2 (en) * 2009-03-31 2012-07-17 Intel Corporation Control of on-die system fabric blocks
JP5246014B2 (ja) * 2009-04-22 2013-07-24 富士通株式会社 仮想化プログラム、仮想化処理方法及び装置
US8458368B2 (en) * 2009-05-26 2013-06-04 Oracle America, Inc. System and method for discovering and protecting shared allocated resources in a shared virtualized I/O device
US8521919B2 (en) * 2009-06-30 2013-08-27 International Business Machines Corporation Direct memory access in a computing environment
US8270405B2 (en) * 2009-06-30 2012-09-18 Intel Corporation Multicast support on a switch for PCIe endpoint devices
US8799879B2 (en) * 2009-06-30 2014-08-05 Oracle America, Inc. Method and apparatus for protecting translated code in a virtual machine
US9389895B2 (en) 2009-12-17 2016-07-12 Microsoft Technology Licensing, Llc Virtual storage target offload techniques
US9606936B2 (en) * 2010-12-16 2017-03-28 Advanced Micro Devices, Inc. Generalized control registers
US8755283B2 (en) 2010-12-17 2014-06-17 Microsoft Corporation Synchronizing state among load balancer components
JP5573649B2 (ja) 2010-12-17 2014-08-20 富士通株式会社 情報処理装置
US8612550B2 (en) 2011-02-07 2013-12-17 Microsoft Corporation Proxy-based cache content distribution and affinity
US9792136B2 (en) * 2011-04-28 2017-10-17 Microsoft Technology Licensing, Llc Hardware assisted inter hypervisor partition data transfers
US8527544B1 (en) * 2011-08-11 2013-09-03 Pure Storage Inc. Garbage collection in a storage system
WO2013032495A1 (en) * 2011-08-30 2013-03-07 Hewlett-Packard Development Company , L.P. Communication with a virtual trusted runtime bios
JP6063941B2 (ja) 2011-08-30 2017-01-18 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. システム管理要求のための仮想高特権モード
US8656137B2 (en) * 2011-09-01 2014-02-18 Qualcomm Incorporated Computer system with processor local coherency for virtualized input/output
US9146785B2 (en) 2011-09-14 2015-09-29 Microsoft Technology Licensing, Llc Application acceleration in a virtualized environment
JP5922898B2 (ja) 2011-09-15 2016-05-24 キヤノン株式会社 情報処理装置、通信方法およびプログラム
WO2013048943A1 (en) 2011-09-30 2013-04-04 Intel Corporation Active state power management (aspm) to reduce power consumption by pci express components
US9817733B2 (en) 2011-10-05 2017-11-14 International Business Machines Corporation Resource recovery for checkpoint-based high-availability in a virtualized environment
DE112011105752T5 (de) 2011-10-21 2014-10-02 Hewlett-Packard Development Company, L.P. Webbasierte Schnittstelle zum Zugriff auf eine Funktion eines Basic Input/Output-Systems
IN2014DN03052A (ko) 2011-10-21 2015-05-08 Hewlett Packard Development Co
CN103136059A (zh) * 2011-11-24 2013-06-05 中兴通讯股份有限公司 一种内存区间相互隔离的程序之间的通讯方法及处理单元
US8832411B2 (en) * 2011-12-14 2014-09-09 Microsoft Corporation Working set swapping using a sequentially ordered swap file
US8805990B2 (en) * 2012-07-12 2014-08-12 Microsoft Corporation Load balancing for single-address tenants
US9373182B2 (en) * 2012-08-17 2016-06-21 Intel Corporation Memory sharing via a unified memory architecture
US9246998B2 (en) 2012-10-16 2016-01-26 Microsoft Technology Licensing, Llc Load balancer bypass
US9841927B2 (en) * 2013-09-23 2017-12-12 Red Hat Israel, Ltd Remote direct memory access with copy-on-write support
CN104408222B (zh) * 2014-10-13 2017-05-24 中国电子科技集团公司第十研究所 实时分布式仿真平台可重构方法
US9619401B2 (en) * 2015-02-20 2017-04-11 Wisconsin Alumni Research Foundation Efficient memory management system for computers supporting virtual machines
US20160246715A1 (en) * 2015-02-23 2016-08-25 Advanced Micro Devices, Inc. Memory module with volatile and non-volatile storage arrays
KR102010942B1 (ko) * 2015-04-09 2019-08-14 후아웨이 테크놀러지 컴퍼니 리미티드 네트워크 기능 가상화 기반 장애 처리 방법 및 장치
GB2539433B8 (en) 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Protected exception handling
GB2539435B8 (en) 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level
GB2539429B (en) 2015-06-16 2017-09-06 Advanced Risc Mach Ltd Address translation
GB2539428B (en) 2015-06-16 2020-09-09 Advanced Risc Mach Ltd Data processing apparatus and method with ownership table
CN107615255B (zh) * 2015-06-17 2022-05-31 英特尔公司 利用持久存储器的计算装置和方法
US10152612B2 (en) * 2015-09-25 2018-12-11 Intel Corporation Cryptographic operations for secure page mapping in a virtual machine environment
CN108139982B (zh) 2016-05-31 2022-04-08 安华高科技股份有限公司 多信道输入/输出虚拟化
US10241931B2 (en) * 2016-07-29 2019-03-26 Advanced Micro Devices, Inc. Controlling access to pages in a memory in a computing device
CN109643277B (zh) 2016-09-26 2024-02-20 英特尔公司 用于中介传递和共享存储器页合并的装置和方法
US10180854B2 (en) * 2016-09-28 2019-01-15 Intel Corporation Processor extensions to identify and avoid tracking conflicts between virtual machine monitor and guest virtual machine
US11086632B2 (en) * 2017-02-10 2021-08-10 Alibaba Group Holding Limited Method and apparatus for providing accelerated access to a memory system
US10394585B2 (en) * 2017-03-07 2019-08-27 Microsoft Technology Licensing, Llc Managing guest partition access to physical devices
US10521273B2 (en) * 2017-06-08 2019-12-31 Cisco Technology, Inc. Physical partitioning of computing resources for server virtualization
US10733112B2 (en) * 2017-06-16 2020-08-04 Alibaba Group Holding Limited Method and apparatus for hardware virtualization
US10733096B2 (en) 2017-11-22 2020-08-04 Samsung Electronics Co., Ltd. System and method for frame buffer
US11416395B2 (en) * 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
US11099789B2 (en) * 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US10782908B2 (en) 2018-02-05 2020-09-22 Micron Technology, Inc. Predictive data orchestration in multi-tier memory systems
US10880401B2 (en) 2018-02-12 2020-12-29 Micron Technology, Inc. Optimization of data access and communication in memory systems
US11321249B2 (en) 2018-03-26 2022-05-03 Samsung Electronics Co., Ltd. Mechanism to autonomously manage SSDS in an array
US10877892B2 (en) 2018-07-11 2020-12-29 Micron Technology, Inc. Predictive paging to accelerate memory access
DE112019003920T5 (de) * 2018-08-03 2021-05-20 Nvidia Corporation Sicherer zugriff auf speicher einer virtuellen maschine
US10833949B2 (en) * 2018-11-20 2020-11-10 Amazon Technologies, Inc Extension resource groups of provider network services
US12106132B2 (en) 2018-11-20 2024-10-01 Amazon Technologies, Inc. Provider network service extensions
US10769076B2 (en) 2018-11-21 2020-09-08 Nvidia Corporation Distributed address translation in a multi-node interconnect fabric
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device
CN110456994B (zh) * 2019-07-19 2023-03-10 南京芯驰半导体科技有限公司 一种远程显示系统及方法
US11064017B2 (en) 2019-09-24 2021-07-13 Amazon Technologies, Inc. Peripheral device enabling virtualized computing service extensions
US11520530B2 (en) 2019-09-24 2022-12-06 Amazon Technologies, Inc. Peripheral device for configuring compute instances at client-selected servers
US11569997B1 (en) 2020-03-09 2023-01-31 Amazon Technologies, Inc. Security mechanisms for data plane extensions of provider network services
CN113577757B (zh) * 2021-08-02 2024-05-28 西安万像电子科技有限公司 一种游戏数据的处理方法、电子设备及存储介质
CN113613182B (zh) * 2021-08-10 2023-03-21 中国平安财产保险股份有限公司 短信发送方法、计算机设备及可读存储介质
CN114218153B (zh) * 2021-12-06 2023-11-14 海飞科(南京)信息技术有限公司 用于存储管理的方法、介质、程序产品、系统和装置
CN114201444B (zh) * 2021-12-06 2023-11-14 海飞科(南京)信息技术有限公司 用于存储管理的方法、介质、程序产品、系统和装置
JP2024135757A (ja) * 2023-03-23 2024-10-04 日立Astemo株式会社 車両制御装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4742450A (en) 1986-01-16 1988-05-03 International Business Machines Corporation Method to share copy on write segment for mapped files
US6075938A (en) 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US6738977B1 (en) * 2000-05-31 2004-05-18 International Business Machines Corporation Class sharing between multiple virtual machines
GB2369694B (en) * 2000-11-29 2002-10-16 Sun Microsystems Inc Efficient memory modification tracking
US6789156B1 (en) 2001-05-22 2004-09-07 Vmware, Inc. Content-based, transparent sharing of memory units
US7603551B2 (en) * 2003-04-18 2009-10-13 Advanced Micro Devices, Inc. Initialization of a computer system including a secure execution mode-capable processor
US7181744B2 (en) * 2002-10-24 2007-02-20 International Business Machines Corporation System and method for transferring data between virtual machines or other computer entities

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100914081B1 (ko) * 2006-12-27 2009-08-27 인텔 코오퍼레이션 분할 시스템에서 메모리를 액세스하는 디바이스들에 대한게스트 대 호스트 어드레스 변환
KR101145144B1 (ko) * 2010-11-23 2012-05-14 한국과학기술정보연구원 가상머신 스케줄링 방법 및 시스템
WO2012070721A1 (ko) * 2010-11-23 2012-05-31 한국과학기술정보연구원 가상머신 스케줄링 방법 및 시스템
KR101303079B1 (ko) * 2011-05-04 2013-09-03 한국과학기술원 멀티-코어 기반의 가상화 환경에서 캐쉬 일관성을 제어하는 장치 및 방법
WO2020159055A1 (ko) * 2019-01-28 2020-08-06 삼성전자주식회사 전자 장치 및 전자 장치의 제어 방법

Also Published As

Publication number Publication date
JP2006252554A (ja) 2006-09-21
JP4237190B2 (ja) 2009-03-11
AU2006200312A1 (en) 2006-09-28
US7334076B2 (en) 2008-02-19
ATE521036T1 (de) 2011-09-15
CA2535484A1 (en) 2006-09-08
CN1831790A (zh) 2006-09-13
CN100578471C (zh) 2010-01-06
RU2393534C2 (ru) 2010-06-27
ZA200601080B (en) 2008-04-30
EP1701268A3 (en) 2006-10-11
MXPA06001608A (es) 2006-09-20
BRPI0600347A (pt) 2006-10-31
EP1701268A2 (en) 2006-09-13
EP1701268B1 (en) 2011-08-17
US20060206658A1 (en) 2006-09-14
RU2006103559A (ru) 2007-08-20
TW200634551A (en) 2006-10-01

Similar Documents

Publication Publication Date Title
KR20060099404A (ko) 가상 머신들 간에서 페이지들을 공유하기 위한 방법,시스템 및 컴퓨터 판독가능 매체
US8954959B2 (en) Memory overcommit by using an emulated IOMMU in a computer system without a host IOMMU
US7383374B2 (en) Method and apparatus for managing virtual addresses
US8661181B2 (en) Memory protection unit in a virtual processing environment
US8631170B2 (en) Memory overcommit by using an emulated IOMMU in a computer system with a host IOMMU
US7814287B2 (en) Using writeable page tables for memory address translation in a hypervisor environment
US7376949B2 (en) Resource allocation and protection in a multi-virtual environment
KR102047558B1 (ko) 가상 디스크 저장 기술
US7428626B2 (en) Method and system for a second level address translation in a virtual machine environment
KR100914081B1 (ko) 분할 시스템에서 메모리를 액세스하는 디바이스들에 대한게스트 대 호스트 어드레스 변환
US9880941B2 (en) Sharing an accelerator context across multiple processes
US7739466B2 (en) Method and apparatus for supporting immutable memory
US20140108701A1 (en) Memory protection unit in a virtual processing environment
CN109074316B (zh) 页面错误解决方案
US10255069B2 (en) Cleared memory indicator
US20130031293A1 (en) System and method for free page hinting
US20130031292A1 (en) System and method for managing memory pages based on free page hints
US10365825B2 (en) Invalidation of shared memory in a virtual environment
JP2022104872A (ja) バッファ保護における境界情報アクセスを提供する方法、システム、およびコンピュータ・プログラム
JP2023526000A (ja) 変換テーブルアドレス記憶回路
WO2023009210A1 (en) Dynamically allocatable physically addressed metadata storage
US20120054773A1 (en) Processor support for secure device driver architecture

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