KR20050059409A - 실제 및 이상화된 하드웨어 기반 장치의 바이모달 장치가상화를 위한 시스템 및 방법 - Google Patents

실제 및 이상화된 하드웨어 기반 장치의 바이모달 장치가상화를 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20050059409A
KR20050059409A KR1020040087954A KR20040087954A KR20050059409A KR 20050059409 A KR20050059409 A KR 20050059409A KR 1020040087954 A KR1020040087954 A KR 1020040087954A KR 20040087954 A KR20040087954 A KR 20040087954A KR 20050059409 A KR20050059409 A KR 20050059409A
Authority
KR
South Korea
Prior art keywords
mode
virtual device
bimodal
hardware
function
Prior art date
Application number
KR1020040087954A
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 KR20050059409A publication Critical patent/KR20050059409A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/45537Provision of facilities of other operating environments, e.g. WINE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명의 각종 실시예는 바이모달(bimodal, "2개의 모드를 가진"을 뜻함) 가상 장치 어프로치(즉, "바이모달 장치(bimodal device)")에 관한 것이다. 일부 실시예에서, 바이모달 장치는 실제 하드웨어에 주로 기초한 가상 장치이고, 게스트 환경에서 수행되는 소프트웨어와 폭넓은 호환성을 제공한다(하드웨어 장치 가상화 어프로치와 유사함). 그러나 하드웨어 가상 장치를 괴롭히는 나쁜 성능 문제를 극복하기 위해, 본 실시예들은 또한 최초의 하드웨어 기반 장치에서는 찾아볼 수 없는, 이상화된 "고 성능 모드"를 제공한다. 최초의 하드웨어 장치와 상호작용하기 위해 개발되고 고 성능 모드를 모르는(및 사용할 수 없는) 소프트웨어 드라이버(및 기타 소프트웨어)는 계속해서 "기존 모드(하드웨어 가상화)"를 사용하는 반면, 게스트 소프트웨어의 향상된 버전은 고 성능 모드(이상화된 가상화)를 인식하고 활용할 수 있을 것이다.

Description

