KR20060047766A - 가상 기계 환경에서 에뮬레이트된 장치들을 개발하기 위한시스템 및 방법 - Google Patents

가상 기계 환경에서 에뮬레이트된 장치들을 개발하기 위한시스템 및 방법 Download PDF

Info

Publication number
KR20060047766A
KR20060047766A KR1020050039289A KR20050039289A KR20060047766A KR 20060047766 A KR20060047766 A KR 20060047766A KR 1020050039289 A KR1020050039289 A KR 1020050039289A KR 20050039289 A KR20050039289 A KR 20050039289A KR 20060047766 A KR20060047766 A KR 20060047766A
Authority
KR
South Korea
Prior art keywords
virtual
computing environment
virtual computing
vhd
hardware
Prior art date
Application number
KR1020050039289A
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 KR20060047766A publication Critical patent/KR20060047766A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 가상 장치들을 가상 컴퓨팅 환경에 동적으로 추가하는 수단을 제공한다. 본 발명에서 설명되는 시스템은 목록(manifest)을 구비한 가상화된 컴퓨팅 시스템을 포함하며, 장치 리스트 및 외부 장치 디렉토리를 더 포함하여, 가상 장치를 가상 컴퓨팅 환경에 추가하는 데 필요한 사양을 포함하는 소프트웨어 플러그-인을 추가하기 위한 디렉토리를 가상 컴퓨팅 시스템의 사용자에게 제공한다. 소정의 실시예들은 가상 장치를 추가하고 구성하는 방법을 제공하는 것과 특히 관련된다. 소정의 실시예들은 가상 컴퓨팅 시스템을 조작하는 방법을 제공하는 것과 특히 관련되는데, 여기서 호스트 운영 체제 및 가상 장치들은 일련의 상태를 통해 진행하는데, 특히 초기화, 파워 업, 저장 상태 로딩, 정상 상태에서의 동작, 미래 복원을 위한 상태 저장, 파워 다운, 및 해체 및 턴 오프를 행한다.
가상 컴퓨팅 환경, 가상 컴퓨팅 시스템, 장치 리스트, 에뮬레이션, 가상 하드웨어 장치, 가상 기계

Description