실제 및 이상화된 하드웨어 기반 장치의 바이모달 장치 가상화를 위한 시스템 및 방법{SYSTEMS AND METHODS FOR BIMODAL DEVICE VIRTUALIZATION OF ACTUAL AND IDEALIZED HARDWARE-BASED DEVICES}
본 발명은 일반적으로 컴퓨터 시스템의 가상 장치 분야에 관한 것으로, 보다 구체적으로는, 하드웨어 가상 장치로서 또는 적절한 경우 이상화된 가상 장치로서 선택적으로 동작하는 컴퓨터 시스템의 향상된 가상 장치에 관한 것이다.
가상 장치는 논리적 장치이고, 소프트웨어에서 구현되며, 실제 또는 이상화된 물리적 장치의 일부 종류에 해당된다. 일반적으로, 가상 장치들을 모델링하는 2개의 어프로치가 있다: "하드웨어 가상 장치" 어프로치는 기존의 하드웨어를 직접 모델링한다; 반면 "이상화된 가상 장치" 어프로치는 물리적 하드웨어의 단순한 반영이 아니라 VM 환경을 위해 최적화되는 것이다.
하드웨어 가상 장치 어프로치는 호환성에 관한 이점을 제공한다-이 가상 장치가 모든 면에서 실제 장치처럼 행동하기 때문에, 그 장치(예를 들어, 드라이버)와 상호작용하도록 설계된 소프트웨어들은 수정 없이 하드웨어 가상 장치와 작동할 수 있다. 그러나, 하드웨어 가상 장치의 단점은 성능이다-물리적 하드웨어는 종종 상당한 오버헤드 대가(및 비효율성)를 발생하지 않고서는 가상 장치와 에뮬레이트하기 힘든데, 그 이유는 하드웨어 설계자들이 일반적으로 가상화 이슈를 고려하지 않기 때문이고, 따라서 하드웨어 가상 장치는 종종 그들의 실제 하드웨어 대응물보다 현저하게 느리다.
한편, 이상화된 가상 장치는 개발자로 하여금 구현하기 쉽고 사용하기에 효율적인 가상 장치를 설계할 수 있는 상당한 자유를 제공한다. 이상화된 가상 장치의 설계는 물리적 하드웨어 설계에 의해 생기는 제한에 따를 필요가 없기 때문에, 이상화된 가상 장치는 VM 환경내의 사용을 위해 최적화될 수 있다. 또한, 이상화된 가상 장치의 개발자들은 기존의 소프트웨어가 옳은 동작을 위해 좌우될지도 모르는 민감한 부작용(타이밍, 상태 변화 등과 같은)에 걱정할 필요가 없다. 게다가, 개발자들은 실제로는 존재하지 않는 하드웨어와 유사한 이상화된 가상 장치를 생성할 수도 있다-예를 들어, 가상 장치는 게스트 시스템과 호스트 시스템간의 통신을 가능하게 한다. 그러나, 이 이상화된 가상 장치 어프로치의 단점은 바로 호환성 이슈인데, 그 이유는 가상 장치는 사실 모든 면에서 실제 장치처럼 동작하지 않기 때문이고, 따라서 그 물리적 장치(예를 들어, 드라이버)와 상호작용하도록 설계된 소프트웨어는 올바르게 작동하지 않거나 또는 수정 없이는 이상화된 가상 장치와 전혀 작동할 수 없을 수도 있다.
당업에 필요한 것은 본 명세서에 설명된 2개의 기존 어프로치의 장점을 포함하되 그 한계의 대부분이 없는, 가상화된 장치에 대한 어프로치이다.
본 발명의 각종 실시예는 하드웨어 및 이상화된 장치 가상화 어프로치의 상대적인 강점을 결합하면서 또한 그 각각의 약점을 완화시키는 바이모달 가상 장치 어프로치(즉, "바이모달 장치")에 관한 것이다. 일부 실시예에서, 바이모달 장치는 실제 하드웨어에 주로 기초한 가상 장치이고, 게스트 환경에서 수행되는 소프트웨어와 폭넓은 호환성을 제공한다(하드웨어 장치 가상화 어프로치와 유사함). 그러나 하드웨어 가상 장치를 괴롭히는 나쁜 성능 문제를 극복하기 위해, 본 실시예들은 또한 최초의 하드웨어 기반 장치에서는 찾아볼 수 없는, 이상화된 "고 성능 모드"를 제공한다. 최초의 하드웨어 장치와 상호작용하기 위해 개발되고 고 성능 모드를 모르는(및 사용할 수 없는) 소프트웨어 드라이버(및 기타 소프트웨어)는 계속해서 "기존 모드(하드웨어 가상화)"를 사용하는 반면, 게스트 소프트웨어의 향상된 버전은 고 성능 모드(이상화된 가상화)를 인식하고 활용할 수 있을 것이다.
상술된 요약 및 바람직한 실시예에 대한 이하의 상세한 설명은 첨부된 도면과 함께 판독될 때 더 잘 이해된다. 발명을 도시하기 위해, 도면에 본 발명의 예시적인 구성이 도시된다; 그러나, 본 발명은 개시된 특정 방법 및 수단에 제한되지 않는다.
본 발명의 내용은 법정 요구사항을 만족시키는 전문성을 지니고 설명된다. 그러나, 설명 그 자체는 본 발명의 범위를 제한하고자 하는 것은 아니다. 오히려, 발명자는 청구된 내용이 또한 다른 방법으로 구현될 수 있으며, 기타 현재 또는 미래의 기술과 함께, 본 명세서에 기술된 것과 유사한 단계들의 조합 또는 다른 단계들을 포함한다는 것을 고려한다. 또한, 본 명세서에서 사용된 "단계(step)"라는 용어는 구현된 다른 방법의 구성요소를 의미할 수도 있지만, 이 용어는 각각의 단계의 순서가 명확하게 기술되지 않는 한 또는 기술될 경우를 제외하고 본 명세서에 개시된 각종 단계들 중 또는 단계들간의 어느 특정 순서를 의미하는 것으로 해석되어서는 안 된다.
컴퓨터 환경(Computer Environment)
본 발명의 수많은 실시예가 컴퓨터상에서 실행될 수 있다. 도 1 및 이하의 설명은 본 발명이 구현될 수 있는 적절한 컴퓨팅 환경에 대한 간단하고 일반적인 설명을 제공하기 위한 것이다. 필수는 아니지만, 본 발명은 컴퓨터에 의해 실행되는 프로그램 모듈, 클라이언트 워크스테이션 또는 서버와 같은 컴퓨터 실행가능 명령어의 일반적인 컨텍스트로 설명될 것이다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 타입을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 또한, 당업자들은 본 발명이 핸드헬드 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 또는 프로그램가능 가전 제품, 네트워크 PC, 미니 컴퓨터, 메인 프레임 컴퓨터 등을 포함한 기타 컴퓨터 시스템 구성으로 수행될 수 있다는 것을 이해할 것이다. 본 발명은 또한 통신 네트워크를 통해 연결된 원격 처리 장치에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서도 수행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 기억장치 둘 다에 위치할 수도 있다.
도 1에 도시된 바와 같이, 예시적인 범용 컴퓨팅 시스템은 종래의 퍼스널 컴퓨터(20) 등을 포함하고, 이것은 처리 장치(21), 시스템 메모리(22) 및 시스템 메모리를 포함한 각종 시스템 컴포넌트를 처리 장치(21)에 연결시키는 시스템 버스(23)를 포함한다. 시스템 버스(23)는 메모리 버스 또는 메모리 콘트롤러, 주변장치 버스 및 각종 버스 아키텍처 중 임의의 것을 사용하는 로컬 버스를 포함한 몇가지 유형의 버스 구조 중 어느 것이라도 될 수 있다. 시스템 메모리는 판독 전용 메모리(ROM)(24) 및 랜덤 액세스 메모리(RAM)(25)를 포함한다. 시동 시 퍼스널 컴퓨터(20) 내의 구성요소들 사이의 정보의 전송을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(BIOS)(26)은 ROM(24)에 저장되어 있다. 퍼스널 컴퓨터(20)는 하드 디스크(도시 생략)로의 기록 또는 그로부터의 판독을 위한 하드 디스크 드라이브(27), 이동식 자기 디스크(29)로의 기록 또는 그로부터의 판독을 위한 자기 디스크 드라이브(28) 및 CD-ROM 또는 기타 광 매체 등의 이동식 광 디스크(31)로의 기록 또는 그로부터의 판독을 위한 광 디스크 드라이브(30)를 포함한다. 하드 디스크 드라이브(27), 자기 디스크 드라이브(28) 및 광 디스크 드라이브(30)는 각각 하드 디스크 드라이브 인터페이스(32), 자기 디스크 드라이브 인터페이스(33) 및 광 디스크 드라이브 인터페이스(34)에 의해 시스템 버스(23)에 접속된다. 드라이브들 및 이들과 관련된 컴퓨터 판독가능 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 및 퍼스널 컴퓨터(20)의 다른 데이터에 대한 불휘발성 기억장치를 제공한다. 본 명세서에 설명된 예시적인 환경이 하드 디스크, 이동식 자기 디스크(29) 및 이동식 광 디스크(31)를 사용하고 있지만, 당업자들은 자기 카세트, 플래쉬 메모리 카드, DVD, 베르누이 카트리지, RAM, ROM 등과 같이, 컴퓨터에 의해 액세스가능한 데이터를 저장할 수 있는 컴퓨터 판독가능 매체의 다른 유형들이 예시적인 운영환경에서 또한 사용될 수 있다는 것을 이해할 것이다.
운영 체제(35), 하나 이상의 애플리케이션 프로그램(36), 기타 프로그램 모듈(37) 및 프로그램 데이터(38)를 포함한, 많은 프로그램 모듈들이 하드 디스크, 자기 디스크(29), 광 디스크(31), ROM(24) 또는 RAM(25)상에 저장될 수 있다. 사용자는 키보드(40) 및 포인팅 장치(42)와 같은 입력 장치를 통해 명령 및 정보를 퍼스널 컴퓨터(20)에 입력할 수 있다. 다른 입력 장치(도시 생략)로는 마이크, 조이스틱, 게임 패드, 위성 디스크, 스캐너 등이 있을 수 있다. 이들 및 다른 입력 장치는 종종 시스템 버스에 연결된 직렬 포트 인터페이스(46)를 통해 처리 장치(21)에 접속되지만, 병렬 포트, 게임 포트, 또는 USB(universal serial bus)에 의해 연결될 수도 있다. 모니터(47) 또는 다른 유형의 디스플레이 장치도 비디오 어댑터(48)와 같은 인터페이스를 통해 시스템 버스(23)에 연결될 수 있다. 모니터(47) 이외에, 퍼스널 컴퓨터는 일반적으로 스피커 및 프린터 등의 다른 주변 출력 장치(도시 생략)를 포함할 수 있다. 도 1의 예시적인 시스템은 또한 호스트 어댑터(55), SCSI(Small Computer System Interface) 버스(56), SCSI 버스(56)에 연결된 및 외부 기억장치(62)를 포함한다.
퍼스널 컴퓨터(20)는 원격 컴퓨터(49)와 같은 하나 이상의 원격 컴퓨터로의 논리적 연결을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(49)는 또 하나의 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 공통 네트워크 노드일 수 있고, 일반적으로 퍼스널 컴퓨터(20)와 관련하여 위에서 설명한 구성요소의 대부분 또는 그 전부를 포함하지만, 도 1에는 메모리 저장장치(50)만이 도시되어 있다. 도 1에 도시된 논리적 연결로는 LAN(51) 및 WAN(52)이 있다. 이러한 네트워킹 환경은 사무실, 회사 전체에 걸친 컴퓨터 네트워크, 인트라넷 및 인터넷에서 통상적인 것이다.
LAN 네트워킹 환경에서 사용될 때, 퍼스널 컴퓨터(20)는 네트워크 인터페이스 또는 어댑터(53)를 통해 LAN(51)에 연결된다. WAN 네트워킹 환경에서 사용될 때, 퍼스널 컴퓨터(20)는 일반적으로 인터넷과 같은 WAN(52)상에서의 통신을 설정하기 위한 모뎀(54) 또는 다른 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(54)은 직렬 포트 인터페이스(46)를 통해 시스템 버스(23)에 연결된다. 네트워크화된 환경에서, 퍼스널 컴퓨터(20) 또는 그의 일부와 관련하여 기술된 프로그램 모듈은 원격 메모리 저장장치에 저장될 수 있다. 도시된 네트워크 연결은 예시적인 것이며 이 컴퓨터들 사이의 통신 링크를 설정하는 다른 수단이 사용될 수 있다는 것을 이해할 것이다. 또한, 본 발명의 많은 실시예가 특히 컴퓨터화된 시스템에 아주 적합하지만, 본 명세서의 그 어떠한 것도 이러한 실시예에 발명을 제한하고자 하는 것이 아니라는 것을 이해해야 한다.
가상 기계(Virtual Machines)
개념적인 관점으로부터, 컴퓨터 시스템은 일반적으로 하드웨어의 기본 계층상에서 수행되는 소프트웨어의 하나 이상의 계층을 포함한다. 이러한 계층화(layering)는 추상화 때문이다. 소프트웨어의 소정의 계층에 대한 인터페이스를 정의함으로써, 그 계층은 그 위의 다른 계층들과는 다르게 구현될 수 있다. 잘 설계된 컴퓨터 시스템에서, 각 계층은 그 바로 밑의 계층에 대해서만 알 수 있다(또한 그 바로 밑의 계층에 대해서만 의존한다). 이로 인해 계층 또는 "스택"(다수의 인접한 계층들)이 상기 계층 또는 스택 위의 계층들에 부정적인 영향을 주지 않고 대체될 수 있다. 예를 들어, 소프트웨어 애플리케이션(상위 계층들)은 일반적으로 운영 체제의 하위 레벨(하위 계층들)에 의존하여 영구 기억장치의 일부 형태로 파일을 기록하므로, 이들 애플리케이션은 플로피 디스크, 하드 드라이브 또는 네트워크 폴더에 데이터를 기록하는 것간의 차이에 대해 알 필요가 없다. 이들 하위 계층이 파일을 기록하는 새 운영 체제 컴포넌트로 대체될 경우, 상위 계층의 동작은 소프트웨어 애플리케이션의 영향을 받지 않는다.
이러한 계층화 소프트웨어의 유연성으로 인해 가상 기계(Virtual Machine;VM)는 사실은 또 다른 소프트웨어 계층인 가상 하드웨어 계층을 나타낸다. 이러한 방식으로, VM은 자신 위의 소프트웨어 계층에 대해, 소프트웨어 계층들이 자신만의 전용 컴퓨터 시스템상에서 수행되고 있으며, 따라서 VM들이 하나의 "호스트 시스템"상에서 동시에 다수의 "게스트 시스템"을 수행할 수 있다는 환상을 만들 수 있다.
도 2는 컴퓨터 시스템의 에뮬레이트된 운영 환경에 대해 하드웨어 및 소프트웨어 아키텍처의 논리적 계층화를 나타내는 도면이다. 에뮬레이션 프로그램(94)은 호스트 운영 체제 및/또는 하드웨어 아키텍처(92)상에서 수행된다. 에뮬레이션 프로그램(94)은 게스트 하드웨어 아키텍처(96) 및 게스트 운영 체제(98)를 에뮬레이트한다. 소프트웨어 애플리케이션(100)은 이어서 게스트 운영 체제(98)상에서 수행된다. 도 2의 에뮬레이트된 운영 환경에서, 에뮬레이션 프로그램(94)의 동작으로 인해, 소프트웨어 애플리케이션(100)은 일반적으로 호스트 운영 체제 및 하드웨어 아키텍처(92)와 호환하지 않는 운영 체제 상에서 수행되도록 설계되었음에도 불구하고, 컴퓨터 시스템(90)상에서 수행될 수 있다.
도 3a는 물리적 컴퓨터 하드웨어(102) 바로 위에서 수행되는 호스트 운영 체제 소프트웨어 계층(104)을 포함하는 가상화된 컴퓨팅 시스템을 도시하고 있으며, 호스트 운영 체제(host OS)(104)는, 호스트 OS가 가상화하는 하드웨어와 동일한 인터페이스들을 노출시킴으로써 기계의 모든 자원들을 가상화한다(이것은 호스트 OS가 자신 위에서 수행되는 운영 체제 계층들에 의해 알아채지 못하도록 한다).
또한, 가상 기계 모니터, 또는 VMM, 소프트웨어 계층(104’)은 호스트 운영 체제(104”) 대신에 또는 함께 수행될 수 있으며, 후자의 옵션이 도 3b에 도시되어 있다. 간단하게 하기 위해, 이하의 모든 설명(특히 호스트 운영 체제(104)에 관한)은 도 3a에 도시된 실시예에 관한 설명이 될 것이다; 그러나, 이러한 설명의 모든 측면이 도 3b의 실시예에 동등하게 적용될 것이고, 도 3b의 VMM(104’)은 이하에 설명된 도 3a의 호스트 운영 체제(104)의 역할을 기능적 레벨에서 본질적으로 대신한다.
다시 도 3a에 관해, 호스트 OS(104)(또는 VMM(104’)) 바로 위에 2개의 가상 기계(VM)가 구현되어 있고, VM A(108)는 예를 들어, 가상화된 인텔 386 프로세서일 수 있고, VM B(110)는 예를 들어, 모토롤라 680X0 프로세서 계열의 가상화된 버전 중 하나일 수 있다. VM(108) 및 VM(110)의 바로 위에는 각각 게스트 운영 체제(게스트 OS) A(112) 및 B(114)가 있다. 게스트 OS A(112) 바로 위에는 2개의 애플리케이션, 즉 애플리케이션 A1(116) 및 애플리케이션 A2(118)가 있고, 게스트 OS B(114) 바로 위에는 애플리케이션 B1(120)이 있다.
가상 장치(Virtual Devices)
물리적 하드웨어 장치에 관해, VM은 소프트웨어 애플리케이션들이 하드웨어 장치들을 활용할 수 있도록 하는 여러 옵션을 제공한다. 일부 VM 시스템에서, 하드웨어 장치(하드 드라이브 또는 네트워크 어댑터 같은)가 하나의 VM에 할당되고, 그 VM내에서 수행되는 소프트웨어만이 그 하드웨어 장치(전용 장치 아키텍처)를 활용할 수 있다. 그러나, 이런 설계는 다른 VM들간 뿐만 아니라 VM과 호스트 시스템간의 하드웨어 장치의 공유를 불가하게 한다. 이러한 이유 때문에, 많은 VM 구현은 대신 "가상 장치"를 활용한다.
가상 장치는 논리적 장치로서, 소프트웨어에서 구현되고, 실제 또는 이상화된 물리적 장치의 일부 종류에 해당된다. 가상 장치는 일반적으로 자기 고유의 장치 상태 세트를 소유하는데, 그 예로는 레지스터 설정, 버퍼된 데이터, 보류된 명령 큐 등이 있다. 제한되지 않은 실례로서, 가상 네트워크 어댑터에 대해, 이 가상 어댑터와 관련된 소프트웨어는 네트워트 어댑터가 VM에서 수행되는 코드에 의해 액세스되는 경우 기동되어, 가상 어댑터는 실제 어댑터 카드와 일치된 방법으로 명령에 응답할 것이다. 이러한 방식으로, VM내에서 수행되는 코드는 자신이 실제의 어댑터가 아니라 가상의 어댑터에게 "말하고" 있다는 것을 인지하지 못하고, 가상 어댑터는 실제 어댑터와 직접 또는 간접으로 상호작용하여 실제 어댑터가 원하는대로 동작하도록 하게 할 것이다.
많은 경우, 가상 장치로의 요청은 대응하는 호스트 장치상으로 매핑된다. 예를 들어, 가상 네트워크 어댑터로부터 전송된 네트워킹 패킷은 호스트에 설치된 실제 네트워크 어댑터 중 하나로 라우팅될 수 있다. 이러한 측면에서, 가상 장치 아키텍처는 상술된 전용 장치 아키텍처의 기능과 유사한 기능을 제공한다. 그러나, 전용 장치 아키텍처와는 달리, 가상 장치 아키텍처는 다수의 가상 장치들이 하나의 호스트 장치(실제 장치)에 매핑되는 것을 허용한다. 예를 들어, 3개의 독립된 VM은 각각의 가상 네트워크 어댑터를 포함할 수 있고, 이 3개의 가상 어댑터들 모두는 하나의 호스트 어댑터를 공유할 수 있는 반면, 전용 장치 아키텍처에서는 단 하나의 VM만이 호스트 어댑터를 사용할 수 있다.
도 4a는 도 3의 가상화된 컴퓨팅 시스템이 드라이버, 가상 장치 및 하드웨어를 더 포함하고 있는 것을 도시하고 있다. 게스트 OS A(112)는 드라이버 A(122)를 포함하고, 가상 기계 A(108)는 드라이버 A(122)에 대응하는 가상 장치 A(124)를 포함한다. 마찬가지로, 게스트 OS B(114)는 드라이버 B(126)를 포함하고, 가상 기계 B(110)는 드라이버 B(126)에 대응하는 가상 장치 B(128)를 포함한다. 게다가, 호스트 OS(104)는 드라이버 X(130)를 포함하고, 컴퓨터 하드웨어(102)는 드라이버 X(130)에 대응하는 하드웨어 장치 X(132)를 포함한다.
도 4b는 게스트 운영 체제상에서 수행되는 애플리케이션으로부터 컴퓨터 하드웨어의 하드웨어 장치로의 동작 경로를 도시하고 있다. 애플리케이션 A1(116)은 드라이버 A(122)와 인터페이스하고(134), 이어서 가상 장치 A(124)와 인터페이스한다(136). 그리고 나서, 이 가상 기계 A(124)는 드라이버 X(호스트 OS(104)에 있음;130)와 인터페이스하고(138), 이어서 하드웨어 장치 X(132)와 직접 통신한다(140). 도 5는 도 4b에 도시된 드라이버들, 가상 장치, 및 하드웨어간의 동일한 상관관계를 더 간단하게 도시하고 있다.
바이모달 장치(Bimodal Device)
일반적으로, 가상 장치들을 모델링하는 2개의 어프로치가 있다: "하드웨어 가상 장치" 어프로치는 기존의 하드웨어를 직접 모델링한다; 반면 "이상화된 가상 장치" 어프로치는 물리적 하드웨어의 단순한 반영이 아니라 VM 환경을 위해 최적화되는 것이다. 하드웨어 가상 장치 어프로치는 호환성에 관한 이점을 제공한다-이 가상 장치가 모든 면에서 실제 장치처럼 행동하기 때문에, 그 장치(예를 들어, 드라이버)와 상호작용하도록 설계된 소프트웨어들은 수정 없이 하드웨어 가상 장치와 작동할 수 있다. 그러나, 하드웨어 가상 장치의 단점은 성능이다-물리적 하드웨어는 종종 상당한 오버헤드 대가를 발생하지 않고서는 가상 장치와 에뮬레이트하기 힘든데, 그 이유는 하드웨어 설계자들이 일반적으로 가상화 이슈를 고려하지 않기 때문이고, 따라서 하드웨어 가상 장치는 종종 그들의 실제 하드웨어 대응물보다 현저하게 느리다.
한편, 이상화된 가상 장치는 개발자로 하여금 구현하기 쉽고 사용하기에 효율적인 가상 장치를 설계할 수 있는 상당한 자유를 제공한다. 이상화된 가상 장치의 설계는 물리적 하드웨어 설계에 의해 생기는 제한에 따를 필요가 없기 때문에, 이상화된 가상 장치는 VM 환경내의 사용을 위해 최적화될 수 있다. 또한, 이상화된 가상 장치의 개발자들은 기존의 소프트웨어가 옳은 동작을 위해 좌우될지도 모르는 민감한 부작용(타이밍, 상태 변화 등과 같은)에 걱정할 필요가 없다. 게다가, 개발자들은 실제로는 존재하지 않는 하드웨어와 유사한 이상화된 가상 장치를 생성할 수도 있다-예를 들어, 가상 장치는 게스트 시스템과 호스트 시스템간의 통신을 가능하게 한다. 그러나, 이 이상화된 가상 장치 어프로치의 단점은 바로 호환성 이슈인데, 그 이유는 가상 장치는 사실 모든 면에서 실제 장치처럼 동작하지 않기 때문이고, 따라서 그 물리적 장치(예를 들어, 드라이버)와 상호작용하도록 설계된 소프트웨어는 올바르게 작동하지 않거나 또는 수정 없이는 이상화된 가상 장치와 전혀 작동할 수 없을 수도 있다.
본 발명의 각종 실시예는 하드웨어 및 이상화된 장치 가상화 어프로치의 상대적인 강점을 결합하면서 또한 그 각각의 약점을 완화시키는 바이모달 가상 장치 어프로치(즉, "바이모달 장치")에 관한 것이다. 일부 실시예에서, 바이모달 장치는 실제 하드웨어에 주로 기초한 가상 장치이고, 게스트 환경에서 수행되는 소프트웨어와 폭넓은 호환성을 제공한다(하드웨어 장치 가상화 어프로치와 유사함). 그러나 하드웨어 가상 장치를 괴롭히는 나쁜 성능 문제를 극복하기 위해, 본 실시예들은 또한 최초의 하드웨어 기반 장치에서는 찾아볼 수 없는, 이상화된 "고 성능 모드"를 제공한다. 최초의 하드웨어 장치와 상호작용하기 위해 개발되고 고 성능 모드를 모르는(및 사용할 수 없는) 소프트웨어 드라이버(및 기타 소프트웨어)는 계속해서 "기존 모드(하드웨어 가상화)"를 사용하는 반면, 게스트 소프트웨어의 향상된 버전은 고 성능 모드(이상화된 가상화)를 인식하고 활용할 수 있을 것이다.
일부 실시예에서, 고 성능 모드는 가상 장치에 대해 기존 모드의 최초 기능과는 완전히 독립적일 수 있다. 또는, 고 성능 모드는 최초의 기능에 대해 확장 또는 대체를 포함할 수 있다. 어느 방법으로든지, 고 성능 모드는 그것이 기존 모드 기능과 독립적이든지 또는 기존 모드 기능에 대해 향상된 것이든지간에, 이상화된 프로세서 가상화 어프로치와 유사하다. 또한, 어떤 실시예를 활용하느냐에 따라, 고 성능 모드로 전환하는 것이 기존 모드를 완전히 사용할 수 없게 할 수도 있고, 기존 모드의 일부를 사용할 수 없게 할 수도 있고, 및/또는 기존 모드의 기능을 확장할 수도 있다는 것을 유의해야 한다.
본 발명의 일부 실시예에서, 고 성능 모드는 가상 장치 레지스터내의 예약 비트를 사용함으로써 가능하게 될 수도 있는 반면, 다른 실시예에서는 대신 새 레지스터(예를 들어, 하나 이상의 가상 장치가 활용하기 위해 특별히 생성된 레지스터)를 추가할 수도 있고, 또는 미리 정해진 명령 또는 데이터의 순서를 기존 레지스터에 기입함으로써 핸드쉐이킹(handshaking)의 형태를 구현할 수도 있다.
제한되지 않은 실례로서, 이더넷 NIC 바이모달 장치를 고려해보자. 기존 모드에서, 이더넷 카드로 정보 패킷을 전송하기 위해서는 기존 I/O 레지스터로의 최대 8번의 개별적인 기입을 필요로 했다. 이러한 I/O 액세스는 패킷 전송을 위한 매개변수를 설정하는 데 필요한 것이고, 이러한 매개변수로는 DMA 어드레스(즉, 패킷 데이터가 발견될 수 있는 RAM의 위치), 전송의 길이 및 일단 기타 매개변수들이 지정된 후에 전송을 개시시키는 명령 바이트가 있다. 그러나, I/O 레지스터로의 이들 기입 각각은 VM내에서 상대적으로 비용이 들고, 이들 I/O 액세스를 가상화하는 데 요구되는 결합 시간은 상당하며, 많은 성능 손실을 초래한다. 그러나, "이상화된" 가상 이더넷 카드-즉, 고 성능 모드에서 수행되는 가상 카드-는 패킷 전송을 개시하는 데 단 한번의 I/O 액세스만을 필요로 하며, 따라서 고 성능 모드로 확대된 이더넷 카드 바이모달 장치(예를 들어, DEC 21140 칩셋에 기반한 것)는 고 성능 모드가 활용될 수 있는 경우에 성능을 상당히 증가시킬 것이다.
일부 실시예에서, 고 성능 모드는 게스트 운영 체제 환경내에 설치된 특별하고 수정된 드라이버를 사용함으로써 가능하게 될 수 있고, 일단 고 성능 모드가 사용가능해지면, 드라이버는 패킷 전송을 개시하기 위해 더 최적인 메카니즘을 사용할 수 있다. 그러나, 수정된 드라이버가 게스트에 존재하지 않을 경우, 비록 고 성능 모드에 의해 성능이 최적화되지는 못하지만, 기존 드라이버는 네트워킹 기능을 여전히 제공할 수 있을 것이다.
도 6a는 도 5의 서브시스템의 가상 장치를 바이모달 장치로 대체하는 것을 도시하고 있으며, 이 바이모달 장치는 기존 모드에서 동작한다. 이 도면에서, 기존 드라이버 A’(122’)는 하드웨어 가상화를 위한 기존 모드(152) 및 이상화된 가상화를 위한 고 성능 모드(154)를 둘 다 포함하는 바이모달 장치(150)와 인터페이스한다(136’). 기존 드라이버 A’(122’)는 바이모달 장치(150)의 고 성능 모드(154)에 의해 제공되는 이상화된 가상화와 작동하도록 설계되지 않았기 때문에, 대신 바이모달 장치(150)(도시됨)의 기존 모드(152)에 의해 제공되는 하드웨어 가상화와 작동하고, 이어서, 호스트 OS 드라이버 X(130)와 인터페이스한다(138’).
이와는 대조적으로, 도 6b는 고 성능 모드에서 동작하는 바이모달 장치를 도시하고 있다. 이 도면에서, 고 성능 드라이버 A”(122”)는 바이모달 장치(150)와 인터페이스한다(136”). 고 성능 드라이버 A”(122”)가 바이모달 장치(150)의 고 성능 모드(154)에 의해 제공되는 이상화된 가상화와 작동할 수 있기 때문에, 이것은 도시된 대로 하고, 바이모달 장치(150)는 이어서 호스트 OS 드라이버 X(130)와 인터페이스한다(138”).
"바이모달" 어프로치에 기초한 하드웨어는 다른 기술 영역에서 활용되어져 하드웨어 장치에 새 기능을 추가하며, 그렇지 않을 경우, 구(old) 성능과 호환할 수 없다. 예를 들어, 종래의 PS/2 마우스는 컴퓨터로 3바이트 정보(X-좌표, Y-좌표 및 버튼 상태)를 전송하는데, 마우스 제조업자들이 마우스에 "스크롤 휠(scroll wheel)"을 추가했을 때 또한 스크롤 휠 상태를 포함하는 4바이트 정보 패킷으로 바뀔 필요가 있었다. 스크롤 휠을 모르는 마우스 드라이버와의 소급 호환성을 제공하기 위해서, 새 마우스는 "기존 모드"로 시작하고, 3바이트 정보만을 제공하되, 새로운 형태의 드라이버가 로드된 후에, 이 드라이버는 마우스에게 4바이트 패킷 전송을 시작하도록 함으로써 "스크롤 휠 모드"를 가능하게 한다.
바이모달 장치 기술(Bimodal Device Techniques)
게스트 모드 드라이버에 의해 바이모달 장치를 식별할 수 있는 여러 기술이 있다(즉, 실제 하드웨어 장치와 추가의 동작 모드를 지원하는 에뮬레이트된 장치를 구별함). 이들 기술은 이하를 포함하되 이에 제한되지 않는다:
- 고유의 장치 버전 번호: 많은 장치들은 소프트웨어-액세스가능 장치 버전 ID를 포함한다. 이들 값은 때때로 I/O 포트를 통해 또는 메모리 매핑된 레지스터를 통해 직접 액세스 가능하다. 다른 경우, 장치에게 버전 정보 리턴을 요청하는 특정 명령을 장치로 전송할 수 있다. 이런 경우, 때때로 버전 번호를 수정하는 것이 가능하여 버전 번호가 기존의 실제 하드웨어의 어떤 것에도 대응하지 않을 수 있다. 대부분의 드라이버는 버전 번호를 무시하거나 또는 최소 버전 번호에 대해 테스트하여, 이미 존재하고 있는 기존 드라이버와의 호환성에 영향을 끼치지 않으면서, 새롭고, 고유한 버전 번호를 선택한다.
- 사용되지 않은 레지스터: 일부 장치들은 I/O 포트 및 메모리 매핑된 레지스터의 범위를 정의하고 그 범위의 서브셋만을 사용한다. 이는, 범위가 일반적으로 2의 거듭제곱 블록으로 할당되고, 기술자들이 일반적으로 미래의 확장을 위해 필요한 것보다 더 많이 할당하기 때문에 일반적인 것이다. 이 범위 내에 있는 "정의되지 않은" 또는 "예약된" 레지스터를 ID로 사용하는 것이 가능하다. 실제 하드웨어는 일반적으로 예약된 레지스터가 판독될 경우 0x00 또는 0xFF의 값을 리턴한다. 에뮬레이트된 바이모달 장치는 다르고, 구별되는 값을 리턴할 수 있다.
- 핸드쉐이킹(handshaking): 상기 2개의 기술이 가능하지 못할 경우, 뒷문 "핸드쉐이킹"(backdoor "handshaking")의 일부 형태를 설계하는 것이 일반적으로 가능하다. 이것은 실세계 사용 시나리오에서는 잘 찾아볼 수 없는 레지스터 액세스 또는 장치 명령의 특정 순서를 포함한다. 예를 들어, 장치가 디스크 콘트롤러일 경우, 핸드쉐이킹 기술은 특정 순서(예를 들어 0,3,7)로 섹터의 특정되고 미리 결정된 리스트를 시작하는 0 바이트를 판독하는 명령 순서를 전송하는 것을 포함한다. 실제 콘트롤러에서는, 이것은 아무런 영향을 끼치지 않는다(0바이트 판독은 무동작 명령어(no-op)로 정의되기 때문). 그러나, 바이모달 장치에서는, 이러한 순서가 일부 다른 부작용(예를 들어, 상태 레지스터에 설정된 특정 상태 비트)을 초래할 수 있다.
물론, 바이모달 동작을 가능하게 하는 에뮬레이트된 장치를 식별하는 데 사용되는 동일한 기술들은 또한 상기 장치에 대해 "향상된" 모드를 자동적으로 가능하게 하는 데에 사용될 수 있다.
결론
본 명세서에 기술된 각종 시스템, 방법, 및 기술은 하드웨어 또는 소프트웨어, 또는 적절한 경우, 그 둘의 조합으로 구현될 수 있다. 따라서, 본 발명의 방법 및 장치, 또는 그의 일부 측면 또는 일부는 플로피 디스크, CD-ROM, 하드 드라이브, 또는 임의의 기타 기계 판독가능 기억장치 매체와 같은 유형 매체에 구현된 프로그램 코드(즉, 명령어)의 형태를 취할 수 있으며, 이 프로그램 코드는 컴퓨터와 같은 기계로 로드되고 또는 기계에 의해 실행될 수 있으며, 이 기계는 본 발명을 수행하는 장치가 될 수 있다. 프로그램가능한 컴퓨터상에서의 프로그램 코드 실행의 경우, 컴퓨터는 일반적으로 프로세서, 프로세서에 의해 판독가능한 기억장치 매체(휘발성 및 불휘발성 메모리 및/또는 기억장치 구성요소를 포함함), 적어도 하나의 입력 장치 및 적어도 하나의 출력 장치를 포함한다. 하나 이상의 프로그램은 바람직하게 하이 레벨 프로시져 또는 객체 지향 프로그래밍 언어로 구현되어 컴퓨터 시스템과 통신한다. 그러나, 프로그램은 원하는 경우, 어셈블리 또는 기계어로 구현될 수 있다. 어떤 경우든지, 언어는 컴파일되거나 해석된 언어이고, 하드웨어 구현과 결합된다.
본 발명의 방법 및 장치는 또한 전기 전선 또는 케이블을 통해, 광섬유를 통해, 또는 임의의 다른 전송 형태를 통해서처럼, 일부 전송 매체를 통해 전송되는 프로그램 코드의 형태로 구현될 수 있으며, 프로그램 코드가 수신되어 EPROM, 게이트 배열, PLD(programmable logic device), 클라이언트 컴퓨터, 비디오 레코더 등과 같은 기계로 로드되고 기계에 의해 실행되는 경우, 기계는 본 발명을 수행하는 장치가 될 수 있다. 범용 프로세서상에 구현된 경우, 프로그램 코드는 본 발명의 색인된 기능을 수행하기 위해 동작하는 고유의 장치를 제공하는 프로세서와 결합한다.
본 발명이 각종 도면의 바람직한 실시예와 관련하여 설명되었지만, 다른 유사한 실시예가 사용될 수 있고 또는 본 발명에서 벗어나지 않고 본 발명의 동일한 기능을 수행하는, 설명된 실시예에 수정 및 추가가 있을 수 있다는 것을 이해할 것이다. 예를 들어, 본 발명의 예시적인 실시예는 퍼스널 컴퓨터의 기능을 에뮬레이트하는 디지털 장치의 문맥으로 기술되었지만, 당업자라면 본 발명이 이러한 디지털 장치에 제한되지 않고, 본 명세서에 설명되었듯이 게이밍 콘솔, 핸드헬드 컴퓨터, 이동식 컴퓨터 등, 유선 또는 무선이든, 기존의 또는 새로이 부상하는 임의의 컴퓨팅 장치 또는 환경에 적용될 수 있으며, 통신 네트워크 및 네트워크를 통한 상호작용을 통해 연결된 임의의 컴퓨팅 장치에 적용될 수 있다는 것을 이해할 것이다. 또한, 핸드헬드 장치 운영 체제 및 기타 애플리케이션의 특정 하드웨어/소프트웨어 인터페이스 시스템을 포함한 각종 컴퓨터 플랫폼이 본 명세서에 고려되었으며, 특히 무선 네트워크화된 장치의 수가 기하급수적으로 증가하고 있다는 것을 강조해야 한다. 그러므로, 본 발명은 임의의 하나의 실시예에 제한되어서는 안 되고, 오히려 넓게, 첨부된 청구항에 따라 범위를 해석해야 한다.
마지막으로, 본 명세서에서 설명되고 개시된 실시예들은 다른 프로세서 아키텍처, 컴퓨터 기반 시스템, 또는 시스템 가상화에서의 사용을 위해 적응될 수 있고, 이러한 실시예들은 본 명세서의 개시에 의해 명백히 예상되며, 따라서 본 발명은 본 명세서에 설명된 특정 실시예에 제한되어서는 안 되며, 대신 가장 폭넓게 해석되어져야 한다. 마찬가지로, 프로세서 가상화 외의 목적을 위해 합성 명령어를 사용하는 것 또한 본 명세서의 개시에 의해 예상되며, 프로세서 가상화 이외의 정황에서 합성 명령어의 이러한 임의의 활용은 본 명세서에 개시로 가장 넓게 판독되어야 한다.
2개의 모드를 지닌 바이모달 가상 장치 어프로치, 즉, "바이모달 장치(bimodal device)"는, 게스트 환경(하드웨어 장치 가상화 어프로치와 유사함)에서 수행되는 소프트웨어와 폭넓은 호환성을 제공할 뿐만 아니라, 최초의 하드웨어 기반 장치에서는 찾아볼 수 없는, 이상화된 "고 성능 모드"를 제공한다. 따라서, 최초의 하드웨어 장치와 상호작용하기 위해 개발되고 고 성능 모드를 모르는(및 사용할 수 없는) 소프트웨어 드라이버(및 기타 소프트웨어)는 계속해서 "기존 모드(하드웨어 가상화)"를 사용하는 반면, 게스트 소프트웨어의 향상된 버전은 고 성능 모드(이상화된 가상화)를 인식하고 활용할 수 있다.
도 1은 본 발명의 측면들이 포함될 수 있는 컴퓨터 시스템을 나타내는 블록도.
도 2는 컴퓨터 시스템의 에뮬레이트된 운영 환경에 대한 하드웨어 및 소프트웨어 아키텍처의 논리적 계층화(logical layering)를 도시하는 도면.
도 3a는 가상화된 컴퓨팅 시스템을 도시하는 도면.
도 3b는 호스트 운영 체제와 함께 수행되는 가상 기계 모니터를 포함하는 가상화된 컴퓨팅 시스템의 또 다른 실시예를 도시하는 도면.
도 4a는 드라이버, 가상 장치 및 하드웨어를 더 포함하는, 도 3의 가상화된 컴퓨팅 시스템을 도시하는 도면.
도 4b는 게스트 운영체제에서 수행되는 애플리케이션으로부터 도 4a의 컴퓨터 하드웨어의 하드웨어 장치로의 동작 경로(operational path)를 도시하는 도면.
도 5는 도 4b에 도시된 드라이버들, 가상 장치들 및 하드웨어간의 동일한 상관관계를 더 간단히 도시하는 도면.
도 6a는 도 5의 서브시스템의 가상 장치를 바이모달 장치(이 바이모달 장치는 기존 모드에서 동작함)로 대체하는 것을 도시하는 도면.
도 6b는 고 성능 모드에서 동작하는, 도 6a의 바이모달 장치를 도시하는 도면.

Claims (40)

  1. 컴퓨터 시스템의 가상 장치 성능을 향상시키는 방법으로서,
    제1 모드에서 하드웨어 가상 장치로서, 제2 모드에서 이상화된 가상 장치로서 선택적으로 동작하는 바이모달 가상 장치(bimodal virtual device)를 활용하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 바이모달 가상 장치와 인터페이스하는 드라이버가 상기 제2 모드에서 동작하는 상기 바이모달 가상 장치와 인터페이스하도록 설계되지 않은 경우, 상기 바이모달 가상 장치가 하드웨어 가상 장치로서 선택적으로 동작하고; 및
    상기 바이모달 가상 장치와 인터페이스하는 상기 드라이버가 상기 제2 모드에서 동작하는 상기 바이모달 가상 장치와 인터페이스하도록 설계된 경우, 상기 바이모달 가상 장치가 이상화된 가상 장치로서 선택적으로 동작하는 방법.
  3. 제2항에 있어서, 상기 제2 모드의 기능은 상기 제1 모드의 기능을 확장한 방법.
  4. 제2항에 있어서, 상기 제2 모드의 기능은 상기 제1 모드의 기능과 독립인 방법.
  5. 제4항에 있어서, 상기 제2 모드의 기능은 상기 제1 모드의 기능을 불가하게 하는 방법.
  6. 제4항에 있어서, 상기 제2 모드의 기능은 상기 제1 모드의 기능의 일부를 불가하게 하는 방법.
  7. 제2항에 있어서, 상기 제2 모드는 가상 장치 레지스터의 적어도 1 비트의 사용을 통해 가능하게 되는 방법.
  8. 제2항에 있어서, 상기 제2 모드는 하나 이상의 가상 장치에 의한 활용을 위해 특별히 생성된 레지스터의 적어도 1 비트의 사용을 통해 가능하게 되는 방법.
  9. 제2항에 있어서, 상기 제2 모드는 적어도 하나의 레지스터의 값을 변경하는 명령 또는 데이터의 미리 정해진 순서의 사용을 통해 가능하게 되는 방법.
  10. 제2항에 있어서,
    상기 제2 모드는 게스트 운영 체제 환경내에 설치된 제2 모드 드라이버의 사용을 통해 가능하게 되고; 및
    상기 제2 모드 드라이버가 존재하지 않을 경우, 제1 모드 드라이버가 대신 가능하게 되는 방법.
  11. 컴퓨터 시스템으로서,
    제1 모드에서 하드웨어 가상 장치로서, 제2 모드에서 이상화된 가상 장치로서 선택적으로 동작하는 바이모달 가상 장치를 포함하는 컴퓨터 시스템.
  12. 제11항에 있어서,
    상기 바이모달 가상 장치와 인터페이스하는 드라이버가 상기 제2 모드에서 동작하는 상기 바이모달 가상 장치와 인터페이스하도록 설계되지 않은 경우, 상기 바이모달 가상 장치가 하드웨어 가상 장치로서 선택적으로 동작하고; 및
    상기 바이모달 가상 장치와 인터페이스하는 상기 드라이버가 상기 제2 모드에서 동작하는 상기 바이모달 가상 장치와 인터페이스하도록 설계된 경우, 상기 바이모달 가상 장치가 이상화된 가상 장치로서 선택적으로 동작하는 컴퓨터 시스템.
  13. 제12항에 있어서, 상기 제2 모드의 기능은 상기 제1 모드의 기능을 확장한 컴퓨터 시스템.
  14. 제12항에 있어서, 상기 제2 모드의 기능은 상기 제1 모드의 기능과 독립인 컴퓨터 시스템.
  15. 제14항에 있어서, 상기 제2 모드의 기능은 상기 제1 모드의 기능을 불가하게 하는 컴퓨터 시스템.
  16. 제14항에 있어서, 상기 제2 모드의 기능은 상기 제1 모드의 기능의 일부를 불가하게 하는 컴퓨터 시스템.
  17. 제12항에 있어서, 상기 제2 모드는 가상 장치 레지스터의 적어도 1 비트의 사용을 통해 가능하게 되는 컴퓨터 시스템.
  18. 제12항에 있어서, 상기 제2 모드는 하나 이상의 가상 장치에 의한 활용을 위해 특별히 생성된 레지스터의 적어도 1 비트의 사용을 통해 가능하게 되는 컴퓨터 시스템.
  19. 제12항에 있어서, 상기 제2 모드는 적어도 하나의 레지스터의 값을 변경하는 명령 또는 데이터의 미리 정해진 순서의 사용을 통해 가능하게 되는 컴퓨터 시스템.
  20. 제12항에 있어서,
    상기 제2 모드는 게스트 운영 체제 환경내에 설치된 제2 모드 드라이버의 사용을 통해 가능하게 되고; 및
    상기 제2 모드 드라이버가 존재하지 않을 경우, 제1 모드 드라이버가 대신 가능하게 되는 컴퓨터 시스템.
  21. 컴퓨터 시스템으로서,
    가상 기계 환경 및 바이모달 가상 장치를 포함하며,
    상기 바이모달 가상 장치는 상기 가상 기계 환경에서 제1 모드에서 하드웨어 가상 장치로서, 제2 모드에서 이상화된 가상 장치로서 선택적으로 동작하는 컴퓨터 시스템.
  22. 제21항에 있어서,
    상기 바이모달 가상 장치와 인터페이스하는 드라이버가 상기 제2 모드에서 동작하는 상기 바이모달 가상 장치와 인터페이스하도록 설계되지 않은 경우, 상기 바이모달 가상 장치가 하드웨어 가상 장치로서 선택적으로 동작하고; 및
    상기 바이모달 가상 장치와 인터페이스하는 상기 드라이버가 상기 제2 모드에서 동작하는 상기 바이모달 가상 장치와 인터페이스하도록 설계된 경우, 상기 바이모달 가상 장치가 이상화된 가상 장치로서 선택적으로 동작하는 컴퓨터 시스템.
  23. 제22항에 있어서, 상기 제2 모드의 기능은 상기 제1 모드의 기능을 확장한 컴퓨터 시스템.
  24. 제22항에 있어서, 상기 제2 모드의 기능은 상기 제1 모드의 기능과 독립인 컴퓨터 시스템.
  25. 제24항에 있어서, 상기 제2 모드의 기능은 상기 제1 모드의 기능을 불가하게 하는 컴퓨터 시스템.
  26. 제24항에 있어서, 상기 제2 모드의 기능은 상기 제1 모드의 기능의 일부를 불가하게 하는 컴퓨터 시스템.
  27. 제22항에 있어서, 상기 제2 모드는 가상 장치 레지스터의 적어도 1 비트의 사용을 통해 가능하게 되는 컴퓨터 시스템.
  28. 제22항에 있어서, 상기 제2 모드는 하나 이상의 가상 장치에 의한 활용을 위해 특별히 생성된 레지스터의 적어도 1 비트의 사용을 통해 가능하게 되는 컴퓨터 시스템.
  29. 제22항에 있어서, 상기 제2 모드는 적어도 하나의 레지스터의 값을 변경하는 명령 또는 데이터의 미리 정해진 순서의 사용을 통해 가능하게 되는 컴퓨터 시스템.
  30. 제22항에 있어서,
    상기 제2 모드는 게스트 운영 체제 환경내에 설치된 제2 모드 드라이버의 사용을 통해 가능하게 되고; 및
    상기 제2 모드 드라이버가 존재하지 않을 경우, 제1 모드 드라이버가 대신 가능하게 되는 컴퓨터 시스템.
  31. 컴퓨터 판독가능 명령어를 포함하는 컴퓨터 판독가능 매체로서,
    상기 컴퓨터 판독가능 명령어는,
    바이모달 가상 장치가 제1 모드에서는 하드웨어 가상 장치로서, 제2 모드에서는 이상화된 가상 장치로서 선택적으로 동작하도록 하게 하는 명령어를 포함하는 컴퓨터 판독가능 매체.
  32. 제31항에 있어서,
    상기 바이모달 가상 장치와 인터페이스하는 드라이버가 상기 제2 모드에서 동작하는 상기 바이모달 가상 장치와 인터페이스하도록 설계되지 않은 경우, 상기 바이모달 가상 장치가 하드웨어 가상 장치로서 선택적으로 동작하고; 및
    상기 바이모달 가상 장치와 인터페이스하는 상기 드라이버가 상기 제2 모드에서 동작하는 상기 바이모달 가상 장치와 인터페이스하도록 설계된 경우, 상기 바이모달 가상 장치가 이상화된 가상 장치로서 선택적으로 동작하도록 하게 하는
    명령어를 더 포함하는 컴퓨터 판독가능 명령어.
  33. 제32항에 있어서, 상기 제1 모드의 기능을 확장하는 상기 제2 모드의 기능에 대한 명령어를 더 포함하는 컴퓨터 판독가능 명령어.
  34. 제32항에 있어서, 상기 제1 모드의 기능에 대한 명령어와 분리되고 구별되는 상기 제2 모드의 기능에 대한 명령어를 더 포함하는 컴퓨터 판독가능 명령어.
  35. 제34항에 있어서, 상기 제1 모드의 기능을 불가하게 하는 상기 제2 모드에 대한 명령어를 더 포함하는 컴퓨터 판독가능 명령어.
  36. 제34항에 있어서, 상기 제1 모드의 기능의 일부를 불가하게 하는 상기 제2 모드의 명령어를 더 포함하는 컴퓨터 판독가능 명령어.
  37. 제32항에 있어서, 가상 장치 레지스터의 적어도 1 비트의 사용을 통해 상기 제2 모드를 가능하게 하는 명령어를 더 포함하는 컴퓨터 판독가능 명령어.
  38. 제32항에 있어서, 하나 이상의 가상 장치에 의한 활용을 위해 특별히 생성된 레지스터의 적어도 1 비트의 사용을 통해 상기 제2 모드를 가능하게 하는 명령어를 더 포함하는 컴퓨터 판독가능 명령어.
  39. 제32항에 있어서, 적어도 하나의 레지스터의 값을 변경하는 명령 또는 데이터의 미리 정해진 순서의 사용을 통해 상기 제2 모드를 가능하게 하는 명령어를 더 포함하는 컴퓨터 판독가능 명령어.
  40. 제32항에 있어서,
    게스트 운영 체제 환경내에 설치된 제2 모드 드라이버의 사용을 통해 상기 제2 모드를 가능하게 하고; 및
    상기 제2 모드 드라이버가 존재하지 않을 경우, 제1 모드 드라이버의 사용을 통해 제1 모드를 가능하게 하는
    명령어를 더 포함하는 컴퓨터 판독가능 명령어.