가상 기계 환경에서 에뮬레이트된 장치들을 개발하기 위한 시스템 및 방법{SYSTEMS AND METHODS FOR DEVELOPMENT OF EMULATED DEVICES IN A VIRTUAL MACHINE ENVIRONMENT}
도 1은 본 발명의 양태들이 구현될 수 있는 컴퓨터 시스템을 나타내는 블록도.
도 2는 컴퓨터 시스템에서 에뮬레이트된 동작 환경에 대한 하드웨어 및 소프트웨어 아키텍처의 논리적 계층을 나타내는 도면.
도 3a는 가상화된 컴퓨팅 시스템을 나타내는 도면.
도 3b는 호스트 운영 체제 쪽에서 실행되는 가상 기계 모니터를 포함하는 가상 컴퓨팅 시스템의 다른 실시예를 나타내는 도면.
도 4는 가상 기계 모니터 내의 가상 장치들과 관련된 파일 구조를 포함하는 도 3b의 가상 컴퓨팅 시스템을 나타내는 도면.
도 5는 가상 컴퓨팅 시스템에서 사용하기 위한 외부 장치들을 추가하는 방법을 나타내는 도면.
도 6은 가상 장치들이 유연하게 추가되는 가상 컴퓨팅 시스템을 동작시키는 방법을 나타내는 도면.
도 7은 가상 컴퓨팅 환경을 이용하여 가상 하드웨어 장치를 설계하고 테스트 하는 방법을 나타내는 도면.
도 8은 가상 컴퓨팅 환경 내의 가상 하드웨어를 이용하여 장치 드라이버를 설계하고 테스트하는 방법을 나타내는 도면.
<도면의 주요 부분에 대한 부호의 간단한 설명>
20: 컴퓨터
21: 처리 장치
22: 시스템 메모리
23: 시스템 버스
27: 하드 드라이브
28: 플로피 드라이브
29: 분리식 저장 장치
30: 광 드라이브
32: 하드 디스크 드라이브 인터페이스
33: 자기 디스크 드라이브 인터페이스
34: 광 디스크 드라이브 인터페이스
36: 애플리케이션 프로그램
37: 다른 프로그램
38: 프로그램 데이타
40: 키보드
42: 마우스
46: 직렬 포트 인터페이스
47: 모니터
48: 비디오 어댑터
49: 원격 컴퓨터
50: 플로피 드라이브
53: 네트워크 인터페이스
54: 모뎀
55: 호스트 어댑터
56: SCSI 버스
62: 저장 장치
본 발명은 가상 기계("프로세서 가상화"라고도 함), 및 가상 기계 환경에서 실행되는 소프트웨어에 관한 것이다. 구체적으로, 본 발명은 물리적 장치의 거동을 에뮬레이트하는 가상 장치를 개발하고 전개하기 위한 시스템 및 방법에 관한 것이다.
컴퓨터는 특정 세트의 컴퓨터 명령을 실행하도록 설계된 범용 중앙 처리 장치(CPU)를 포함한다. 유사한 아키텍처 또는 설계 사양을 가진 일군의 프로세서들은 동일 프로세서 패밀리의 멤버들로 간주할 수 있다. 현재의 프로세서 패밀리의 예로는 아리조나 피닉스에 위치한 모토롤라사가 제조한 모토롤라 680X0 프로세서 패밀리, 캘리포니아 서니배일에 위치한 인텔사가 제조한 인텔 80X86 프로세서 패밀리, 및 모토롤라사가 제조하고 캘리포니아 쿠퍼티노에 위치한 애플 컴퓨터사가 제조한 컴퓨터에서 사용되는 PowerPC 프로세서 패밀리 등이 있다. 일군의 프로세서는 이들의 유사한 아키텍처 및 설계 사양으로 인해 동일 패밀리에 속할 수 있지만, 프로세서들은 이들의 클럭 속도 및 다른 성능 파라미터들에 따라 패밀리 내에서 광범위하게 변할 수 있다.
각각의 프로세서 패밀리는 그 프로세서 패밀리에 고유한 명령들을 실행한다. 프로세서 또는 프로세서 패밀리가 실행할 수 있는 명령들의 집합 세트는 프로세서의 명령 세트로서 알려져 있다. 예를 들어, 인텔 80X86 프로세서 패밀리에 의해 사용되는 명령 세트는 PowerPC 프로세서 패밀리에 의해 사용되는 명령 세트와 호환되지 않는다. 인텔 80X86 명령 세트는 복합 명령 세트 컴퓨터(CISC) 포맷에 기초한다. 모토롤라 PowerPC 명령 세트는 축소 명령 세트 컴퓨터(RISC) 포맷에 기초한다. CISC 프로세서는 많은 수의 명령을 사용하는데, 이들 중 일부는 다소 복잡한 기능을 수행할 수 있지만, 일반적으로 많은 클럭 사이클의 실행을 필요로 한다. RISC 프로세서는 보다 적은 수의 이용 가능한 명령을 사용하여 훨씬 더 높은 속도로 실행되는 보다 간단한 기능 세트를 수행한다.
또한, 컴퓨터 시스템들 사이에서의 프로세서 패밀리의 고유성은 일반적으로 컴퓨터 시스템들의 하드웨어 아키텍처의 다른 요소들 사이에서의 비호환을 유발한다. 인텔 80X86 프로세서 패밀리의 프로세서로 제조한 컴퓨터 시스템은 PowerPC 프로세서 패밀리의 프로세서로 제조한 컴퓨터 시스템의 하드웨어 아키텍처와 다른 하드웨어 아키텍처를 갖는다. 프로세서 명령 세트 및 컴퓨터 시스템의 하드웨어 아키텍쳐의 고유성으로 인해, 애플리케이션 소프트웨어 프로그램들은 대개 특정 운영 체제를 실행하는 특정 컴퓨터 시스템 상에서 실행되도록 작성된다.
컴퓨터 제조자들은 컴퓨터 제조자의 생산 라인과 관련된 마이크로프로세서 패밀리 상에서 적은 수의 애플리케이션이 아니라 많은 수의 애플리케이션이 실행될 수 있도록 함으로써 그들의 시장 점유율을 최대화하고자 한다. 컴퓨터 시스템 상에서 실행될 수 있는 운영 체제 및 애플리케이션 프로그램의 수를 늘리기 위하여, 호스트라고 하는 한 타입의 CPU를 구비한 소정의 컴퓨터가 게스트라고 하는 관련 없는 타입의 CPU의 명령들을 에뮬레이트할 수 있게 하는 에뮬레이터 프로그램을 포함하는 기술 분야가 개발되어 왔다. 따라서, 호스트 컴퓨터는 소정의 게스트 명령에 응답하여 하나 이상의 호스트 명령이 호출되도록 하는 애플리케이션을 실행한다. 따라서, 호스트 컴퓨터는 그 자신의 하드웨어 아키텍처용의 소프트웨어 설계 및 관련 없는 하드웨어 아키텍처를 가진 컴퓨터용으로 작성된 소프트웨어 양자를 실행할 수 있다. 보다 구체적인 예로서, 애플 컴퓨터사에 의해 제조된 컴퓨터 시스템은 PC 기반 컴퓨터 시스템용으로 작성된 운영 체제 및 프로그램을 실행할 수 있다. 단일 CPU 상에서 다수의 비호환 운영 체제를 동시에 동작시키는 에뮬레이터 프로그램을 사용하는 것도 가능할 수 있다. 이러한 배열에서, 각각의 운영 체제는 다른 운영 체제와 호환되지 않지만, 에뮬레이터 프로그램이 2개의 운영 체제 중 하나를 호스트화하여, 다른 비호환 운영 체제가 동일 컴퓨터 시스템 상에서 동시에 실행되는 것을 가능하게 할 수 있다.
게스트 컴퓨터 시스템이 호스트 컴퓨터 시스템 상에서 에뮬레이트될 때, 게스트 컴퓨터 시스템은 단지 하나의 특정 하드웨어 아키텍처의 동작의 순수 소프트웨어 표현으로서 호스트 컴퓨터 시스템 내에 존재하므로 "가상 기계"로 지칭된다. 에뮬레이터, 가상 기계 및 프로세서 에뮬레이션이라는 용어들은 종종 전체 컴퓨터 시스템의 하드웨어 아키텍처를 모방하거나 에뮬레이트하는 능력을 표현하기 위해 상호 교환적으로 사용된다. 예를 들어, 캘리포니아 샌 마테오에 위치하는 코넥틱스사가 만든 가상 PC 소프트웨어는 인텔 80X86 펜티엄 프로세서 및 다양한 마더보드 컴포넌트 및 카드를 포함하는 전체 컴퓨터를 에뮬레이트한다. 이들 컴포넌트의 동작은 호스트 기계 상에서 실행되고 있는 가상 기계에서 에뮬레이트된다. PowerPC 프로세서를 구비한 컴퓨터 시스템과 같은 호스트 컴퓨터의 운영 체제 소프트웨어 및 하드웨어 아키텍처 상에서 실행되는 에뮬레이터 프로그램이 전체 게스트 컴퓨터 시스템의 동작을 모방한다.
에뮬레이터 프로그램은 호스트 기계의 하드웨어 아키텍처와 에뮬레이트된 환경 내에서 실행되는 소프트웨어에 의해 전송되는 명령들 사이의 교환 수단으로서 기능한다. 이러한 에뮬레이터 프로그램은 물리적 컴퓨터 하드웨어 상에서 직접 실행되는 운영 체제인 호스트 운영 체제(HOS)일 수 있다. 대안으로, 에뮬레이트된 환경은 하드웨어 위에서 직접 실행되는 소프트웨어 계층인 가상 기계 모니터(VMM)일 수도 있는데, VMM은 VMM이 가상화하고 있는 하드웨어와 동일한 인터페이스들을 노출시킴으로써 기계의 모든 자원을 가상화한다(이것은 VMM이 그 위에서 실행되는 운영 체제 계층들에 의해 인식될 수 없게 한다). 호스트 운영 체제 및 VMM은 동일한 물리적 하드웨어 상에서 병렬로 실행될 수 있다.
가상 장치는 소프트웨어로 구현된 논리적 장치인데, 이는 소정 유형의 실제 또는 이상적인 물리적 장치에 대응한다. 일반적으로, 가상 장치들을 모델링하기 위한 2가지 접근법, 즉 기존 하드웨어를 직접 모델링하는 "하드웨어 가상 장치" 접근법, 및 물리적 하드웨어의 단순한 투영이 아니라 가상 기계(VM) 환경에 대해 최적화된 "이상적 가상 장치" 접근법이 있다.
하드웨어 가상 장치 접근법은 호환성과 관련하여 이점을 제공하는데, 가상 장치가 모든 면에서 실제 장치와 똑같이 동작하므로, 이 장치와 상호작용하도록 설계된 소프트웨어(예를 들어, 드라이버)는 수정 없이 하드웨어 가상 장치에서 실행된다. 그러나, 하드웨어 가상 장치는 성능 면에서는 불리한데, 이는 하드웨어 설계자들이 일반적으로 가상화 문제를 고려하지 않기 때문에 종종 물리적 하드웨어가 상당한 오버헤드 비용의 발생 없이는 가상 장치와 에뮬레이트하기 어렵고, 따라서 하드웨어 가상 장치들이 종종 그들의 실제 하드웨어 대응부(counterpart)보다 느리기 때문이다.
한편, 이상적 가상 장치들은 개발자들이 구현하기 쉽고 효율적으로 사용할 수 있는 가상 장치를 설계하는 데에 상당한 자유를 제공한다. 이상적 가상 장치의 설계는 물리적 하드웨어 설계에 의해 부과되는 제한을 따를 필요가 없으므로, 이상적 가상 장치들은 VM 환경에서의 사용을 위해 최적화될 수 있다. 또한, 이상적 가상 장치의 개발자들은 기존 소프트웨어가 올바른 동작을 위해 의존할 수 있는 미묘 한 부작용(예를 들어, 타이밍 및 상태 변경)에 관여할 필요가 없다. 더욱이, 개발자들은 실제로는 존재하지 않는 하드웨어와 유사한 이상적 가상 장치들, 예를 들어 게스트 시스템과 호스트 시스템 사이의 통신을 허용하는 가상 장치를 만들 수도 있다. 그러나, 이상적 가상 장치 접근법이 이용될 때에는 호환성 문제가 발생할 수 있는 위험이 있는데, 이는 가상 장치가 실제로는 모든 면에서 실제 장치와 똑같이 동작할 수 없고, 이 물리적 장치와 상호작용하도록 설계된 소프트웨어(예를 들어, 드라이버)가 수정 없이는 이상적 가상 장치에서 올바르게 또는 전혀 동작할 수 없기 때문이다.
현재, 가상 기계에서 이용할 수 있는 가상 장치들(이상적 또는 하드웨어)의 세트는 가상 기계 소프트웨어가 작성될 때 미리 결정되며, 현재의 가상 기계 제품들은 새로운 가상 장치들을 추가하기 위한 수단을 갖고 있지 않다. 이것은 장치들의 수 및 다양성이 가상 기계 소프트웨어에 포함된 것들로 제한된다는 것을 의미한다. 기술이 발달하고, 장치들(물리 및 가상)의 수가 계속 증가함에 따라, 가상 기계 소프트웨어에 새로운 가상 장치들을 추가할 수 있는 능력은 더 중요해졌다. 필요에 따라 가상 기계 환경에 새로운 가상 장치들을 동적으로 추가할 수 있는 방법이 요망된다.
가상 기계 환경의 요구에 더하여, 하드웨어의 개발은 물론 이 하드웨어용의 소프트웨어 드라이버들의 개발을 지원하기 위해, 시스템에 새로운 가상 장치들을 추가할 수 있는 수단에 대한 일반적인 요구도 있다. 새로운 하드웨어와 관련하여, 새로운 하드웨어 장치에서 버그들 및 다른 예상치 못한 에러들을 발견하고 제거하 기 위한 품질 테스트에 대한 요구가 존재한다. 일반적으로, 이러한 타입의 테스트에 대한 접근법은 하드웨어 장치들이 설계되고 프로토타입이 제조된 후까지 대기한다. 그러나, 이러한 설계-프로토타입-테스트 프로세스는, 테스트 중에 에러가 발견된 경우, 프로세스는 처음부터 다시 시작되어야 하고, 따라서 새로운 장치에 대한 개발 사이클이 길어진다는 점에서 비효율적이다. 따라서, 물리적 장치 제품들의 출하 시간을 감소시킬 수 있는 방법이 필요하다. 마찬가지로, 기존 및 새로운 물리적 하드웨어 장치들에 대한 새로운 장치 드라이버 소프트웨어의 완전한 테스트의 수행은 잘해 봐야 시간 소모적이며, 어떤 경우에는 완료하기 어렵거나 심지어는 불가능한데, 이는 물리적 하드웨어 장치가 적시에 의미 있는 방식으로 장치 드라이버에 의해 처리할 다양한 에러들을 생성하도록 유도하는 것이 어렵기 때문이다. 결과적으로, 소프트웨어 드라이버 내의 드라이버 코드의 경로들 중 많은 경로가 완전히 훈련될 수 없는데, 이는 테스트가 실행되는 물리적 하드웨어 장치들이 유한한 테스트 기간 동안 완전한 범위의 에러들을 나타내지 못하기 때문이다(그리고 실제로 그렇게 할 수 없다). 따라서, 장치 드라이버 소프트웨어 테스트에 필요한 시간을 줄이고, 그 품질을 향상시킬 수 있는 방법이 필요하다.
가상 장치들은 외관상 양자와 관련하여 솔루션을 제공하는데, 제안된 물리적 하드웨어 장치의 성능을 미러링(mirroring)하는 하드웨어 가상 장치는 물리적 프로토타입이 개발되기 전에 소정의 하드웨어 성능 및 호환성을 테스트하는 데 사용될 수 있으며, 따라서 물리적 프로토타입 장치를 수정하는 것보다 가상 장치를 수정하는 것이 더 쉬우므로 설계 프로세스를 단축시킬 수 있다. 마찬가지로, 새로운 장 치 드라이버 소프트웨어를 테스트하기 위해, 이상적 가상 장치는 새로운 장치 드라이버를 완전히 테스트하는 데 필요한 원하는 하드웨어 장치 에러들의 모두를 발생시키는 데 사용될 수 있다(원하는 에러들을 생성함으로써 의도적으로 그렇게 하기 위해 하드웨어 장치를 물리적으로 생성할 필요를 없앤다는 점에서 가상 장치가 이상화되는 경우). 그러나, 이러한 접근법의 단점은 가상 장치들이 하드코딩(hardcode)되는 경향이 있다는 점이다. 즉, 가상 장치들은 가상 컴퓨팅 환경의 모놀리식 컨테이너 내에 직접 작성되는 경향이 있으며, 따라서 이들은 쉽게 수정할 수 없다. 예를 들어, 기존의 가상 기계 환경에서, 가상 기계는 로딩하도록 하드코딩된 가상 장치들만을 로딩한다. 따라서, 이 분야에서는 새로운 가상 장치들의 동적이고 수정 가능한 로딩을 허용하는 가상 컴퓨팅 환경이 필요하다.
본 발명의 여러 실시예는 가상 컴퓨팅 환경에 가상 장치들을 동적으로 추가하기 위한 수단을 제공한다. 본 발명은 목록(내부 장치 리스트를 포함)을 구비한 가상화된 컴퓨팅 시스템을 포함하는데, 이 가상화된 컴퓨팅 시스템은 가상화된 컴퓨팅 시스템의 사용자에게 가상 컴퓨팅 환경에 가상 장치를 추가하는 데에 필요한 사양을 포함하는 소프트웨어 플러그-인(plug-in)을 추가하기 위한 수단을 제공하는 외부 장치 디렉토리를 더 포함한다. 가상 장치를 추가하는 방법이 설명되는데, 여기서 외부 장치 디렉토리가 스캐닝되고, 적당한 장치 특성들이 얻어지고, 지정되며, 사용자에 의해 저장되고, 새로운 가상 장치들은 목록에 추가되어 가상 컴퓨팅 환경에서 사용될 수 있다.
이들 실시예 중 일부는 가상 컴퓨팅 시스템을 조작하는 방법을 제공하는 것과 특히 관련되는데, 여기서 호스트 운영 체제 및 가상 장치들은 일련의 상태를 통해 진행하는데, 특히 초기화, 파워 업, 저장 상태 로딩, 정상 상태에서의 동작, 장래의 복원을 위한 상태 저장, 파워 다운, 및 해체 및 턴 오프를 행한다. 정상 동작에 선행하는 상태들은 가상 장치들이 동작하도록 준비하는 것으로서 기술된다. 정상 동작 상태는 모든 장치들이 준비가 되어 있고, 호스트 운영 체제가 게스트 운영 체제로부터의 요구를 받아들이는 상태이다. 정상 동작에 후속하는 상태들은 턴 오프되는 컴퓨팅 장치에 대한 준비에 있어서 정상 동작에 선행한 단계들을 원상태로 되돌리는 것으로서 기술된다.
상기 실시예들 중 일부는 물리적 장치의 개발에 있어서 가상 장치를 테스트하기 위한 수단을 제공하는 것과 특히 관련된다. 이들 실시예는 2가지 중요한 방법으로 물리적 장치의 개발을 돕는다. 즉, 1) 이들은 프로토타입이 물리적으로 생성되기 전에 장치의 테스트가 시작되는 것을 허용하며, 2) 장치 내에 의도적으로 에러가 도입되는 것을 허용하여, 이전에 가능했던 것보다 훨씬 더 완전한 장치 드라이버 소프트웨어 내 경로들의 테스트를 제공한다.
소정의 추가적인 실시예들은 장치 드라이버 소프트웨어의 개발에 있어서 테스트 및 지원을 위해 에러에 민감한 이상적인 가상 장치들을 제공하는 수단을 제공하는 것과 특히 관련된다. 이들 실시예는 2가지 중요한 방법으로 장치 드라이버의 개발을 돕는다. 즉, 1) 이들은 에러에 민감한 프로토타입을 의도적으로 개발하지 않고도 장치의 테스트를 허용하며, 2) 새로운 장치 드라이버의 보다 완전하고 보다 풍부한 테스트를 위해 광범위한 에러가 의도적으로 생성되는 것을 허용한다.
위의 요약은 물론, 아래의 바람직한 실시예들에 대한 상세한 설명은 첨부된 도면들과 함께 읽을 때 보다 잘 이해된다. 본 발명의 설명을 위해 본 발명의 예시적인 구성들이 도면에 도시되지만, 본 발명은 개시된 특정 방법 및 장치에 한정되는 것은 아니다.
본 발명의 요지는 법정 요건을 만족시키도록 구체적으로 설명된다. 그러나, 설명 자체는 본 특허의 범위를 제한하려는 의도는 아니다. 오히려, 발명자는 청구된 내용이 다른 현재 또는 미래의 기술들과 함께 본 명세서에서 설명되는 것들과 유사한 상이한 단계들 또는 단계들의 조합을 포함하도록 다른 방법들로 구현될 수도 있음을 고려하였다. 더욱이, "단계"라는 용어는 본 명세서에서 이용 방법들의 상이한 요소들을 의미하도록 사용될 수 있지만, 이 용어는 개별 단계들의 순서가 명시적으로 설명되지 않는 경우에는 본 명세서에 개시된 다양한 단계들 사이의 임의의 특정 순서를 의미하는 것으로 해석되지 않아야 한다.
컴퓨터 환경
본 발명의 다양한 실시예는 컴퓨터 상에서 실행될 수 있다. 도 1 및 아래의 설명은 본 발명이 구현될 수 있는 적절한 컴퓨팅 환경의 간단하고 전반적인 설명을 제공한다. 요구되는 것은 아니지만, 본 발명은 클라이언트 워크스테이션 또는 서버와 같은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행 가능 명령들 과 관련하여 설명된다. 일반적으로, 프로그램 모듈은 특정 작업을 수행하거나 특정 추상 데이터 타입을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 더욱이, 본 발명은 핸드헬드 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 또는 프로그래머블 소비자 전자 장치, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 다른 컴퓨터 시스템 구성에서 실시될 수 있다는 것을 당업자는 이해할 것이다. 본 발명은 또한 통신 네트워크를 통해 연결된 원격 처리 장치들에 의해 작업들이 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈들은 로컬 및 원격 메모리 저장 장치 양자에 배치될 수 있다.
도 1에 도시된 바와 같이, 예시적인 범용 컴퓨팅 시스템은 처리 장치(21), 시스템 메모리(22), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 처리 장치(21)에 결합시키는 시스템 버스(23)를 포함하는 통상의 개인용 컴퓨터(20) 등을 포함한다. 시스템 버스(23)는 메모리 버스 또는 메모리 제어기, 주변 버스, 및 다양한 버스 아키텍처 중 어느 하나를 사용하는 로컬 버스를 포함하는 여러 타입의 버스 아키텍처 중 어느 하나일 수 있다. 시스템 메모리는 ROM(24) 및 RAM(25)을 포함한다. 예를 들어 시동 중에 개인용 컴퓨터(20) 내의 요소들 사이의 정보 전송을 돕는 기본 루틴들을 포함하는 기본 입출력 시스템(26; BIOS)이 ROM(24)에 저장된다. 개인용 컴퓨터(20)는 도시되지 않은 하드 디스크에 대해 판독 및 기입을 행하는 하드 디스크 드라이브(27), 분리식 자기 디스크(29)에 대해 판독 및 기입을 행하는 자기 디스크 드라이브(28), 및 CD ROM 또는 다른 광학 매체와 같은 분리식 광 디스크(31)에 대해 판독 및 기입을 행하는 광 디스크 드라이브(30)를 더 포함할 수 있다. 하드 디스크 드라이브(27), 자기 디스크 드라이브(28) 및 광 디스크 드라이브(30)는 하드 디스크 드라이브 인터페이스(32), 자기 디스크 드라이브 인터페이스(33) 및 광 디스크 드라이브 인터페이스(34)에 의해 각각 시스템 버스(23)에 접속된다. 드라이브들 및 관련 컴퓨터 판독 가능 매체들은 개인용 컴퓨터(20)를 위한 컴퓨터 판독 가능 명령, 데이터 구조, 프로그램 모듈 및 다른 데이터의 불휘발성 저장 장치를 제공한다. 본 명세서에 설명되는 예시적인 환경이 하드 디스크, 분리식 자기 디스크(29) 및 분리식 광 디스크(31)를 사용하지만, 자기 카세트, 플래시 메모리 카드, 디지털 비디오 디스크, 베르누이 카트리지, RAM, ROM 등과 같이 컴퓨터에 의해 액세스될 수 있는 데이터를 저장할 수 있는 다른 타입의 컴퓨터 판독 가능 매체도 예시적인 동작 환경에서 사용될 수 있다는 것을 당업자는 이해할 것이다.
운영 체제(35), 하나 이상의 응용 프로그램(36), 다른 프로그램 모듈(37), 및 프로그램 데이터(38)를 포함하는 다수의 프로그램 모듈이 하드 디스크, 자기 디스크(29), 광 디스크(31), ROM(24) 또는 RAM(25)에 저장될 수 있다. 사용자는 키보드(40) 및 포인팅 장치(42)와 같은 입력 장치를 통해 명령 및 정보를 개인용 컴퓨터(20)에 입력할 수 있다. 다른 입력 장치(도시되지 않음)는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 및 다른 입력 장치들은 종종 시스템 버스에 결합된 직렬 포트 인터페이스(46)를 통해 처리 장치(21)에 접속되지만, 병렬 포트, 게임 포트 또는 유니버셜 직렬 버스(USB)와 같은 다른 인터페이스를 통해 접속될 수도 있다. 모니터(47) 또는 다른 타입의 표시 장치도 비디오 어댑터(48)와 같은 인터페이스를 통해 시스템 버스(23)에 접속된다. 모니터(47) 외에, 개인용 컴퓨터는 대개 스피커 및 프린터와 같은 다른 주변 출력 장치(도시되지 않음)를 포함한다. 도 1의 예시적인 시스템은 또한 호스트 어댑터(55), 소형 컴퓨터 시스템 인터페이스(SCSI) 버스(56), 및 SCSI 버스(56)에 접속된 외부 저장 장치(62)를 포함한다.
개인용 컴퓨터(20)는 원격 컴퓨터(49)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용하여 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(49)는 다른 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 장치, 또는 기타 공통 네트워크 노드일 수 있으며, 도 1 에는 메모리 저장 장치(50)만이 도시되어 있지만, 개인용 컴퓨터(20)에 관하여 상술한 구성요소 중 다수 또는 모든 구성요소를 일반적으로 포함한다. 도 1에 도시된 논리적 접속은 근거리 통신망(LAN; 51) 및 원거리 통신망(WAN; 52)을 포함한다. 이러한 네트워크 환경은 사무실, 기업 광역 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN 네트워크 환경에서 사용되는 경우, 개인용 컴퓨터(20)는 네트워크 인터페이스 또는 어댑터(53)를 통해 LAN(51)에 접속된다. WAN 네트워크 환경에서 사용되는 경우, 개인용 컴퓨터(20)는 일반적으로 인터넷 등의 WAN(52)을 통해 통신을 구축하기 위한 모뎀(54) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(54)은 직렬 포트 인터페이스(46)를 통해 시스템 버스(23)에 접속된다. 네 트워크 환경에서, 개인용 컴퓨터(20)에 관하여 도시된 프로그램 모듈 또는 그 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들 사이에 통신 링크를 설정하기 위한 다른 수단이 사용될 수 있다는 것을 이해할 것이다. 더욱이, 본 발명의 다양한 실시예들이 컴퓨터화된 시스템에 특히 적절한 것으로 생각되지만, 이 명세서의 어느 것도 본 발명을 이들 실시예로 제한하려는 의도는 없다.
가상 기계
개념적으로, 컴퓨터 시스템은 일반적으로 기본적인 하드웨어 계층에서 실행되는 하나 이상의 소프트웨어 계층을 포함한다. 이러한 계층화는 추상화를 위해 행해진다. 주어진 소프트웨어 계층에 대한 인터페이스를 정의함으로써, 그 계층은 그 위의 다른 계층들에 의해 상이하게 구현될 수 있다. 잘 설계된 컴퓨터 시스템에서, 각 계층은 단지 그 바로 아래의 계층에 대해서만 안다. 이것은 계층 또는 "스택"(다수의 인접 계층들)이 그 위의 계층들에 부정적인 영향을 미치지 않고 대체되는 것을 허용한다. 예를 들어, 소프트웨어 애플리케이션(상위 계층)은 대개 소정 형태의 영구 저장 장치에 파일을 기입하기 위해 운영 체제(하위 계층)의 하위 레벨에 의존하며, 이러한 애플리케이션은 플로피 디스크, 하드 드라이브 또는 네트워크 폴더에 데이터를 기입하는 것 사이의 차이를 이해할 필요가 없다. 이러한 하위 계층이 파일을 기입하기 위한 새로운 운영 체제 컴포넌트로 대체되는 경우, 상위 계층 소프트웨어 애플리케이션의 동작은 영향을 받지 않는다.
계층화된 소프트웨어의 유연성은 가상 기계(VM)가 실제로는 또 하나의 소프트웨어 계층인 가상 하드웨어 계층을 제공하는 것을 허용한다. 이러한 방식으로, VM은 그 위의 소프트웨어 계층들에 대해 상기 소프트웨어 계층들이 그들 자신의 개인 컴퓨터 시스템 상에서 실행되고 있다는 환영(illusion)을 생성할 수 있으며, 따라서 VM은 다수의 게스트 시스템이 단일 호스트 시스템 상에서 동시에 실행되는 것을 허용할 수 있다.
도 2는 컴퓨터 시스템에서 에뮬레이트된 동작 환경에 대한 하드웨어 및 소프트웨어 아키텍처의 논리적 계층화를 나타내는 도면이다. 에뮬레이션 프로그램(94)은 호스트 운영 체제 및/또는 하드웨어 아키텍처(92) 상에서 실행된다. 에뮬레이션 프로그램(94)은 게스트 하드웨어 아키텍처(96) 및 게스트 운영 체제(98)를 에뮬레이트한다. 또한, 소프트웨어 애플리케이션(100)은 게스트 운영 체제(98) 상에서 실행된다. 도 2의 에뮬레이트된 동작 환경에서는, 에뮬레이션 프로그램(94)의 동작 때문에, 소프트웨어 애플리케이션(100)은 호스트 운영 체제 및 하드웨어 아키텍처(92)와 일반적으로 호환되지 않는 운영 체제 상에서 실행되도록 설계된 경우에도 컴퓨터 시스템(90) 상에서 실행될 수 있다.
도 3a는 물리적 컴퓨터 하드웨어(102) 위에서 직접 실행되는 호스트 운영 체제 소프트웨어 계층(104)을 포함하는 가상화된 컴퓨팅 시스템을 나타내며, 호스트 운영 체제(호스트 OS)(104)는 호스트 OS가 가상화하고 있는 하드웨어와 동일한 인터페이스를 노출시킴으로써 기계의 모든 자원을 가상화한다(이것은 호스트 OS가 그 위에서 실행되는 운영 체제 계층들에 의해 인식될 수 없게 한다).
또한, 가상 기계 모니터(VMM) 소프트웨어 계층(104')이 호스트 운영 체제(104'') 대신에 또는 함께 실행될 수 있는데, 후자의 옵션은 도 3b에 도시되어 있다. 간략화를 위해, 이후의 모든 설명(특히 호스트 운영 체제(104)와 관련됨)은 도 3a에 도시된 실시예와 관련될 것이지만, 이러한 설명의 모든 양태는 도 3b의 실시예에 동일하게 적용되는데, 도 3b의 VMM(104')은 본질적으로 기능 레벨에서 후술하는 도 3a의 호스트 운영 체제(104)의 역할을 대체한다.
도 3a를 다시 참조하면, 호스트 OS(104)(또는 VMM(104')) 위에는 2개의 가상 기계(VM) 구현, 즉 예를 들어 가상화된 인텔 386 프로세서일 수 있는 VM A(108), 및 예를 들어 모토롤라 680X0 프로세서 패밀리 중 하나의 가상화된 버전일 수 있는 VM B(110)가 존재한다. 각각의 VM(108, 110) 위에는 게스트 운영 체제(게스트 OS) A(112) 및 B(114)가 각각 존재한다. 게스트 OS A(112) 위에는 2개의 애플리케이션, 즉 애플리케이션 A1(116) 및 애플리케이션 A2(118)가 실행되고 있으며, 게스트 OS B(114) 위에는 애플리케이션 B1(120)이 실행된다.
가상 장치의 동적 추가
도 4는 도 3b에 도시된 가상 기계 모니터(VMM) 시스템(또는 다른 실시예에서 도 3a에 도시된 호스트 OS 시스템)과 같은 가상화된 컴퓨팅 시스템을 나타낸다. 도면에서, 목록(122)은 장치 리스트 A(124) 및 장치 리스트 B(126)를 더 포함하는 호스트 OS(104) 내의 구성 파일이다. 목록(122)은 호스트 OS(104)에 의해 사용될 가상 장치들을 구성하고 열거하는 데 사용된다. 장치 리스트 A(124) 및 장치 리스 트 B(126)는 VM A(108) 및 VM B(110)에 의해 각각 사용될 수 있는 모든 가상 장치들에 대한 리스트 및 관련 파라미터들을 포함한다. 본 발명에 따르면, 목록(122)의 장치 리스트(124, 126)에 리스트된 장치들의 일부는 가상 기계 소프트웨어(예를 들어, 가상 PC)가 설치되었을 때 포함된 것들 외에 (외부적으로 정의된 장치들) 시간에 따라 리스트에 추가된다. 가상 장치들을 식별하고 기술하는 정보는 장치 리스트 A(124) 및 장치 리스트 B(126)에 저장된다. 또한, 몇몇 예에서, 가상 장치들은 일례에서 동적 링크 라이브러리(DLL) 파일인 파일명을 갖는데, 이는 사용을 위해 선택되었을 때 장치를 더 정의하는 데 사용된다.
외부 장치 디렉토리(128)는 호스트 OS(104) 내의 디렉토리인데, 이곳에는 새로운 가상 장치들에 대한 정보가 목록(122)에 추가되어 VM A(108) 또는 VM B(110)에서 이용할 수 있도록 되기 전에 배치된다. 일례에서는, 플러그-인이 작성되어, 가상 장치들을 가상 컴퓨팅 장치가 이용할 수 있게 하는 방법이 시작될 때까지 외부 장치 디렉토리(128)에 저장된다.
도 5는 가상 장치들을 가상 컴퓨팅 장치들이 이용할 수 있게 하는 방법(130)을 나타낸다. 방법(130)은 VM A(108)와 관련된 예에서 설명되지만, 이 방법은 호스트 OS(104) 상에서 실행되는 다른 가상 기계들에도 적용된다는 것을 당업자는 이해할 것이다. 단계 132에서, 호스트 OS(104)는 외부 장치 플러그-인을 찾기 위해 외부 장치 디렉토리(128)를 스캐닝한다. 단계 134에서, 호스트 OS(104)는 각각의 외부 장치와 관련된 특성을 취득한다. 일례에서, 호스트 OS(104)는 각각의 외부 장치에 대한 DLL을 호출하며, DLL은 각각의 장치에 대한 적절한 특성을 호스트 OS(104)로 리턴한다.
단계 136에서, 각 장치에 대한 특성이 사용자에게 제공된다. 일례에서, 그래픽 사용자 인터페이스(GUI)는 장치들 및 관련 특성들 각각을 사용자에게 제공한다. 단계 138에서, 사용자는 원하는 장치들 및 각 장치에 대한 특성들(예를 들어, 메모리 크기, 비트 레이트 및 표시 해상도 등)을 선택한다. 단계 140에서, 사용자는 원하는 장치들 및 그들에 대응하는 장치 특성들을 저장하며, 호스트 OS(104)는 원하는 장치들을 목록(122)에 추가한다. 단계 140의 완료시에, 방법(130)은 종료하며, 새로운 장치들이 구성되어 목록(122) 내의 장치 리스트 A(124)에 추가되었으며, 필요에 따라 VM A(108)에 의해 사용될 준비가 되게 된다.
도 6은 가상 장치들이 동적으로 추가되는 가상화된 컴퓨팅 환경(도 4를 참조하여 설명됨)을 조작하는 방법(150)을 나타낸다. 방법(150)은 호스트 운영 체제 및 모든 가상 장치들이 도 4를 참조하여 설명된 바와 같이 가상화된 컴퓨팅 시스템에서 동작할 때 네비게이트하는 "상태들"의 진행을 설명한다.
단계 152에서, 컴퓨터(20; 도 1)가 턴 온되고, 호스트 OS(104)가 초기화되고 자원들(예를 들어 메모리)을 할당한다. 단계 154에서, 호스트 OS(104)는 파워 업되고, 가상 장치들은 그들 자신을 마더보드에 가상적으로 기입하여, 호스트 OS(104)와 통신하도록 구성된다. 이러한 "가상 기입"에는, 호스트 OS(104)가 새로운 장치를 구성하고 이들을 목록(122) 내의 장치 리스트 A(124) 및 B(126)에 추가하여 필요에 따라 VM A(108) 및 VM B(110)에 의해 사용될 준비가 되도록 하는 방법(130)을 실행하는 것이 포함된다. 가상 PCI 카드를 이용하는 일례에서, 가상 PCI 카드는 가상 PCI 버스와 통신하여, 예를 들어 가상 PCI 카드가 어느 슬롯에 존재하는지를 가상 PCI 버스에 통지한다. 또한, I/O 포트 범위들이 단계 154에서 정의된다. 다른 예에서는, 이 단계에서 인터럽트 제어기(도시되지 않음)가 파워 업되므로, 인터럽트 제어기는 정상 동작을 위해 I/O 제어기(도시되지 않음)와 통신한다.
판정 단계 156에서, 이전에 저장된 상태가 복원되고 있는지에 대한 판정이 호스트 OS(104)에 의해 이루어진다. 호스트 0S(104)가 저장 상태를 복원하고 있는 경우, 방법(150)은 단계 158로 진행하며, 호스트 OS(104)가 복원하고 있지 않는 경우, 모든 장치는 디폴트 상태 값으로 설정되고, 방법(150)은 단계 160으로 진행한다.
단계 158에서, 호스트 OS(104)는 스냅샷 파일이 저장된 때 생성된 장치 리스트는 물론 가상 프로세서 및 가상 장치들에 대한 상태 데이터를 포함하는 저장된 스냅샷 파일에 액세스하여 이를 로딩한다. 스냅샷 파일의 로딩은 가상 기계 프로세서 및 장치들이 가상 기계의 상태가 최종 저장된 정확한 시점에 그들 자신을 "리애니메이트"하는 것을 허용한다. 일례에서, 스냅샷 파일(도시되지 않음)은 목록(122) 내의 장치 리스트 A(124)에 저장된 VM A(108) 및 그의 장치들 및 그들의 대응 구성을 리애니메이트하기 위해 로딩된다.
단계 160에서, 초기화가 완료되고, 호스트 OS(104)는 정상 동작 모드(즉, 파워 업 상태)에 들어간다. 정상 동작 모드에서, 호스트 OS(104)는 VM A(108) 및 VM B(110)로부터의 요구를 처리한다. 일례에서, VM A(108)는 장치 리스트 A(124) 및 호스트 OS(104)에 저장된 바와 같이 가상 장치들을 사용하고, 이들 가상 장치로부 터의 통신을 번역하며, 필요에 따라 컴퓨터 하드웨어(102) 내의 하드웨어 장치들을 사용한다.
판정 단계 162에서, 호스트 OS(104)는 파워 다운 요구가 수신되었는지를 판정한다. 파워 다운 요구가 수신된 경우, 방법(150)은 단계 164로 진행되며, 수신되지 않은 경우, 방법(150)은 단계 160으로 리턴하여 정상 동작 모드로 계속한다.
판정 단계 164에서, 파워 다운을 준비하기 위해, 호스트 OS(104)는 장래의 복원을 위해 가상 기계 및 가상 장치들의 상태를 저장하기 위한 요구가 있었는지를 판정한다. 장래의 복원을 위해 가상 기계의 상태를 저장하기 위한 요구가 있었던 경우에는, 방법(150)은 단계 166으로 진행하며, 그렇지 않은 경우에는 방법(150)은 단계 168로 진행한다.
단계 166에서, 호스트 OS(104)는 장래의 복원을 위해 가상 프로세서 및 모든 가상 장치들의 상태를 저장한다. 판정 단계 168에서, 호스트 OS(104)는 파워 다운 요구가 "재시동 요구"인지를 판정한다. 요구가 재시동 요구인 경우, 방법(150)은 단계 154로 리턴한다. 그렇지 않은 경우, 방법(150)은 단계 170으로 진행한다.
단계 170에서, 호스트 OS(104)는 자원들을 할당 해제하며, 가상 장치들을 삭제한다. 단계 170은 단계 154의 역이며, 따라서 단계 154에서 수행된 작업을 역으로 진행한다. 단계 170은 단계 172로 진행한다.
단계 172에서, 호스트 OS(104)는 역초기화(de-initialize)되고, 컴퓨터(20)의 턴 오프 준비를 한다. 단계 172는 단계 152의 역이며, 따라서 단계 152에서 수행된 작업을 역으로 진행한다. 단계 172의 완료시, 컴퓨터(20)는 턴 오프되고 방 법(150)은 종료된다.
도 7은 가상 컴퓨팅 환경에서 물리적 하드웨어 장치를 설계하고 테스트하는 방법(180)을 나타낸다. 방법(180)은 보다 완전한 장치 테스트를 가능하게 하는 가상화된 환경에서 장치들을 완전히 테스트함으로써 임의의 장치들(프로토타입 포함)이 물리적으로 제조되기 전에 가상 장치 테스트를 허용함으로써 물리 하드웨어 장치들의 설계에 있어서 적시성(timeliness)을 합리화하고 개선한다.
단계 182에서, 물리적 하드웨어 장치는 소프트웨어 툴(tool)을 이용하여 설계된 후, 가상 하드웨어 장치(VHD)로서 구현된다(이 장치는 도 4의 외부 장치 디렉토리(128)에 추가된다). 단계 184에서, 장치를 테스트할 특수 소프트웨어 테스트 장치 드라이버(TDD)가 개발된다. 단계 186에서, VHD는 VMM에 의해 목록(122)에 추가되며, 도 5의 방법(130)에서 설명된 바와 같이 VM A(108) 및 VM B(110)가 이용할 수 있도록 되며, TDD는 게스트 OS A(112)에 추가된다. 단계 188에서, VHD는 TDD에 의해 가상 기계 환경에서 테스트된다. 이러한 방식으로, 장치 설계는 가상 환경에서 TDD를 통해 구현된 통상의 하드웨어 테스트 루틴들에 의해 테스트된다.
판정 단계 190에서, VHD의 성능이 단계 188에서의 테스트를 통과했는지에 대한 판정이 이루어지며, 통과하지 못한 경우 방법(180)은 단계 182로 리턴되어, 장치 설계에 대한 수정이 이루어지고, 프로세스가 반복된다. 그러나, 단계 190에서 테스트를 통과한 경우에는, 방법(180)은 옵션 단계 192로 진행하여, 프로토타입이 개발되고 테스트될 수 있으며(성공적인 VHD 테스트로 인해 간략화된 프로세스일 것임), 단계 194에서 새로운 하드웨어 장치 사양이 확정되어 제조 설비로 전송되고, 방법(180)이 종료된다.
도 8은 가상 컴퓨팅 환경에서 가상 하드웨어 장치를 이용하여 물리적 하드웨어 장치에 대한 장치 드라이버를 설계하고 테스트하는 방법(280)을 나타낸다. 방법(280)은 장치 드라이버가 처리할 것으로 예측되는 모든 에러를 복제할 수 있는 특수 물리 하드웨어 장치를 설계하는 데에 필요한 노력 없이 가상 장치 드라이버 테스트를 허용하여 보다 완전한 장치 드라이버 테스트를 가능하게 함으로써 장치 드라이버들의 설계에 있어서 적시성을 합리화하고 개선한다.
단계 282에서, 소프트웨어 툴을 이용하여 장치 드라이버(DD)가 개발된 후, 가상 기계(예를 들어, VM A(108)) 상의 가상 장치로서 구현된다. 단계 284에서, 장치 드라이버를 테스트하기 위한 특수 가상 테스트 하드웨어 장치(VTHD)가 개발된다. 단계 286에서, VTHD는 VMM에 의해 목록(122)에 추가되며, 도 5의 방법(130)에서 설명된 바와 같이 VM A(108) 및 VM B(110)가 사용할 수 있게 만들어지며, DD는 게스트 OS A(112)에 추가된다. 단계 288에서, DD는 VTHD에 의해 생성된 에러들에 기초하여 가상 기계 환경에서 테스트된다. 이러한 방식으로, DD의 설계는 가상 환경에서 VTHD를 통해 구현된 통상의 장치 드라이버 테스트 루틴에 의해 테스트된다. 이러한 테스트는 드라이버 소프트웨어의 경로들을 테스트하기 위해 의도적인 에러들의 장치 설계로의 도입을 포함할 수 있다. 또한, 드라이버 소프트웨어는 다양한 다른 게스트 OS 상에 드라이버를 설치함으로써 가상 컴퓨팅 환경에서 다양한 운영 체제에서 신속하게 테스트될 수 있다.
판정 단계 290에서, DD의 성능이 단계 288에서의 테스트를 통과했는지에 대 한 판정이 이루어지며, 통과하지 못한 경우 방법(280)은 단계 282로 리턴하여, DD 설계에 대한 수정이 이루어지고, 프로세스가 반복된다. 그러나, 단계 290에서 테스트를 통과한 경우, 방법(280)은 옵션 단계 292로 진행하여, 특수 물리 하드웨어 장치가 개발되고 테스트될 수 있으며(성공적인 VHD 테스트로 인해 쉽게 수정된 하드웨어 장치 상에서의 간략화된 프로세스일 수 있음), 단계 294에서 새로운 장치 드라이버가 완성되어 분배되며, 방법(280)이 종료된다.
결론
본 명세서에 설명된 다양한 시스템, 방법 및 기술은 하드웨어 또는 소프트웨어, 또는 적절하다면 이들의 조합에 의해 구현될 수 있다. 따라서, 본 발명의 방법 및 장치, 또는 소정의 양태들 또는 그 일부들은 플로피 디스켓, CD-ROM, 하드 드라이브, 또는 임의의 다른 기계 판독 가능 저장 매체와 같은 유형 매체에 구현된 프로그램 코드(즉, 명령들)의 형태를 가질 수 있으며, 프로그램 코드가 컴퓨터와 같은 기계 안에 로딩되어 기계에 의해 실행될 때, 기계는 본 발명을 실시하기 위한 장치가 된다. 프로그래머블 컴퓨터 상에서 프로그램 코드를 실행하는 경우, 컴퓨터는 일반적으로 프로세서, 프로세서에 의해 판독 가능한 저장 매체(휘발성 및 불휘발성 메모리 및/또는 저장 소자 포함), 적어도 하나의 입력 장치 및 적어도 하나의 출력 장치를 포함한다. 하나 이상의 프로그램은 컴퓨터 시스템과 통신할 수 있도록 하이 레벨 절차 또는 객체 지향 프로그래밍 언어로 구현되는 것이 바람직하다. 그러나, 프로그램은 원할 경우 어셈블리 또는 기계 언어로 구현될 수 있다. 어느 경우든, 언어는 컴파일되거나 인터프리트된 언어일 수 있으며 하드웨어 구현들과 조합될 수 있다.
본 발명의 방법 및 장치는 광섬유 또는 임의의 다른 전송 형태를 통해 소정의 전송 매체 상에서, 예를 들어 전기 유선 또는 케이블 상에서 전송되는 프로그램 코드의 형태로 구현될 수도 있으며, 프로그램 코드가 EPROM, 게이트 어레이, 프로그래머블 논리 장치(PLD), 클라이언트 컴퓨터, 비디오 레코더 등과 같은 기계에 의해 수신되고 로딩되어 실행될 때, 이 기계는 본 발명의 실시하기 위한 장치가 된다. 범용 프로세서 상에서 구현될 때, 프로그램 코드는 프로세서와 결합하여, 본 발명의 인덱싱 기능을 수행하도록 동작하는 독특한 장치를 제공한다.
본 발명은 다양한 도면의 바람직한 실시예와 관련하여 설명되었지만, 다른 유사한 실시예들이 이용될 수 있으며, 본 발명으로부터 벗어나지 않고 본 발명의 동일 기능을 수행하기 위해 설명된 실시예에 대한 수정 및 추가가 이루어질 수 있다는 것을 이해해야 한다. 예를 들어, 본 발명의 예시적인 실시예들은 개인용 컴퓨터의 기능을 에뮬레이트하는 디지털 장치와 관련하여 설명되었지만, 본 발명은 이러한 디지털 장치들로 제한되는 것이 아니며, 본 명세서에 설명된 바와 같이, 유무선에 관계 없이 게이밍 콘솔, 핸드헬드 컴퓨터, 포터블 컴퓨터 등과 같은 임의의 수의 기존 또는 최신의 컴퓨팅 장치 또는 환경에 적용될 수 있고, 통신 네트워크를 통해 접속되거나 네트워크를 통해 상호작용하는 임의 수의 컴퓨팅 장치들에 적용될 수 있다는 것을 당업자는 이해할 것이다. 또한, 특히 무선 네트워킹된 장치들의 수가 계속 증가함에 따라 핸드헬드 장치 운영 체제 및 다른 애플리케이션 특정 하 드웨어/소프트웨어 인터페이스 시스템을 포함하는 다양한 컴퓨터 플랫폼이 본 명세서에서 고려되어 있음이 강조되어야 한다. 따라서, 본 발명은 어느 단일 실시예에 한정되는 것이 아니라 첨부된 청구범위에 따라 폭 및 범위가 해석되어야 한다.
마지막으로, 본 명세서에 개시된 실시예들은 다른 프로세서 아키텍처, 컴퓨터 기반 시스템 또는 시스템 가상화에 사용하기 적합할 것이며, 이러한 실시예들은 본 명세서에서 이루어진 개시에 의해 명백히 예상되는 것이며, 따라서 본 발명은 본 명세서에 설명된 특정 실시예로 한정되는 대신 가장 넓게 해석되어야 한다. 마찬가지로, 프로세서 가상화가 아닌 다른 목적으로 합성 명령들을 사용하는 것도 본 명세서에서 이루어진 개시에 의해 예상되는 것이며, 프로세서 가상화가 아닌 다른 관계에서 이러한 합성 명령을 사용하는 것은 본 명세서에서 이루어진 개시 안에서 가장 넓게 해석되어야 한다.
본 발명에 따르면, 가상 컴퓨팅 환경에 가상 장치들을 동적으로 추가할 수 있는 효과가 얻어진다.

Claims (40)

  1. 가상 컴퓨팅 환경에서 가상 하드웨어 장치들을 동적으로 추가하는 방법으로서,
    상기 가상 컴퓨팅 환경이 외부 서비스 디렉토리를 스캐닝하는 단계;
    상기 가상 컴퓨팅 환경이 새로운 가상 하드웨어 장치에 대한 한 세트의 장치 특성을 취득하는 단계;
    상기 가상 컴퓨팅 환경이 상기 한 세트의 장치 특성을 상기 가상 컴퓨팅 환경에서 동작하는 가상 기계에 제공하는 단계; 및
    상기 가상 기계가 상기 새로운 가상 하드웨어 장치를 이용하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 가상 컴퓨팅 환경은 외부 장치 디렉토리로부터 상기 한 세트의 장치 특성을 취득하는 방법.
  3. 제2항에 있어서,
    상기 가상 컴퓨팅 환경은 상기 한 세트의 장치 특성을 상기 가상 기계에 대응하는 상기 가상 컴퓨팅 환경의 장치 리스트에 추가함으로써 상기 한 세트의 장치 특성을 상기 가상 기계에 제공하는 방법.
  4. 물리 하드웨어 장치(PHD)에 대한 설계를 테스트하는 방법으로서,
    상기 PHD에 대한 상기 설계에 기초하여 가상 하드웨어 장치(VHD)를 구현하는 단계;
    상기 VHD를 테스트하기 위한 테스트 장치 드라이버(TDD)를 개발하는 단계;
    상기 VHD 및 상기 TDD를 가상 컴퓨팅 환경(VCE)에 추가하는 단계; 및
    상기 VCE에서 상기 TDD를 이용하여 상기 VHD를 테스트하는 단계
    를 포함하는 방법.
  5. 제4항에 있어서,
    상기 TDD로 상기 VCE에서 테스트되는 상기 VHD에 대응하는 상기 PHD의 프로토타입을 생성하는 단계; 및
    상기 TDD를 이용하여 상기 PHD의 프로토타입을 테스트하는 단계
    를 더 포함하는 방법.
  6. 제4항에 있어서,
    상기 가상 컴퓨팅 환경은 상기 VHD를 동적으로 추가하는 방법.
  7. 제6항에 있어서,
    상기 가상 컴퓨팅 환경이 상기 VHD를 동적으로 추가하게 하는 요소들은,
    상기 가상 컴퓨팅 환경이 외부 서비스 디렉토리를 스캐닝하는 단계;
    상기 가상 컴퓨팅 환경이 새로운 가상 하드웨어 장치에 대한 한 세트의 장치 특성을 취득하는 단계;
    상기 가상 컴퓨팅 환경이 상기 한 세트의 장치 특성을 상기 가상 컴퓨팅 환경에서 동작하는 가상 기계에 제공하는 단계; 및
    상기 가상 기계가 상기 새로운 가상 하드웨어 장치를 이용하는 단계
    를 포함하는 방법.
  8. 장치 드라이버(DD)에 대한 설계를 테스트하는 방법으로서,
    상기 DD를 테스트하기 위한 가상 테스트 하드웨어 장치(VTHD)를 개발하는 단계;
    상기 VTHD 및 상기 DD를 가상 컴퓨팅 환경(VCE)에 추가하는 단계; 및
    상기 VCE에서 상기 VTHD를 이용하여 상기 DD를 테스트하는 단계
    를 포함하는 방법.
  9. 제8항에 있어서,
    상기 DD가 상기 VCE에서 테스트된 상기 VTHD의 프로토타입 하드웨어 장치를 생성하는 단계; 및
    상기 프로토타입 하드웨어 장치 상에서 상기 DD를 테스트하는 단계
    를 더 포함하는 방법.
  10. 제8항에 있어서,
    상기 가상 컴퓨팅 환경은 상기 VHD를 동적으로 추가하는 방법.
  11. 제10항에 있어서,
    상기 가상 컴퓨팅 환경이 상기 VHD를 동적으로 추가하게 하는 요소들은,
    상기 가상 컴퓨팅 환경이 외부 서비스 디렉토리를 스캐닝하는 단계;
    상기 가상 컴퓨팅 환경이 새로운 가상 하드웨어 장치에 대한 한 세트의 장치 특성을 취득하는 단계;
    상기 가상 컴퓨팅 환경이 상기 한 세트의 장치 특성을 상기 가상 컴퓨팅 환경에서 동작하는 가상 기계에 제공하는 단계; 및
    상기 가상 기계가 상기 새로운 가상 하드웨어 장치를 이용하는 단계
    를 포함하는 방법.
  12. 가상 컴퓨팅 환경에서 가상 하드웨어 장치들을 동적으로 추가하는 시스템으로서,
    외부 서비스 디렉토리를 스캐닝하는 상기 가상 컴퓨팅 환경의 서브시스템;
    새로운 가상 하드웨어 장치에 대한 한 세트의 장치 특성을 취득하는 상기 가상 컴퓨팅 환경의 서브시스템;
    상기 한 세트의 장치 특성을 상기 가상 컴퓨팅 환경에서 동작하는 가상 기계 에 제공하는 상기 가상 컴퓨팅 환경의 서브시스템; 및
    상기 새로운 가상 하드웨어 장치를 이용하는 상기 가상 기계의 서브시스템
    을 포함하는 시스템.
  13. 제12항에 있어서,
    새로운 가상 하드웨어 장치에 대한 한 세트의 장치 특성을 취득하는 상기 가상 컴퓨팅 환경의 서브시스템은 외부 장치 디렉토리로부터 상기 한 세트의 장치 특성을 취득하는 시스템.
  14. 제13항에 있어서,
    상기 한 세트의 장치 특성을 상기 가상 컴퓨팅 환경에서 동작하는 가상 기계에 제공하는 상기 가상 컴퓨팅 환경의 서브시스템은 상기 한 세트의 장치 특성을 상기 가상 기계에 대응하는 상기 가상 컴퓨팅 환경의 장치 리스트에 추가함으로써 상기 한 세트의 장치 특성을 상기 가상 기계에 제공하는 시스템.
  15. 물리 하드웨어 장치(PHD)에 대한 설계를 테스트하는 시스템으로서,
    상기 PHD에 대한 설계에 기초하여 가상 하드웨어 장치(VHD)를 구현하는 서브시스템;
    상기 VHD를 테스트하기 위한 테스트 장치 드라이버(TDD)를 개발하는 서브시스템;
    상기 VHD 및 상기 TDD를 가상 컴퓨팅 환경(VCE)에 추가하는 서브시스템; 및
    상기 VCE에서 상기 TDD를 이용하여 상기 VHD를 테스트하는 서브시스템
    을 포함하는 시스템.
  16. 제15항에 있어서,
    상기 TDD로 상기 VCE에서 테스트되는 상기 VHD에 대응하는 상기 PHD의 프로토타입을 생성하는 서브시스템; 및
    상기 TDD를 이용하여 상기 PHD의 프로토타입을 테스트하는 서브시스템
    을 더 포함하는 시스템.
  17. 제15항에 있어서,
    상기 가상 컴퓨팅 환경은 상기 VHD를 동적으로 추가하는 서브시스템을 더 포함하는 시스템.
  18. 제17항에 있어서,
    상기 VHD를 동적으로 추가하는 서브시스템은,
    외부 서비스 디렉토리를 스캐닝하는 상기 가상 컴퓨팅 환경의 서브시스템;
    새로운 가상 하드웨어 장치에 대한 한 세트의 장치 특성을 취득하는 상기 가상 컴퓨팅 환경의 서브시스템;
    상기 한 세트의 장치 특성을 상기 가상 컴퓨팅 환경에서 동작하는 가상 기계 에 제공하는 상기 가상 컴퓨팅 환경의 서브시스템; 및
    상기 새로운 가상 하드웨어 장치를 이용하는 상기 가상 기계의 서브시스템
    을 포함하는 시스템.
  19. 장치 드라이버(DD)에 대한 설계를 테스트하는 시스템으로서,
    상기 DD를 테스트하기 위한 가상 테스트 하드웨어 장치(VTHD)를 개발하는 서브시스템;
    상기 VTHD 및 상기 DD를 가상 컴퓨팅 환경(VCE)에 추가하는 서브시스템; 및
    상기 VCE에서 상기 VTHD를 이용하여 상기 DD를 테스트하는 서브시스템
    을 포함하는 시스템.
  20. 제19항에 있어서,
    상기 DD가 상기 VCE에서 테스트된 상기 VTHD의 프로토타입 하드웨어 장치를 생성하는 서브시스템; 및
    상기 프로토타입 하드웨어 장치 상에서 상기 DD를 테스트하는 서브시스템
    을 더 포함하는 시스템.
  21. 제19항에 있어서,
    상기 가상 컴퓨팅 환경은 상기 VHD를 동적으로 추가하는 서브시스템을 더 포함하는 시스템.
  22. 제21항에 있어서,
    상기 VHD를 동적으로 추가하는 서브시스템은,
    외부 서비스 디렉토리를 스캐닝하는 상기 가상 컴퓨팅 환경의 서브시스템;
    새로운 가상 하드웨어 장치에 대한 한 세트의 장치 특성을 취득하는 상기 가상 컴퓨팅 환경의 서브시스템;
    상기 한 세트의 장치 특성을 상기 가상 컴퓨팅 환경에서 동작하는 가상 기계에 제공하는 상기 가상 컴퓨팅 환경의 서브시스템; 및
    상기 새로운 가상 하드웨어 장치를 이용하는 상기 가상 기계의 서브시스템
    을 포함하는 시스템.
  23. 가상 컴퓨팅 환경에서 가상 하드웨어 장치들을 동적으로 추가하는 컴퓨터 판독 가능 명령들을 포함하는 컴퓨터 판독 가능 매체로서,
    상기 컴퓨터 판독 가능 명령들은
    상기 가상 컴퓨팅 환경이 외부 서비스 디렉토리를 스캐닝하게 하는 명령;
    상기 가상 컴퓨팅 환경이 새로운 가상 하드웨어 장치에 대한 한 세트의 장치 특성을 취득하게 하는 명령;
    상기 가상 컴퓨팅 환경이 상기 한 세트의 장치 특성을 상기 가상 컴퓨팅 환경에서 동작하는 가상 기계에 제공하게 하는 명령; 및
    상기 가상 기계가 상기 새로운 가상 하드웨어 장치를 이용하게 하는 명령
    을 포함하는 컴퓨터 판독 가능 매체.
  24. 제23항에 있어서,
    상기 가상 컴퓨팅 환경이 외부 장치 디렉토리로부터 상기 한 세트의 장치 특성을 취득하게 하는 명령을 더 포함하는 컴퓨터 판독 가능 매체.
  25. 제24항에 있어서,
    상기 가상 컴퓨팅 환경이 상기 한 세트의 장치 특성을 상기 가상 기계에 대응하는 상기 가상 컴퓨팅 환경의 장치 리스트에 추가함으로써 상기 한 세트의 장치 특성을 상기 가상 기계에 제공하게 하는 명령을 더 포함하는 컴퓨터 판독 가능 매체.
  26. 물리 하드웨어 장치(PHD)에 대한 설계를 테스트하는 컴퓨터 판독 가능 명령들을 포함하는 컴퓨터 판독 가능 매체로서,
    상기 컴퓨터 판독 가능 명령들은
    상기 PHD에 대한 상기 설계에 기초하여 가상 하드웨어 장치(VHD)를 구현하는 명령;
    상기 VHD를 테스트하기 위한 테스트 장치 드라이버(TDD)를 개발하는 명령;
    상기 VHD 및 상기 TDD를 가상 컴퓨팅 환경(VCE)에 추가하는 명령; 및
    상기 VCE에서 상기 TDD를 이용하여 상기 VHD를 테스트하는 명령
    을 포함하는 컴퓨터 판독 가능 매체.
  27. 제26항에 있어서,
    상기 TDD로 상기 VCE에서 테스트되는 상기 VHD에 대응하는 상기 PHD의 프로토타입을 생성하는 명령; 및
    상기 TDD를 이용하여 상기 PHD의 프로토타입을 테스트하는 명령
    을 더 포함하는 컴퓨터 판독 가능 매체.
  28. 제26항에 있어서,
    상기 가상 컴퓨팅 환경이 상기 VHD를 동적으로 추가하게 하는 명령을 더 포함하는 컴퓨터 판독 가능 매체.
  29. 제28항에 있어서,
    상기 가상 컴퓨팅 환경이 상기 VHD를 동적으로 추가하게 하는 요소들은,
    상기 가상 컴퓨팅 환경이 외부 서비스 디렉토리를 스캐닝하게 하는 명령;
    상기 가상 컴퓨팅 환경이 새로운 가상 하드웨어 장치에 대한 한 세트의 장치 특성을 취득하게 하는 명령;
    상기 가상 컴퓨팅 환경이 상기 한 세트의 장치 특성을 상기 가상 컴퓨팅 환경에서 동작하는 가상 기계에 제공하게 하는 명령; 및
    상기 가상 기계가 상기 새로운 가상 하드웨어 장치를 이용하게 하는 명령
    을 더 포함하는 컴퓨터 판독 가능 매체.
  30. 장치 드라이버(DD)에 대한 설계를 테스트하는 컴퓨터 판독 가능 명령들을 포함하는 컴퓨터 판독 가능 매체로서,
    상기 컴퓨터 판독 가능 명령들은
    상기 DD를 테스트하기 위한 가상 테스트 하드웨어 장치(VTHD)를 개발하는 명령;
    상기 VTHD 및 상기 DD를 가상 컴퓨팅 환경(VCE)에 추가하는 명령; 및
    상기 VCE에서 상기 VTHD를 이용하여 상기 DD를 테스트하는 명령
    을 포함하는 컴퓨터 판독 가능 매체.
  31. 제30항에 있어서,
    상기 DD가 상기 VCE에서 테스트된 상기 VTHD의 프로토타입 하드웨어 장치를 생성하는 명령; 및
    상기 프로토타입 하드웨어 장치 상에서 상기 DD를 테스트하는 명령
    을 더 포함하는 컴퓨터 판독 가능 매체.
  32. 제30항에 있어서,
    상기 가상 컴퓨팅 환경이 상기 VHD를 동적으로 추가하게 하는 명령을 더 포함하는 컴퓨터 판독 가능 매체.
  33. 제32항에 있어서,
    상기 가상 컴퓨팅 환경이 상기 VHD를 동적으로 추가하게 하는 요소들은
    상기 가상 컴퓨팅 환경이 외부 서비스 디렉토리를 스캐닝하게 하는 명령;
    상기 가상 컴퓨팅 환경이 새로운 가상 하드웨어 장치에 대한 한 세트의 장치 특성을 취득하게 하는 명령;
    상기 가상 컴퓨팅 환경이 상기 한 세트의 장치 특성을 상기 가상 컴퓨팅 환경에서 동작하는 가상 기계에 제공하게 하는 명령; 및
    상기 가상 기계가 상기 새로운 가상 하드웨어 장치를 이용하게 하는 명령
    을 더 포함하는 컴퓨터 판독 가능 매체.
  34. 가상 컴퓨팅 환경에서 가상 하드웨어 장치들을 동적으로 추가하는 하드웨어 제어 장치로서,
    외부 서비스 디렉토리를 스캐닝하는 상기 가상 컴퓨팅 환경의 수단;
    새로운 가상 하드웨어 장치에 대한 한 세트의 장치 특성을 취득하는 상기 가상 컴퓨팅 환경의 수단;
    상기 한 세트의 장치 특성을 상기 가상 컴퓨팅 환경에서 동작하는 가상 기계에 제공하는 상기 가상 컴퓨팅 환경의 수단; 및
    상기 새로운 가상 하드웨어 장치를 이용하는 상기 가상 기계의 수단
    을 포함하는 하드웨어 제어 장치.
  35. 제34항에 있어서,
    상기 가상 컴퓨팅 환경이 외부 장치 디렉토리로부터 상기 한 세트의 장치 특성을 취득하게 하는 수단을 더 포함하는 하드웨어 제어 장치.
  36. 제35항에 있어서,
    상기 가상 컴퓨팅 환경이 상기 한 세트의 장치 특성을 상기 가상 기계에 대응하는 상기 가상 컴퓨팅 환경의 장치 리스트에 추가함으로써 상기 한 세트의 장치 특성을 상기 가상 기계에 제공하게 하는 수단을 더 포함하는 하드웨어 제어 장치.
  37. 물리 하드웨어 장치(PHD)에 대한 설계를 테스트하는 하드웨어 제어 장치로서,
    상기 PHD에 대한 상기 설계에 기초하여 가상 하드웨어 장치(VHD)를 구현하는 수단;
    상기 VHD를 테스트하기 위한 테스트 장치 드라이버(TDD)를 개발하는 수단;
    상기 VHD 및 TDD를 가상 컴퓨팅 환경(VCE)에 추가하는 수단; 및
    상기 VCE에서 상기 TDD를 이용하여 상기 VHD를 테스트하는 수단
    을 포함하는 하드웨어 제어 장치.
  38. 제37항에 있어서,
    상기 가상 컴퓨팅 환경이 상기 VHD를 동적으로 추가하고,
    상기 하드웨어 제어 장치는
    외부 서비스 디렉토리를 스캐닝하는 상기 가상 컴퓨팅 환경의 수단;
    새로운 가상 하드웨어 장치에 대한 한 세트의 장치 특성을 취득하는 상기 가상 컴퓨팅 환경의 수단;
    상기 한 세트의 장치 특성을 상기 가상 컴퓨팅 환경에서 동작하는 가상 기계에 제공하는 상기 가상 컴퓨팅 환경의 수단; 및
    상기 새로운 가상 하드웨어 장치를 이용하는 상기 가상 기계의 수단
    을 포함하는 하드웨어 제어 장치.
  39. 장치 드라이버(DD)에 대한 설계를 테스트하는 하드웨어 제어 장치로서,
    상기 DD를 테스트하기 위한 가상 테스트 하드웨어 장치(VTHD)를 개발하는 수단;
    상기 VTHD 및 상기 DD를 가상 컴퓨팅 환경(VCE)에 추가하는 수단; 및
    상기 VCE에서 상기 VTHD를 이용하여 상기 DD를 테스트하는 수단
    을 포함하는 하드웨어 제어 장치.
  40. 제39항에 있어서,
    상기 가상 컴퓨팅 환경은 상기 VHD를 동적으로 추가하고,
    상기 하드웨어 제어 장치는
    외부 서비스 디렉토리를 스캐닝하는 상기 가상 컴퓨팅 환경의 수단;
    새로운 가상 하드웨어 장치에 대한 한 세트의 장치 특성을 취득하는 상기 가상 컴퓨팅 환경의 수단;
    상기 한 세트의 장치 특성을 상기 가상 컴퓨팅 환경에서 동작하는 가상 기계에 제공하는 상기 가상 컴퓨팅 환경의 수단; 및
    상기 새로운 가상 하드웨어 장치를 이용하는 상기 가상 기계의 수단
    을 포함하는 하드웨어 제어 장치.
KR1020050039289A 2004-06-30 2005-05-11 가상 기계 환경에서 에뮬레이트된 장치들을 개발하기 위한시스템 및 방법 KR20060047766A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/883,620 2004-06-30
US10/883,620 US7580826B2 (en) 2004-06-30 2004-06-30 Systems and methods for development of emulated devices in a virtual machine environment

Publications (1)

Publication Number Publication Date
KR20060047766A true KR20060047766A (ko) 2006-05-18

Family

ID=35148940

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050039289A KR20060047766A (ko) 2004-06-30 2005-05-11 가상 기계 환경에서 에뮬레이트된 장치들을 개발하기 위한시스템 및 방법

Country Status (5)

Country Link
US (1) US7580826B2 (ko)
EP (1) EP1615126A3 (ko)
JP (1) JP2006018814A (ko)
KR (1) KR20060047766A (ko)
CN (2) CN101382905B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101422861B1 (ko) * 2006-06-01 2014-07-23 마이크로소프트 코포레이션 컴퓨팅 장치 및 컴퓨팅 장치 상에서 가상 머신을 구현하기 위한 컴퓨터 실행 가능 명령들을 저장한 컴퓨터 판독 가능 매체
KR101489301B1 (ko) * 2008-03-20 2015-02-06 삼성전자주식회사 가상환경 시스템 및 그의 구동방법

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7689723B1 (en) * 2004-11-08 2010-03-30 Sun Microsystems, Inc. Virtual cloned device node
US7774794B2 (en) * 2005-08-19 2010-08-10 Intel Corporation Method and system for managing bandwidth in a virtualized system
CN100399274C (zh) * 2005-09-19 2008-07-02 联想(北京)有限公司 一种虚拟机系统输入/输出设备动态分配的方法及其设备
WO2007065307A2 (en) * 2005-12-10 2007-06-14 Intel Corporation Handling a device related operation in a virtualization environment
US8249853B2 (en) * 2006-03-31 2012-08-21 Intel Corporation Exposing device features in partitioned environment
US8321377B2 (en) 2006-04-17 2012-11-27 Microsoft Corporation Creating host-level application-consistent backups of virtual machines
US7725305B2 (en) * 2006-06-08 2010-05-25 Microsoft Corporation Partial virtualization on computing device
WO2008017001A2 (en) * 2006-08-02 2008-02-07 Moka5, Inc. Sharing live appliances
US8181025B2 (en) * 2006-10-31 2012-05-15 Intel Corporation Method and apparatus for registering agents onto a virtual machine monitor
US7881919B2 (en) * 2007-04-03 2011-02-01 Microsoft Corporation USB device simulator
US7747814B2 (en) * 2007-06-26 2010-06-29 Microsoft Corporation Virtual machine state snapshots
US8612972B2 (en) 2007-06-27 2013-12-17 Microsoft Corporation Running add-on components in virtual environments
US9588511B2 (en) * 2007-08-03 2017-03-07 Hurco Companies, Inc. Virtual machine manager
US8839231B2 (en) * 2007-12-04 2014-09-16 Dell Products L.P. Method and system for software installation
US8209686B2 (en) * 2008-02-12 2012-06-26 International Business Machines Corporation Saving unsaved user process data in one or more logical partitions of a computing system
US9946493B2 (en) * 2008-04-04 2018-04-17 International Business Machines Corporation Coordinated remote and local machine configuration
US8024169B2 (en) 2008-04-23 2011-09-20 International Business Machines Corporation Storage area network management modeling simulation
US8862633B2 (en) 2008-05-30 2014-10-14 Novell, Inc. System and method for efficiently building virtual appliances in a hosted environment
US8543998B2 (en) * 2008-05-30 2013-09-24 Oracle International Corporation System and method for building virtual appliances using a repository metadata server and a dependency resolution service
US9262194B2 (en) * 2008-06-10 2016-02-16 Apple Inc. Virtual machine communications
US9170904B1 (en) * 2008-06-30 2015-10-27 Emc Corporation I/O fault injection using simulated computing environments
US20100115508A1 (en) * 2008-10-30 2010-05-06 Lenovo Plug-in architecture for hypervisor-based system
CN101430649B (zh) * 2008-11-19 2011-09-14 北京航空航天大学 基于虚拟机的虚拟计算环境系统
CN101770410B (zh) * 2009-01-07 2016-08-17 联想(北京)有限公司 基于客户操作系统的系统还原方法、虚拟机管理器及系统
US8219990B2 (en) * 2009-05-28 2012-07-10 Novell, Inc. Techniques for managing virtual machine (VM) states
US8266256B2 (en) * 2009-07-21 2012-09-11 Empire Technology Development Llc Virtualization for low-power networks
US8335854B2 (en) 2009-07-21 2012-12-18 Empire Technology Development Llc Performing services on behalf of low-power devices
US8301818B2 (en) * 2009-12-11 2012-10-30 Oracle America, Inc. Virtual hot plugging of devices and virtual devices
US8612633B2 (en) 2010-03-31 2013-12-17 Microsoft Corporation Virtual machine fast emulation assist
US20110289469A1 (en) * 2010-05-21 2011-11-24 Huang Thomas B Virtual interconnection method and apparatus
US8533531B2 (en) * 2010-06-10 2013-09-10 Microsoft Corporation Multimedia hardware emulation for application testing
DE102010053485A1 (de) * 2010-12-04 2012-06-06 Robert Bosch Gmbh Verfahren zum Betreiben einer Arbeitsmaschine und Arbeitsmaschine mit virtueller Automatisierung
EP2709016B1 (en) * 2011-05-09 2019-03-13 Hyundai Motor Company Exception handling test device and method thereof
CA2764354A1 (en) 2012-01-16 2013-07-16 Giovanni J. Morelli Host-emulator bridge system and method
CA2764362A1 (en) * 2012-01-16 2013-07-16 Giovanni J. Morelli Rdp session monitor/control system and application
CA2764283A1 (en) 2012-01-16 2013-07-16 Giovanni J. Morelli Mobile device control application for improved security and diagnostics
US9965302B2 (en) 2013-03-28 2018-05-08 Sphere 3D Inc. Systems and methods for providing an emulator
CN103697916B (zh) * 2013-12-24 2017-01-11 河北汉光重工有限责任公司 惯性测量单元虚拟仪器
CN104765637A (zh) * 2014-01-02 2015-07-08 深圳迈瑞生物医疗电子股份有限公司 一种在监护仪上安全运行桌面应用程序的系统
TWI598819B (zh) * 2015-04-30 2017-09-11 捷鼎國際股份有限公司 基於虛擬機器進行硬體裝置測試之電腦系統及方法
US10234921B2 (en) * 2016-03-04 2019-03-19 Schneider Electric USA, Inc. Systems and methods for operating a virtual power environment
CN106371962B (zh) * 2016-08-30 2019-01-01 广州广电运通金融电子股份有限公司 一种跨平台的驱动测试方法、装置及系统
US10942757B2 (en) * 2017-02-27 2021-03-09 Red Hat, Inc. Virtual machine security through guest-side emulation
US10409632B2 (en) * 2017-03-31 2019-09-10 The Boeing Company Emulation of hardware components based on interrupt design
CN107436810A (zh) * 2017-07-03 2017-12-05 北京东土科技股份有限公司 一种计算机系统资源调度方法及装置
US10705933B2 (en) 2017-07-18 2020-07-07 The Boeing Company System integration using virtualization
WO2019111400A1 (ja) 2017-12-08 2019-06-13 株式会社アキブシステムズ コンピュータの起動方法
US11347531B2 (en) * 2018-10-31 2022-05-31 The Boeing Company Generalized virtualization platform for systems using hardware abstraction software layers
EP3961389A1 (en) * 2020-08-26 2022-03-02 The Boeing Company Virtual machine for developing and testing target code for hardware designs
US11544234B2 (en) 2020-11-12 2023-01-03 International Business Machines Corporation Virtualizing specific values in a guest configuration based on the underlying host symbol repository
JP7554022B2 (ja) 2022-03-28 2024-09-19 パナソニックオートモーティブシステムズ株式会社 開発環境構築システムおよび開発環境構築方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4649479A (en) 1985-02-28 1987-03-10 International Business Machines Corp. Device driver and adapter binding technique
US5717903A (en) * 1995-05-15 1998-02-10 Compaq Computer Corporation Method and appartus for emulating a peripheral device to allow device driver development before availability of the peripheral device
US6253224B1 (en) 1998-03-24 2001-06-26 International Business Machines Corporation Method and system for providing a hardware machine function in a protected virtual machine
US6496847B1 (en) 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US6243833B1 (en) * 1998-08-26 2001-06-05 International Business Machines Corporation Apparatus and method for self generating error simulation test data from production code
DE10036387A1 (de) * 1999-08-16 2001-03-01 Advantest Corp Halbleitertestprogramm-Diagnosevorrichtung
GB0001585D0 (en) 2000-01-24 2000-03-15 Radioscape Ltd Method of designing,modelling or fabricating a communications baseband stack
US6968307B1 (en) * 2000-04-28 2005-11-22 Microsoft Corporation Creation and use of virtual device drivers on a serial bus
WO2002003220A2 (en) * 2000-07-05 2002-01-10 Ernst & Young Llp Method and apparatus for providing computer services
EP1191443A3 (en) 2000-09-22 2004-03-03 International Business Machines Corporation Method and system for testing a processor
US7565398B2 (en) * 2002-06-27 2009-07-21 International Business Machines Corporation Procedure for dynamic reconfiguration of resources of logical partitions

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101422861B1 (ko) * 2006-06-01 2014-07-23 마이크로소프트 코포레이션 컴퓨팅 장치 및 컴퓨팅 장치 상에서 가상 머신을 구현하기 위한 컴퓨터 실행 가능 명령들을 저장한 컴퓨터 판독 가능 매체
KR101489301B1 (ko) * 2008-03-20 2015-02-06 삼성전자주식회사 가상환경 시스템 및 그의 구동방법
US10007541B2 (en) 2008-03-20 2018-06-26 Samsung Electronics Co., Ltd. Method for operating a mobile virtual environment upon connection to a host computer

Also Published As

Publication number Publication date
CN100511150C (zh) 2009-07-08
CN101382905B (zh) 2012-09-05
EP1615126A3 (en) 2007-10-31
EP1615126A2 (en) 2006-01-11
US7580826B2 (en) 2009-08-25
JP2006018814A (ja) 2006-01-19
CN1716204A (zh) 2006-01-04
US20060004554A1 (en) 2006-01-05
CN101382905A (zh) 2009-03-11

Similar Documents

Publication Publication Date Title
KR20060047766A (ko) 가상 기계 환경에서 에뮬레이트된 장치들을 개발하기 위한시스템 및 방법
CN109154888B (zh) 配备协调器的超融合系统
US7555596B2 (en) Systems and methods for attaching a virtual machine virtual hard disk to a host machine
CN102207896B (zh) 虚拟机崩溃文件生成技术
RU2412468C2 (ru) Системы и способы многоуровневой обработки перехватов в виртуальной машинной среде
US7558723B2 (en) Systems and methods for bimodal device virtualization of actual and idealized hardware-based devices
EP2053509B1 (en) System for and method of migrating one or more virtual machines
Graziano A performance analysis of Xen and KVM hypervisors for hosting the Xen Worlds Project
US8830228B2 (en) Techniques for enabling remote management of servers configured with graphics processors
Von Hagen Professional xen virtualization
EP1622014A2 (en) Systems and methods for inializing multiple virtual processors within a single virtual machine
US20060005189A1 (en) Systems and methods for voluntary migration of a virtual machine between hosts with common storage connectivity
US20120054740A1 (en) Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments
KR20060046260A (ko) 가상 머신 환경에서 오퍼레이팅 시스템을 구현하기 위한시스템 및 방법
US9672047B1 (en) Systems and methods for accessing a bootable partition on a serial peripheral interface device
Deka et al. Application of virtualization technology in IaaS cloud deployment model
CN116069584B (zh) 将监控服务扩展到可信云运营商域中
Liang et al. A lean USB file system for bare machine applications
KR101412576B1 (ko) 가상 보드 플랫폼, 시스템-온-칩 시뮬레이션 장치, 시스템-온-칩 시뮬레이션 방법 및 시스템-온-칩 검증 방법
CN118331687B (zh) 用户态半虚拟化数据路径加速方法、设备、集群以及介质
CN109408193B (zh) 虚拟机实现方法、装置及计算机设备
McFadden et al. Usage of Virtualized GNU/Linux for Binary Testing Across Multiple Distributions

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