KR1020040087954A 2003-12-12 2004-11-01 실제 및 이상화된 하드웨어 기반 장치의 바이모달 장치가상화를 위한 시스템 및 방법 KR20050059409A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/734,450 US7558723B2 (en) 2003-12-12 2003-12-12 Systems and methods for bimodal device virtualization of actual and idealized hardware-based devices
US10/734,450 2003-12-12

Publications (1)

Publication Number Publication Date
KR20050059409A true KR20050059409A (ko) 2005-06-20

Family

ID=34552773

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040087954A KR20050059409A (ko) 2003-12-12 2004-11-01 실제 및 이상화된 하드웨어 기반 장치의 바이모달 장치가상화를 위한 시스템 및 방법

Country Status (13)

Country Link
US (1) US7558723B2 (ko)
EP (1) EP1548589B1 (ko)
JP (1) JP4610307B2 (ko)
KR (1) KR20050059409A (ko)
CN (1) CN100449488C (ko)
AU (1) AU2004220769A1 (ko)
BR (1) BRPI0404496A (ko)
CA (1) CA2485239A1 (ko)
ES (1) ES2664817T3 (ko)
MX (1) MXPA04011275A (ko)
RU (1) RU2406113C2 (ko)
TW (1) TW200519632A (ko)
ZA (1) ZA200409138B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101533209B1 (ko) * 2009-01-27 2015-07-01 심볼테크놀로지스,인코포레이티드 디바이스 가상화를 이용하는 이동 유닛을 위한 방법들 및 장치들

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8838743B2 (en) * 2004-02-13 2014-09-16 Intel Corporation Apparatus and method for a dynamically extensible virtual switch
US20060005190A1 (en) * 2004-06-30 2006-01-05 Microsoft Corporation Systems and methods for implementing an operating system in a virtual machine environment
US8249853B2 (en) 2006-03-31 2012-08-21 Intel Corporation Exposing device features in partitioned environment
JP4945186B2 (ja) * 2006-07-28 2012-06-06 株式会社東芝 記憶装置およびこれを含むメモリシステム
US8099274B2 (en) * 2007-03-30 2012-01-17 International Business Machines Corporation Facilitating input/output processing of one or more guest processing systems
US7793307B2 (en) * 2007-04-06 2010-09-07 Network Appliance, Inc. Apparatus and method for providing virtualized hardware resources within a virtual execution environment
US20080320041A1 (en) * 2007-06-21 2008-12-25 Motorola, Inc. Adding virtual features via real world accessories
KR100917687B1 (ko) * 2007-06-26 2009-09-21 문창선 가상 인터페이스를 제공하기 위한 시스템 및 방법
US9043553B2 (en) 2007-06-27 2015-05-26 Microsoft Technology Licensing, Llc Leveraging transactional memory hardware to accelerate virtualization and emulation
US8176487B2 (en) 2007-08-02 2012-05-08 International Business Machines Corporation Client partition scheduling and prioritization of service partition work
US8010763B2 (en) 2007-08-02 2011-08-30 International Business Machines Corporation Hypervisor-enforced isolation of entities within a single logical partition's virtual address space
US8645974B2 (en) * 2007-08-02 2014-02-04 International Business Machines Corporation Multiple partition adjunct instances interfacing multiple logical partitions to a self-virtualizing input/output device
JP5056334B2 (ja) * 2007-10-15 2012-10-24 富士通株式会社 管理プログラム、管理装置、および管理方法
US7743389B2 (en) * 2007-11-06 2010-06-22 Vmware, Inc. Selecting between pass-through and emulation in a virtual machine environment
JP2009134601A (ja) * 2007-11-30 2009-06-18 Fujitsu Ltd ディスクアクセス方式切替装置
US8230155B2 (en) 2008-06-26 2012-07-24 Microsoft Corporation Direct memory access filter for virtualized operating systems
US8151032B2 (en) * 2008-06-26 2012-04-03 Microsoft Corporation Direct memory access filter for virtualized operating systems
US8566565B2 (en) * 2008-07-10 2013-10-22 Via Technologies, Inc. Microprocessor with multiple operating modes dynamically configurable by a device driver based on currently running applications
US8239938B2 (en) * 2008-12-08 2012-08-07 Nvidia Corporation Centralized device virtualization layer for heterogeneous processing units
TWI433527B (zh) 2009-09-11 2014-04-01 Shih Pi Ta Technology Ltd 一種建立通訊連線之方法及其系統
KR101275293B1 (ko) * 2009-10-26 2013-06-14 한국전자통신연구원 네트워크 장치 및 네트워크 가상화 지원 방법
US9529615B2 (en) 2010-11-24 2016-12-27 International Business Machines Corporation Virtual device emulation via hypervisor shared memory
US20120167082A1 (en) * 2010-12-23 2012-06-28 Sanjay Kumar Direct sharing of smart devices through virtualization
JPWO2012102002A1 (ja) * 2011-01-24 2014-06-30 パナソニック株式会社 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、記録媒体、及び集積回路
US9445392B1 (en) * 2011-10-07 2016-09-13 BlueStack Systems, Inc. Method of providing non-native notifications and system thereof
US9329887B2 (en) 2011-10-19 2016-05-03 Hob Gmbh & Co. Kg System and method for controlling multiple computer peripheral devices using a generic driver
US9442732B2 (en) 2012-03-19 2016-09-13 Via Technologies, Inc. Running state power saving via reduced instructions per clock operation
US8904388B2 (en) * 2013-01-10 2014-12-02 Vce Company, Llc Scripting language executor service for applications
US9330011B2 (en) 2013-09-20 2016-05-03 Via Alliance Semiconductor Co., Ltd. Microprocessor with integrated NOP slide detector
US10019260B2 (en) 2013-09-20 2018-07-10 Via Alliance Semiconductor Co., Ltd Fingerprint units comparing stored static fingerprints with dynamically generated fingerprints and reconfiguring processor settings upon a fingerprint match
US9755902B2 (en) 2014-05-20 2017-09-05 Via Alliance Semiconductor Co., Ltd. Dynamic system configuration based on cloud-collaborative experimentation
US9575778B2 (en) 2014-05-20 2017-02-21 Via Alliance Semiconductor Co., Ltd. Dynamically configurable system based on cloud-collaborative experimentation
US10102094B2 (en) * 2016-01-22 2018-10-16 Sony Interactive Entertainment Inc. Simulating legacy bus behavior for backwards compatibility
CN113490292B (zh) * 2021-07-16 2023-04-28 联想(北京)有限公司 通信处理方法和电子设备

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0212340A (ja) * 1988-06-29 1990-01-17 Nec Corp 仮想計算機
JPH05151084A (ja) * 1991-11-26 1993-06-18 Nec Corp Tlbエントリクリア方式
EP0610677A3 (en) * 1993-02-12 1995-08-02 Ibm Communication device management module operating in two modes.
US5548783A (en) * 1993-10-28 1996-08-20 Dell Usa, L.P. Composite drive controller including composite disk driver for supporting composite drive accesses and a pass-through driver for supporting accesses to stand-alone SCSI peripherals
US5604887A (en) * 1994-01-21 1997-02-18 Microsoft Corporation Method and system using dedicated location to share information between real and protected mode device drivers
US5459869A (en) * 1994-02-17 1995-10-17 Spilo; Michael L. Method for providing protected mode services for device drivers and other resident software
US5940613A (en) * 1996-05-01 1999-08-17 Sun Microsystems, Inc. Method for creating a single binary virtual device driver for a windowing operating system
US5958022A (en) * 1997-03-21 1999-09-28 International Business Machines Corporation System and method for I/O access mode selection
WO1998044411A1 (en) * 1997-04-02 1998-10-08 Microsoft Corporation Method for integrating a virtual machine with input method editors
US6785894B1 (en) * 1999-04-09 2004-08-31 Sun Microsystems, Inc. Virtual device driver
JP2001256153A (ja) * 2000-03-09 2001-09-21 Canon Inc ネットワークデバイス制御装置および方法
US7308717B2 (en) * 2001-02-23 2007-12-11 International Business Machines Corporation System and method for supporting digital rights management in an enhanced Java™ 2 runtime environment
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
US20030061401A1 (en) * 2001-09-25 2003-03-27 Luciani Luis E. Input device virtualization with a programmable logic device of a server
US7103529B2 (en) * 2001-09-27 2006-09-05 Intel Corporation Method for providing system integrity and legacy environment emulation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101533209B1 (ko) * 2009-01-27 2015-07-01 심볼테크놀로지스,인코포레이티드 디바이스 가상화를 이용하는 이동 유닛을 위한 방법들 및 장치들

Also Published As

Publication number Publication date
RU2004133169A (ru) 2006-04-27
ZA200409138B (en) 2006-07-26
BRPI0404496A (pt) 2005-08-23
US7558723B2 (en) 2009-07-07
ES2664817T3 (es) 2018-04-23
AU2004220769A1 (en) 2005-06-30
RU2406113C2 (ru) 2010-12-10
EP1548589B1 (en) 2018-02-28
CA2485239A1 (en) 2005-06-12
EP1548589A3 (en) 2007-06-06
MXPA04011275A (es) 2005-06-16
CN1627263A (zh) 2005-06-15
JP2005174307A (ja) 2005-06-30
TW200519632A (en) 2005-06-16
CN100449488C (zh) 2009-01-07
JP4610307B2 (ja) 2011-01-12
US20050131668A1 (en) 2005-06-16
EP1548589A2 (en) 2005-06-29

Similar Documents

Publication Publication Date Title
EP1548589B1 (en) Systems and methods for bimodal device virtualization of actual and idealized hardware-based devices
JP4156611B2 (ja) 64ビットx86プロセッサ上でレガシ32ビットx86仮想マシンを実行するためのシステムおよび方法
US7555596B2 (en) Systems and methods for attaching a virtual machine virtual hard disk to a host machine
KR102047558B1 (ko) 가상 디스크 저장 기술
US8612633B2 (en) Virtual machine fast emulation assist
RU2412468C2 (ru) Системы и способы многоуровневой обработки перехватов в виртуальной машинной среде
KR101602519B1 (ko) 가상화된 저장소 할당 방법
US7580826B2 (en) Systems and methods for development of emulated devices in a virtual machine environment
US8117346B2 (en) Configuration space virtualization
US20100275205A1 (en) Computer machine and access control method
KR20140018316A (ko) 가상 디스크 스토리지 기술
Campbell et al. An introduction to virtualization
Liang et al. A lean USB file system for bare machine applications
JP2005056019A (ja) 情報処理装置

Legal Events

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