KR20080106908A - 하드웨어 장치와 같은 자원을 소유하는 가상 컴퓨터를 이동시키기 위해 이용될 수 있는 컴퓨팅 시스템 및 방법 - Google Patents

하드웨어 장치와 같은 자원을 소유하는 가상 컴퓨터를 이동시키기 위해 이용될 수 있는 컴퓨팅 시스템 및 방법 Download PDF

Info

Publication number
KR20080106908A
KR20080106908A KR1020087020464A KR20087020464A KR20080106908A KR 20080106908 A KR20080106908 A KR 20080106908A KR 1020087020464 A KR1020087020464 A KR 1020087020464A KR 20087020464 A KR20087020464 A KR 20087020464A KR 20080106908 A KR20080106908 A KR 20080106908A
Authority
KR
South Korea
Prior art keywords
resource
port
access request
computing device
stack
Prior art date
Application number
KR1020087020464A
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 KR20080106908A publication Critical patent/KR20080106908A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • 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/4557Distribution of virtual machine instances; Migration and load balancing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)
  • Exchange Systems With Centralized Control (AREA)

Abstract

컴퓨팅 장치는 제1 및 제2 가상 컴퓨터(VM), 및 제1 VM에 할당된 자원을 갖는다. 자원에 대한 각 액세스 요청은 제1 VM이 저장되거나 이동될 때까지 자원으로 전송된다. 그 후, 각 액세스 요청은 보유 큐에 전송된다. 자원이 거기로 전송된 모든 액세스 요청을 실행했을 때, 자원은 제2 VM에 재할당되고, 보유 큐에 있는 각 액세스 요청은 제2 VM으로 전송된 다음에 자원으로 전송된다. 그러므로, 자원에 대한 모든 액세스 요청은 자원이 제1 VM에서 제거되고 제2 VM으로 할당된 후라도 자원에 의해 실행되고, 제1 VM의 저장 또는 이동은 그 후에 완료될 수 있다.
자원, 자원 스택, 가상 컴퓨터(VM), 포트, 포트 조정기, 액세스 요청

Description

하드웨어 장치와 같은 자원을 소유하는 가상 컴퓨터를 이동시키기 위해 이용될 수 있는 컴퓨팅 시스템 및 방법{MIGRATING A VIRTUAL MACHINE THAT OWNS A RESOURCE SUCH AS A HARDWARE DEVICE}
본 발명은 하드웨어 장치 또는 다른 물리적 장치와 같은 자원을 소유하는 가상 컴퓨터를 제1 컴퓨터 또는 플랫폼에서 제2 컴퓨터 또는 플랫폼으로 이동시키기 위해 이용될 수 있는 방법 및 메커니즘에 관한 것이다. 특히, 본 발명은 자원에 관한 어떤 상태 정보의 손실도 없이 그러한 가상 컴퓨터의 이동을 할 수 있게 하는 방법 및 메커니즘에 관한 것이다.
알 수 있는 바와 같이, 가상 컴퓨터는 하드웨어 시스템을 에뮬레이트(emulate)하기 위해 컴퓨팅 장치 등에서 동작하는 소프트웨어 구성체 또는 그와 유사한 것이다. 통상적으로, 반드시 그렇지는 않지만, 가상 컴퓨터는 애플리케이션 또는 그와 유사한 것이고, 사용자 애플리케이션을 컴퓨팅 장치로부터 또는 그러한 컴퓨팅 장치상의 다른 애플리케이션으로부터 분리하는 동시에, 사용자 애플리케이션 등을 호스팅하기 위해 컴퓨팅 장치상에서 이용된다. 가상 컴퓨터의 상이한 변형은 예를 들어, 가상 컴퓨터용으로 기입된 임의의 사용자 애플리케이션이 임의의 상이한 컴퓨팅 장치상에서 동작될 수 있도록 다수의 상이한 컴퓨팅 장치의 각각 에 대해 기입될 수 있다. 그러므로, 각각의 상이한 컴퓨팅 장치에 대한 사용자 애플리케이션의 상이한 변형이 요구되지 않는다.
컴퓨팅 장치를 위한 새로운 아키텍처, 및 새로운 소프트웨어는 이제 단일 컴퓨팅 장치가 다수의 파티션(partition)을 인스턴스화하여 실행할 수 있게 하는데, 각각의 파티션은 하나 이상의 애플리케이션이 인스턴스화될 수 있는 운영 체제의 인스턴스를 교대로 호스팅하기 위해 가상 컴퓨터를 인스턴스화하는데 이용될 수 있다. 통상적으로, 반드시 그렇지는 않지만, 컴퓨팅 장치는 가상 컴퓨터 모니터 등이 있는 가상화 계층을 포함하는데, 이 가상 컴퓨터 모니터 등은 가상화 계층이 각 가상 컴퓨터를 감시하고 및/또는 그 밖에 각 가상 컴퓨터의 감시 측면을 관리하는 감시자 애플리케이션 또는 '하이퍼바이저(hypervisor)'로서 기능하고, 각 가상 컴퓨터와 그러한 가상 컴퓨터의 외부 세계 사이의 가능한 링크로서 기능한다.
그 중에서 특히, 컴퓨팅 장치상의 특정 가상 컴퓨터는 그 컴퓨팅 장치와 관련된 자원으로의 액세스를 필요로 할 수 있다. 알 수 있는 바와 같이, 그러한 자원은 컴퓨팅 장치와 관련될 수 있는 임의의 종류의 자원일 수 있다. 예를 들어, 자원은 일반적으로 저장 장치가 이용될 수 있는 목적에 관계없이 데이터를 저장하고 검색하기 위한 저장 장치일 수 있다. 이와 마찬가지로, 자원은 네트워크, 프린터, 스캐너, 네트워크 드라이브, 가상 드라이브, 서버 등과 같은 임의의 기타 자산일 수 있다. 따라서, 어떤 자원이 되든, 가상 컴퓨터는 실제로, 그러한 자원에 의해 제공된 서비스로의 액세스가 제공될 수 있다.
인스턴스화된 다수의 파티션이 있는 컴퓨팅 장치에서, 컴퓨팅 장치의 임의의 특정 자원은 특정 가상 컴퓨터(이후, '가상 컴퓨터' 또는 'VM')가 그러한 자원, 및 컴퓨팅 장치상의 다른 VM으로부터의 그 자원에 대한 서비스 요청을 직접 제어할 수 있도록, 특정 파티션/가상 컴퓨터에 동적으로 할당될 수 있다. 이때, 그러한 특정 VM은 특정 자원을 '소유'하는 자원 호스트 VM('VM-H')으로서의 자원 능력을 제공하는 사실상의 호스트이다. 이와 유사하게, 그러한 VM-H는 자원 클라이언트 VM('VM-C')으로서 그러한 능력을 소모하는 사실상의 클라이언트인 다른 VM에 자원 서비스를 제공한다. 그러므로, VM-C 및 VM-H는 결합하여, 특정 자원의 사용을 필요로 하는 동작을 달성한다.
컴퓨팅 장치상에서 동작하는 특정 VM-C는 통상적으로 실제 컴퓨터처럼 동작하도록 구성된다. 즉, 특정 VM-C는 특정 자원의 액세스시에 통상적으로 그러한 특정 자원이 그 특정 자원에 대한 직접 요청을 통해 액세스 가능한 것처럼 동작한다. 따라서, VM-C는 특정 자원이 스택의 끝에 있을 것이라는 기대로, 그러한 요청이 보내지는 드라이버들의 경로 또는 스택(이후, '스택')을 구성한 경우가 있을 수 있다. 그러나, 설정되어 있는 바와 같이, VM-C는 사실상 실제 컴퓨터가 아니고, 특정 자원은 사실상 스택의 끝에 있지 않다.
따라서, 자원이 스택의 끝에 있는 것처럼 가상화 계층/가상 컴퓨터 모니터에 의해 에뮬레이트되는 경우가 있을 수 있다. 실제로는, 가상화 계층이 그러한 자원을 소유하거나 그러한 자원으로의 액세스를 갖는 VM-H에게 자원에 대한 요청을 전송한다. 이와 유사하게, VM-C가 그 가상 존재를 알아차리고, 자원을 소유하거나 자원으로의 액세스를 갖는 VM-H와 VM-C를 접속하는 VM 버스 또는 기타 통신 경로가 그 끝에 있는 '진보된 스택'을 통해 특정 자원에 요청을 보내는 진보된 능력이 VM-C에 부여될 수 있는 경우가 있을 수 있는데, 여기에서 VM 버스는 가상화 계층을 바이패스한다. 또한, 이와 유사하게, 진보된 능력을 갖는 VM-C가 VM 버스로 구현된 것과 같은 VM-C와 VM-H 사이의 가상 파이프를 통해 특정 자원에 요청을 보낸다. 어떤 통신 프로토콜이 이용되든, VM-C는 VM-H를 통해 특정 자원을 액세스하고, 따라서 VM-C에 의해 특정 자원에 보내진 각 요청은 대응하는 VM-H를 통해 특정 자원에 이르는 경로를 따른다.
게다가, 특히 특정 자원을 소유하는 VM-H와 관련하여, 그러한 VM-H는 VM-H에할당되는 자원에 적절한 어댑터를 통해 자원을 직접 액세스할 수 있다는 것을 알 수 있을 것이다. 통상적으로, 반드시 그렇지는 않지만, 어댑터는 VM-H의 컴퓨팅 장치상의 하드웨어 또는 소프트웨어의 일부분인데, 그러한 하드웨어 또는 소프트웨어는 자원을 VM-H에 접속시킨다. 예를 들어, 그러한 어댑터는 네트워크 인터페이스 카드 또는 비디오 카드, 또는 소프트웨어 등가물일 수 있다. 게다가, 그러한 어댑터로의 직접 액세스로, VM-H는 비교적 높은 효율성과 성능을 갖고 자원을 이용할 수 있다. 여기에서 주의할 점은 특정 자원이 특정 VM-H에 각각 할당될 가능성이 있는 다수의 대응하는 어댑터를 가질 수 있고, 따라서 다수의 VM-H가 특정 자원을 소유할 수 있다는 것이다. 그러나, 단 하나의 VM-H만이 적어도 통상적으로, 어느 한 시기에 하나의 특정 어댑터에 할당될 수 있고, 또는 하나의 특정 어댑터를 소유할 수 있다. 하여튼, 통상적으로, 특정 어댑터의 소유권은 그 특정 어댑터의 자원의 소유권에 상당한다는 것을 추정할 수 있다.
VM의 한 가지 특징은 가상 구성체로서의 VM이 마음대로 정지되고 다시 시작될 수 있으며, 또한 정지시의 VM이 마음대로 저장되고 검색되며 다시 시작될 수 있다는 것이다. 특히, 특정 컴퓨팅 장치상에서 인스턴스화된 VM은 소프트웨어 구성체가 VM에 관한 동작 데이터 및 상태를 포함하여 그러한 VM에 관한 모든 데이터를 포함하는 한, 적절히 패키지될 수 있는 단일의 소프트웨어 구성체이다. 결과적으로, 제1 컴퓨팅 장치상의 VM은, 제1 컴퓨팅 장치에서의 VM을 정지시키고, 정지된 VM을 제2 컴퓨팅 장치로 이동시키며, 이동된 VM을 제2 컴퓨팅 장치에서 다시 시작하는 등등에 의해, 제2 컴퓨팅 장치로 이동 또는 이주될 수 있다. 더욱 일반적으로, VM은 이와 유사한 방식으로 제1 플랫폼에서 제2 플랫폼으로 이동될 수 있는데, 플랫폼은 상이한 컴퓨팅 장치, 또는 동일한 컴퓨팅 장치의 상이한 구성을 나타낸다. 후자의 경우에, 알 수 있는 바와 같이, 컴퓨팅 장치는 예를 들어, 추가 메모리가 추가되고, 프로세서가 변경되며, 추가 입력 장치가 제공되고, 선택 장치가 제거되는 등등의 경우에 상이한 구성을 가질 수 있다.
그러나, 주의할 점은 때때로 VM에 관한 상태 정보의 전부가 그러한 VM의 소프트웨어 구성체 내에 포함되는 것은 아니라는 것이다. 특히, 자원 또는 그 어댑터를 소유하는 VM-H는 그러한 자원 또는 그 어댑터에 저장된 자원에 관한 특정 상태 정보를 가질 수 있다. 단지 한 예로서, VM-H가 네트워크인 자원을 소유하고, VM-H에 의해 소유된 대응하는 어댑터가 네트워크 인터페이스 카드인 경우에, 네트워크를 위한 소정의 판독 및 기입 명령과 같은 상태 정보가 실행시까지 최소한 일시적으로 네트워크 인터페이스 카드에 저장되는 일이 있을 수 있다. 다른 예로서, 자원이 어댑터가 포함되어 있는 광 디스크 판독 드라이브인 경우에, 마찬가지로, 드라이브를 위한 소정의 판독 명령과 같은 상태 정보가 그러한 드라이브에 저장되는 일이 있을 수 있다. 또 다른 예로서, 자원이 프린터이고, 대응하는 어댑터가 인쇄 스풀러(spooler)인 경우에, 또한 마찬가지로, 프린터를 위한 소정의 기입 명령과 같은 상태 정보가 그러한 스풀러에 저장되는 일이 있을 수 있다.
하여튼, VM의 상태 정보의 일부가 VM의 소프트웨어 구성체 내에 포함되지 않을 때, 이를테면 VM-H가 자원을 소유하고, 그 자원에 상태 정보를 저장하는 경우와 같은 때, 제1 플랫폼에서 제2 플랫폼으로의 VM의 이동은 더욱 어려워진다는 것을 이해할 것이다. 특히, 그러한 이동은 자원에서의 상태 정보가 손실되지 않거나 그 밖에 VM과 영구적으로 분리되지 않도록 처리될 때까지는 발생하지 않아야 한다.
그러므로, VM-H가 제1 플랫폼에서 제2 플랫폼으로 이동될 때 VM-H에 의해 소유된 자원에 있는 VM-H의 상태 정보를 처리할 필요가 있다. 특히, 자원에 있는 상태 정보가 이동 전에 일반적인 동작으로 자원에서 삭제될 수 있거나, 그렇지 않으면 이동 후에 VM-H에 의한 나중의 검색을 위해 저장될 수 있거나, 그렇지 않으면 다른 VM-H에 의해 처리될 수 있는 방법 및 메커니즘이 필요하다.
상기 설명된 요구는 본 발명에 의해 최소한 부분적으로 충족되는데, 본 발명에서 컴퓨팅 시스템은 자원 서비스를 제공하는 자원, 및 제1 및 제2 가상 컴퓨터(VM)가 인스턴스화되어 있는 컴퓨팅 장치를 갖는다. 각 VM은 하나 이상의 애플리케이션이 인스턴스화될 수 있는 운영 체제의 인스턴스를 호스팅한다. 제1 VM이 처음에 자원 및 그 자원에 의해 제공된 서비스를 소유하도록, 제1 VM은 처음에 자원에 통신으로 연결되고, 자원은 처음에 제1 VM에 할당된다. 제1 VM은, 저장될 수 있고 제1 플랫폼에서 제2 플랫폼으로 이동될 수 있는 컴퓨팅 장치상의 소프트웨어 구성체이다.
제1 VM은 자원에 대응하고 자원 스택을 통해 보내진 액세스 요청에 따라 자원을 액세스하는 자원 스택, 자원에 통신으로 연결된 제1 포트, 통신 매체에 통신으로 연결된 제2 포트, 및 자원 스택, 제1 포트 및 제2 포트에 통신으로 연결된 포트 조정기(port redirector)를 포함한다. 포트 조정기는 자원 스택으로부터의 각 액세스 요청을 제1 포트 및 제2 포트 중의 한 포트에서 대기하도록 전송한다.
특히, 포트 조정기는 제1 VM이 저장되거나 이동되도록 지시받을 때까지 제1 포트에서 대기하도록 자원 스택으로부터의 각 액세스 요청을 전송한다. 제1 포트에서의 각 액세스 요청은 자원에 의해 실행되도록 순서대로 그러한 자원으로 더욱 전송된다. 제1 VM이 저장되거나 이동되도록 지시받을 때 및 그 이후에, 포트 조정기는 자원 스택으로부터의 각 액세스 요청을 제2 포트로 전송한다. 제2 포트에서의 각 액세스 요청은 자원이 제1 포트에서 대기중인 모든 액세스 요청을 실행한 다음에 제1 VM에 의해 소유되지 않게 된 후에만 순서대로 더욱 전송된다.
제2 VM이 그 후에 자원 및 자원에 의해 제공된 서비스를 소유하도록, 제2 VM은 그 후에 자원에 통신으로 연결되고, 자원은 그 후에 제1 VM에서 제거된 다음에 제2 VM에 할당된다. 자원의 소유자로서의 제2 VM은 통신 매체를 통해 제1 VM의 제2 포트에 통신으로 연결되고, 제2 포트에서의 각 액세스 요청은 통신 매체를 통해 제2 VM에 순서대로 더욱 전송된 다음에, 자원에 의해 실행되도록 제2 VM을 통해 그러한 자원으로 순서대로 더욱 전송된다. 따라서, 제1 VM의 자원 스택으로부터의 모든 액세스 요청은 자원이 제1 VM에서 제거되고 제2 VM에 할당된 후라도 자원에 의해 실행되고, 그 후에 저장 또는 이동이 완료될 수 있다.
본 발명의 실시예의 다음의 상세한 설명뿐만 아니라 상기 요약은 첨부 도면과 관련하여 읽어볼 때 더욱 잘 이해될 것이다. 본 발명을 예시적으로 나타내기 위해, 현재 양호한 실시예가 도면에 도시되어 있다. 그러나, 이해할 수 있는 바와 같이, 본 발명은 도시된 그대로의 배열 및 수단에 제한되는 것은 아니다.
도 1은 본 발명이 구현될 수 있는 예시적인 비제한 컴퓨팅 환경을 나타낸 블록도.
도 2는 본 발명이 구현될 수 있는 각종 컴퓨팅 장치를 갖는 예시적인 네트워크 환경을 나타낸 블록도.
도 3은 본 발명의 실시예에 따라, 특정 자원을 소유하고 자원 서비스를 제공하는 가상 컴퓨터를 갖는 호스트 파티션(VM-H), 및 VM-H의 자원 서비스를 이용하는 가상 컴퓨터를 갖는 클라이언트 파티션(VM-C)을 포함하는 다수의 파티션을 실행하는 컴퓨팅 장치를 도시한 블록도.
도 4는 도 3의 VM-H를 그러한 VM-H에 의해 소유된 자원에 연결된 추가 세부사항에 걸쳐 도시한 블록도.
도 5는 본 발명의 한 실시예에 따라, 도 3의 VM-H를 그러한 VM-H에 의해 소 유된 자원에 연결된 추가 세부 사항에 걸쳐 도시한 블록도.
도 6은 본 발명의 한 실시예에 따라, 자원에 대한 모든 액세스 요청이 적절하게 처리되는 것을 보장하면서 VM-H의 저장 또는 이동을 실행하기 위해 도 5의 VM-H와 관련하여 실행된 중요한 단계들을 도시한 흐름도.
컴퓨터 환경
도 1 및 다음 설명은 본 발명이 구현될 수 있는 적합한 컴퓨팅 환경에 관한 간단한 일반적인 설명을 제공하기 위한 것이다. 그러나, 핸드헬드, 포터블, 및 모든 종류의 다른 컴퓨팅 장치가 본 발명과 관련하여 사용하기 위해 고려된다는 것을 이해할 것이다. 범용 컴퓨터가 아래에 설명되지만, 이것은 단지 한 예일 뿐이다. 그러므로, 본 발명은 또한, 아주 조금의 또는 최소한도의 클라이언트 자원이 관련되는 네트워크 호스트화 서비스의 환경에서, 예를 들어, 클라이언트 장치가 단지 월드 와이드 웹으로의 브라우저 또는 인터페이스로서 사용되는 네트워크 환경에서 구현될 수 있다.
요구된 것은 아니지만, 본 발명은 개발자에 의한 사용을 위해 애플리케이션 프로그래밍 인터페이스(API)를 통해 구현될 수 있고, 및/또는 클라이언트 워크스테이션, 서버 또는 기타 장치와 같은 하나 이상의 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어와 일반적으로 관련하여 기술될 네트워크 브라우징 소프트웨어 내에 포함될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 개체, 컴포넌 트, 데이터 구조 등을 포함한다. 통상적으로, 프로그램 모듈의 기능은 다양한 실시예에서 원하는 대로 결합되거나 분산될 수 있다. 게다가, 본 분야에 숙련된 기술자들은 본 발명이 다른 컴퓨터 시스템 구성으로 실시될 수 있다는 것을 이해할 것이다. 본 발명과 함께 사용하기에 적합하고 잘 알려진 다른 컴퓨팅 시스템, 환경 및/또는 구성은 퍼스널 컴퓨터(PC), 현금 자동 입출금기(ATM), 서버 컴퓨터, 핸드-헬드 또는 랩탑 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 프로그램가능한 소비자 가전제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터 등이 있지만, 이에 제한되는 것은 아니다. 본 발명은 또한 통신 네트워크 또는 다른 데이터 전송 매체를 통해 연결되는 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하는 로컬 및 원격 컴퓨터 저장 매체 둘 다에 위치할 수 있다.
그러므로, 도 1은 본 발명이 구현되기에 적합한 컴퓨팅 시스템 환경(100)의 일례를 도시한 것으로, 위에서 명백해지긴 했지만, 컴퓨팅 시스템 환경(100)은 적합한 컴퓨팅 환경의 일례에 불과하며, 본 발명의 용도 또는 기능성의 범위에 관해 어떤 제한을 암시하고자 하는 것이 아니다. 컴퓨팅 환경(100)이 예시적인 운영 환경(100)에서 도시된 컴포넌트들 중의 임의의 하나 또는 그 컴포넌트들의 임의의 조합과 관련하여 어떤 종속성 또는 요구사항을 갖는 것으로 해석되어서는 안 된다.
도 1과 관련하여, 본 발명을 구현하는 예시적인 시스템은 컴퓨터(110) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트들은 처리 장치(120), 시스템 메모리(130), 및 시스템 메모리를 비롯한 각종 시스템 컴포넌트들을 처리 장치(120)에 연결하는 시스템 버스(121)를 포함하지만 이에 제한되는 것은 아니다. 시스템 버스(121)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스 및 각종 버스 아키텍처 중의 임의의 것을 이용하는 로컬 버스를 비롯한 몇몇 유형의 버스 구조 중 어느 것이라도 될 수 있다. 예로서, 이러한 아키텍처는 ISA(industry standard architecture) 버스, MCA(micro channel architecture)) 버스, EISA(Enhanced ISA) 버스, VESA(video electronics standard association) 로컬 버스, (메자닌 버스(mezzanine bus)로도 알려진) PCI(peripheral component interconnect) 버스 및 PCI 익스프레스(Express)를 포함하지만 이에 제한되는 것은 아니다.
컴퓨터(110)는 통상적으로 각종 컴퓨터 판독가능 매체를 포함한다. 컴퓨터(110)에 의해 액세스 가능한 매체는 그 어떤 것이든지 컴퓨터 판독가능 매체가 될 수 있고, 이러한 컴퓨터 판독가능 매체는 휘발성 및 비휘발성 매체, 이동식 및 비이동식 매체를 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함하지만 이에 제한되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보를 저장하는 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨터(110)에 의해 액세스되고 원하는 정보를 저장할 수 있는 임의의 기타 매체를 포함하지만 이에 제한되는 것은 아니다. 통신 매체는 통상적으로 반송파(carrier wave) 또는 기타 전송 메카니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등을 구현하고 모든 정보 전달 매체를 포함한다. "피변조 데이터 신호"라는 용어는, 신호 내에 정보를 인코딩하도록 그 신호의 특성들 중 하나 이상을 설정 또는 변경시킨 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 배선 접속(direct-wired connection)과 같은 유선 매체, 그리고 음향, RF, 적외선, 광, 임의의 파장에서 동작하는 페이즈드 어레이 안테나, 임의의 파장에서 동작하는 방향성 및 무방향성 전자기 방사기 및 수신기, 및 기타 무선 매체와 같은 무선 매체를 포함한다. 상술된 매체들의 모든 조합이 또한 컴퓨터 판독가능 매체의 영역 안에 포함되는 것으로 한다.
시스템 메모리(130)는 판독 전용 메모리(ROM)(131) 및 랜덤 액세스 메모리(RAM)(132)와 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 시동 중과 같은 때에, 컴퓨터(110) 내의 구성요소들 사이의 정보 전송을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(BIOS)(133)은 통상적으로 ROM(131)에 저장되어 있다. RAM(132)은 통상적으로 처리 장치(120)가 즉시 액세스 할 수 있고 및/또는 현재 동작시키고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 예로서, 도 1은 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)를 도시하고 있지만 이에 제한되는 것은 아니다.
컴퓨터(110)는 또한 기타 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체를 포함한다. 예로서, 도 1은 비이동식·비휘발성 자기 매체에 기록을 하거나 그로부터 판독을 하는 하드 디스크 드라이브(141), 이동식·비휘발성 자기 디스크(152)에 기록을 하거나 그로부터 판독을 하는 자기 디스크 드라이브(151), 및 CD-ROM 또는 기타 광 매체 등의 이동식·비휘발성 광 디스크(156)에 기록을 하거나 그로부터 판독을 하는 광 디스크 드라이브(155)를 포함한다. 예시적인 운영 환경에서 사용될 수 있는 기타 이동식/비이동식, 휘발성/비휘발성 컴퓨터 기억 매체로는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고상(solid state) RAM, 고상 ROM 등이 있지만 이에 제한되는 것은 아니다. 하드 디스크 드라이브(141)는 통상적으로 인터페이스(140)와 같은 비이동식 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 통상적으로 인터페이스(150)와 같은 이동식 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
위에서 설명되고 도 1에 도시된 드라이브들 및 이들과 관련된 컴퓨터 저장 매체는, 컴퓨터(110)에 대한 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터를 저장한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)를 저장하는 것으로 도시되어 있다. 여기서 주의할 점은 이 컴포넌트들이 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)와 동일하거나 그와 다를 수 있다는 것이다. 이에 관해, 운 영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)에 다른 번호가 부여되어 있다는 것은 적어도 이들이 다른 사본(copy)이라는 것을 나타내기 위한 것이다. 사용자는 키보드(162), 및 마우스, 트랙볼(trackball) 또는 터치 패드와 같은 포인팅 장치(161) 등의 입력 장치를 통해 명령 및 정보를 컴퓨터(110)에 입력할 수 있다. 다른 입력 장치(도시 생략)는 마이크, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 및 기타 입력 장치는 종종 시스템 버스(121)에 연결된 사용자 입력 인터페이스(160)를 통해 처리 장치(120)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus) 등의 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다.
모니터(191) 또는 다른 유형의 디스플레이 장치도 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 접속될 수 있다. 노스브리지(Northbridge)와 같은 그래픽스 인터페이스(182)가 또한 시스템 버스(121)에 접속될 수 있다. 노스브리지는 CPU 또는 호스트 처리 장치(120)와 통신하는 칩셋(chipset)이고, 가속 그래픽 포트(AGP) 통신의 책임을 진다. 하나 이상의 그래픽스 처리 장치(GPU)(184)는 그래픽스 인터페이스(182)와 통신할 수 있다. 이와 관련하여, GPU(184)는 일반적으로 레지스터 저장장치와 같은 온-칩 메모리 저장장치를 포함하고, GPU(184)는 비디오 메모리(186)와 통신한다. 그러나, GPU(184)는 코프로세서의 한 예일 뿐이므로, 각종 코프로세싱 장치가 컴퓨터(110) 내에 포함될 수 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치는 또한, 이번에는 비디오 메모리(186)와 통신할 수 있는 비디오 인터페이스(190)와 같은 인터페이스를 통 해 시스템 버스(121)에 접속된다. 모니터(191) 외에, 컴퓨터는 또한 스피커(197) 및 프린터(196) 등의 기타 주변 출력 장치를 포함할 수 있고, 이들은 출력 주변장치 인터페이스(195)를 통해 접속될 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 또 하나의 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 통상의 네트워크 노드일 수 있고, 도 1에는 메모리 저장 장치(181)만이 도시되어 있지만, 통상적으로 컴퓨터(110)와 관련하여 상술된 구성요소들의 대부분 또는 그 전부를 포함한다. 도 1에 도시된 논리적 연결로는 LAN(171) 및 WAN(173)이 있지만, 기타 네트워크를 포함할 수도 있다. 이러한 네트워크 환경은 사무실, 전사적 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷 및 인터넷에서 일반적인 것이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 통상적으로 인터넷과 같은 WAN(173)을 통해 통신을 설정하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메커니즘을 통해 시스템 버스(121)에 접속된다. 네트워크화된 환경에서, 컴퓨터(110) 또는 그의 일부와 관련하여 기술된 프로그램 모듈은 원격 메모리 저장 장치에 저장될 수 있다. 예로서, 도 1은 원격 애플리케이션 프로그램(185)이 메모리 장치(181)에 있는 것으로 도시하고 있 지만 이에 제한되는 것은 아니다. 도시된 네트워크 접속은 예시적인 것이며 이 컴퓨터들 사이에 통신 링크를 설정하는 기타 수단이 사용될 수 있다는 것을 이해할 것이다.
본 분야에 숙련된 기술자는 컴퓨터(110) 또는 다른 클라이언트 장치가 컴퓨터 네트워크의 일부로서 배치될 수 있다는 것을 이해할 수 있다. 이와 관련하여, 본 발명은 소정 수의 메모리 또는 저장 유닛, 및 소정 수의 저장 유닛 또는 볼륨을 통해 발생하는 소정 수의 애플리케이션 및 프로세스를 갖는 소정의 컴퓨터 시스템에 속한다. 본 발명은 원격 또는 로컬 저장장치를 갖는 네트워크 환경에 배치된 서버 컴퓨터 및 클라이언트 컴퓨터를 가진 환경에 적용할 수 있다. 본 발명은 또한 프로그래밍 언어 기능, 해석 및 실행 능력을 갖는 독립형 컴퓨팅 장치에 적용할 수 있다.
분산 컴퓨팅은 컴퓨팅 장치와 시스템 사이의 직접 교환에 의해 컴퓨터 자원 및 서비스의 공유를 용이하게 한다. 이들 자원 및 서비스는 파일을 위한 디스크 저장장치, 캐시 저장장치 및 정보의 교환을 포함한다. 분산 컴퓨팅은 네트워크 접속성을 이용하여, 클라이언트들이 전체 기업에 유리하도록 그들의 집합된 힘을 극대화할 수 있게 한다. 이와 관련하여, 각종 장치들은 신뢰성 있는 그래픽스 파이프라인(들)을 위한 본 발명의 인증 기술을 관련시키기 위해 상호작용할 수 있는 애플리케이션, 개체 또는 자원을 가질 수 있다.
도 2는 예시적인 네트워크 또는 분산 컴퓨팅 환경의 개략도를 제공한다. 분산 컴퓨팅 환경은 컴퓨팅 개체(10a, 10b 등) 및 컴퓨팅 개체 또는 장치(110a, 110b, 110c 등)를 포함한다. 이들 개체는 프로그램, 메소드, 데이터 저장부, 프로그램가능한 로직 등을 포함할 수 있다. 개체는 PDA, 텔레비전, MP3 플레이어, 텔레비전, 퍼스널 컴퓨터 등과 같은 동일하거나 상이한 장치들의 부분들을 포함할 수 있다. 각각의 개체는 통신 네트워크(14)를 통해 다른 개체와 통신할 수 있다. 이 네트워크는 도 2의 시스템에 서비스를 제공하는 기타 컴퓨팅 개체 및 컴퓨팅 장치를 그 자체에 포함할 수 있다. 본 발명의 한 실시양상에 따르면, 각각의 개체(10 또는 110)는 신뢰성 있는 그래픽스 파이프라인(들)을 위한 본 발명의 인증 기술을 요청할 수 있는 애플리케이션을 포함할 수 있다.
또한, 개체(이를테면, 110c)는 다른 컴퓨팅 장치(10 또는 110) 상에서 호스팅될 수 있다는 것을 알 수 있다. 그러므로, 도시된 물리적 환경에서는 접속된 장치를 컴퓨터로서 나타내고 있지만, 그러한 도시는 단지 예시적인 것일 뿐이고, 물리적 환경은 대안적으로, PDA, 텔레비전, MP3 플레이어 등과 같은 다양한 디지털 장치와, 인터페이스, COM 개체 등과 같은 소프트웨어 개체를 포함하는 것으로 도시되거나 설명될 수 있다.
분산 컴퓨팅 환경을 지원하는 여러 가지 시스템, 컴포넌트 및 네트워크 구성이 있다. 예를 들어, 컴퓨팅 시스템들은 유선 또는 무선 시스템에 의해, 로컬 네트워크 또는 널리 분산된 네트워크에 의해 함께 접속될 수 있다. 현재, 다수의 네트워크는 널리 분산된 컴퓨팅을 위한 기반구조를 제공하고 다수의 상이한 네트워크들을 포함하는 인터넷에 연결된다.
가정용 네트워킹 환경에는, 전력선, 데이터(무선 또는 유선), 음성(예를 들 어, 전화) 및 엔터테인먼트 매체와 같이, 각각 유일한 프로토콜을 지원할 수 있는 최소한 4 종류의 네트워크 전송 매체가 있다. 조명 스위치 및 가전제품과 같은 대부분의 가정용 제어 장치는 접속을 위해 전력선을 사용할 수 있다. 데이터 서비스는 광대역(예를 들어, DSL 또는 케이블 모뎀)으로 가정으로 들어갈 수 있고, 무선(예를 들어, HomeRF 또는 802.11b) 또는 유선(예를 들어, Home PNA, Cat 5, 심지어 전력선) 접속을 사용하여 가정 내로 액세스할 수 있다. 음성 트래픽은 유선(예를 들어, Cat3) 또는 무선(예를 들어, 셀 폰)으로 가정으로 들어갈 수 있고, Cat3 배선을 사용하여 가정 내로 분산될 수 있다. 엔터테인먼트 매체는 인공위성 또는 케이블을 통해 가정으로 들어갈 수 있고, 통상적으로 동축 케이블을 사용하여 가정 내로 분산된다. IEEE 1394 및 DVI는 또한 매체 장치의 집단을 위한 디지털 상호접속부로서 출현하고 있다. 이러한 모든 네트워크 환경, 및 프로토콜 표준으로서 출현할 수 있는 그외 다른 것들은 인터넷을 통해 외부 세계에 접속될 수 있는 인트라넷을 형성하기 위해 상호접속될 수 있다. 간단히 말하면, 여러 가지 다른 종류의 소스들은 데이터의 저장 및 전송을 위해 존재하고, 따라서, 더 나아가, 컴퓨팅 장치들은 데이터 처리 파이프라인의 모든 부분에서 콘텐트를 보호하는 방식을 필요로 할 것이다.
'인터넷'은 일반적으로, 컴퓨터 네트워킹 분야에 잘 알려진 프로토콜의 TCP/IP 슈트를 이용하는 네트워크 및 게이트웨이의 집합을 나타낸다. TCP/IP는 "Transmission Control Protocol/Internet Protocol"의 약어이다. 인터넷은 사용자들이 네트워크를 통해 상호작용하고 정보를 공유할 수 있게 하는 네트워킹 프로 토콜을 처리하는 컴퓨터에 의해 상호접속된 지리적으로 분산된 원격 컴퓨터 네트워크의 시스템으로서 설명될 수 있다. 그러한 널리 퍼진 정보 공유 때문에, 인터넷과 같은 원격 네트워크는 개발자들이 본질적으로 제한 없이 특정 동작 또는 서비스를 수행하는 소프트웨어 애플리케이션을 설계할 수 있는 오픈 시스템으로 상당히 여러모로 발전되었다.
그러므로, 네트워크 기반구조는 클라이언트/서버, 피어 투 피어 또는 하이브리드 아키텍처와 같은 네트워크 형태들의 호스트를 가능케 한다. "클라이언트"는 관련되지 않은 다른 클래스 또는 그룹의 서비스를 사용하는 한 클래스 또는 그룹의 구성원이다. 그러므로, 컴퓨팅시에, 하나의 클라이언트는 다른 프로그램에 의해 제공된 서비스를 요청하는 하나의 프로세스, 즉 대체로 한 세트의 명령어 또는 태스크이다. 클라이언트 프로세스는 다른 프로그램 또는 서비스 자체에 관한 소정의 동작 상세를 "알" 필요없이 요청한 서비스를 이용한다. 클라이언트/서버 아키텍처, 특히 네트워크 시스템에 있어서, 클라이언트는 보통, 다른 컴퓨터, 예를 들어 서버에 의해 제공된 공유된 네트워크 자원을 액세스하는 컴퓨터이다. 도 2의 예에서, 컴퓨터(110a, 110b 등)는 클라이언트로 생각될 수 있고, 컴퓨터(10a, 10b 등)는 서버로 생각될 수 있는데, 서버(10a, 10b 등)는 다음에 클라이언트 컴퓨터(110a, 110b 등) 내에 복제되는 데이터를 유지한다.
서버는 통상적으로 인터넷과 같은 원격 네트워크를 통해 액세스할 수 있는 원격 컴퓨터 시스템이다. 클라이언트 프로세스는 제1 컴퓨터 시스템에서 동작될 수 있고, 서버 프로세스는 제2 컴퓨터 시스템에서 동작될 수 있으며, 이들은 통신 매체를 통해 서로 통신하므로, 분산 기능을 제공하고, 다수의 클라이언트가 서버의 정보 수집 능력을 이용할 수 있게 한다.
클라이언트 및 서버는 프로토콜 계층에 의해 제공된 기능을 이용하여 서로 통신한다. 예를 들어, HTTP(Hyper Text Transfer Protocol)는 WWW(World Wide Web)와 관련하여 사용되는 공통 프로토콜이다. 통상적으로, URL(Universal Resource Locator) 또는 IP(Internet Protocol) 주소와 같은 컴퓨터 네트워크 주소는 서로에 대한 서버 또는 클라이언트 컴퓨터를 식별하기 위해 사용된다. 네트워크 주소는 URL 주소로 칭해질 수 있다. 예를 들어, 통신은 통신 매체를 통해 제공될 수 있다. 특히, 클라이언트 및 서버는 대용량 통신을 위한 TCP/IP 접속을 통해 서로 연결될 수 있다.
그러므로, 도 2는 본 발명이 이용될 수 있는 예시적인 네트워크 또는 분산 환경을 도시한 것으로, 서버는 네트워크/버스를 통해 클라이언트 컴퓨터와 통신한다. 더욱 상세하게, 다수의 서버(10a, 10b 등)는 본 발명에 따라, LAN, WAN, 인트라넷, 인터넷 등일 수 있는 통신 네트워크/버스(14)를 통해, 휴대용 컴퓨터, 핸드헬드 컴퓨터, 신 클라이언트, 네트워크화 가전제품, 또는 VCR, TV, 오븐, 조명, 히터 등의 기타 장치와 같은 다수의 클라이언트 또는 원격 컴퓨팅 장치(110a, 110b, 110c, 110d, 110e 등)와 상호접속된다. 그러므로, 본 발명은 임의의 컴퓨팅 장치와 관련하여 신뢰성 있는 소스로부터 안전한 콘텐트를 처리, 저장 또는 렌더링하는 것이 바람직한 임의의 컴퓨팅 장치, 및 가상 컴퓨터에 의해 생성된 고성능 그래픽을 렌더링하는 것이 바람직한 임의의 컴퓨팅 장치에 적용할 수 있다고 생각된다.
통신 네트워크/버스(14)가 인터넷인 네트워크 환경에서, 예를 들어, 서버(10)는 클라이언트(110a, 110b, 110c, 110d, 110e 등)가 HTTP와 같은 다수의 공지된 프로토콜 중의 임의의 프로토콜을 통해 통신하는 웹 서버일 수 있다. 서버(10)는 또한 분산 컴퓨팅 환경의 특성일 수 있는 바와 같이, 클라이언트(110)로서 쓰일 수도 있다. 통신은 적절한 경우에 유선 또는 무선일 수 있다. 클라이언트 장치(110)는 통신 네트워크/버스(14)를 통해 통신하거나 통신하지 않을 수 있으며, 그와 관련된 독립적인 통신을 가질 수도 있다. 예를 들어, TV 또는 VCR의 경우에, 그것의 제어에 관한 네트워크화된 양상이 있거나 없을 수 있다. 각각의 클라이언트 컴퓨터(110) 및 서버 컴퓨터(10)는 다양한 애플리케이션 프로그램 모듈 또는 개체(135)가 갖추어질 수 있고, 파일이 저장되거나 또는 파일의 부분(들)이 다운로드되거나 이동될 수 있는 다양한 유형의 저장 소자 또는 개체로 접속되거나 억세스될 수 있다. 그러므로, 본 발명은 컴퓨터 네트워크/버스(14)를 액세스하고 그것과 상호작용할 수 있는 클라이언트 컴퓨터(110a, 110b 등), 및 클라이언트 컴퓨터(110a, 110b 등) 및 기타 장치(111)와 상호작용할 수 있는 서버 컴퓨터(10a, 10b 등), 및 데이터베이스(20)를 갖고 있는 컴퓨터 네트워크 환경에서 이용될 수 있다.
분할된(partitioned) 컴퓨팅 장치
이제, 도 3을 참조하면, 컴퓨팅 장치(10)는 자원 서비스를 컴퓨팅 장치(10)에 제공하기 위해 이용되는 특정 자원(12)을 포함하거나 그 특정 자원(12)으로의 액세스를 갖는다. 그러한 컴퓨팅 장치(10), 자원(12) 및 자원 서비스는 본 발명의 정신 및 범위를 벗어나지 않는 임의의 적절한 컴퓨팅 장치, 자원 및 자원 서비스일 수 있다. 예를 들어, 컴퓨팅 장치(10)는 데이터 저장 서비스를 제공하는 자원(12)으로서 하드 디스크 드라이브를 갖는 데스크톱 또는 랩톱 컴퓨터 등과 같은 퍼스널 컴퓨터일 수 있다. 이와 마찬가지로, 컴퓨팅 장치(10)는 디스플레이 서비스를 제공하는 자원(12)으로서 표시 화면을 갖는 휴대용 오디오 또는 비디오 플레이어와 같은 휴대용 플레이백 기기일 수 있다. 이와 유사하게, 컴퓨팅 장치(10)는 통신 서비스를 제공하는 자원(12)으로서 데이터 통신 네트워크를 갖는 서버 컴퓨터일 수 있다. 이와 유사한 방식으로, 서버 컴퓨터는 그 자체가 자원(12)일 수 있다. 주의할 점은 자원(12)이 하드웨어의 특정 부분, 및 하드웨어의 특정 부분, 원격 서비스, 로컬 서비스, 그 조합을 액세스하는 어댑터 등일 수 있다는 것이다.
중요하게, 컴퓨팅 장치(10)는 다수의 파티션을 실행하도록 구성되어 있는데, 각 파티션은 하나 이상의 애플리케이션이 인스턴스화될 수 있는 운영 체제의 인스턴스를 교대로 호스팅하도록 가상 컴퓨터를 인스턴스화하기 위해 이용될 수 있다. 알 수 있는 바와 같이, 그러한 컴퓨팅 장치(10)에서, 컴퓨팅 장치(10)의 특정 자원(12)은 특정 VM(14)이 그러한 특정 자원(12)을 직접 제어할 수 있도록 특정 파티션 또는 가상 컴퓨터(14)(이후, VM(14))에 할당된다. 이때, 그러한 특정 VM(14)은 자원 능력을 제공하는 호스트('VM-H(14)')이다. 이와 유사하게, 그러한 VM-H(14)는 자원 서비스를 하나 이상의 다른 VM(16)에 제공하는데, 다른 VM(16)의 각각은 그러한 서비스를 소모하는 사실상의 클라이언트('VM-C(16)')이다. 통상적으로, 각 VM-C(16) 및 VM-H(14)는 자원-관련 동작을 달성하기 위해 가상 컴퓨터(VM) 버 스(18) 등과 같은 파이프 또는 채널을 통해 통신한다.
VM 버스(18)는 본 발명의 정신 및 범위를 벗어나지 않고서, 그 자체가 컴퓨팅 장치(10) 상의 개체로서 설정될 수 있고, 또는 그 대신에 그 자체가 존재하지 않는 개념상의 개체로서 설정될 수 있다. 후자의 경우에, 알 수 있는 바와 같이, 그러한 개념상의 VM 버스(18)는 VM(14, 16)이 그들 사이에 통신을 설정하기로 선택할 때 VM(14와 16) 사이의 통신 관로로서 명시된다. 특히, 그러한 VM 버스(18)의 명시는 VM(14, 16)이 그들 사이에서 통신하기로 선택하는 과정에서, 그러한 VM(14)이 그러한 통신에 필요한 서비스를 각각 설정하고 그렇게 통신하기 위해 그러한 서비스를 실제로 이용할 때 발생하는 것으로 생각될 수 있다. 그러한 경우에, 통신은 본 발명의 정신 및 범위를 벗어나지 않고서 컴퓨팅 장치(10) 내의 임의의 적절한 통신 매체를 통해 발생할 수 있다.
도 3의 컴퓨팅 장치(10) 및 각 VM(14, 16)은 사용자 모드 및 커널 모드가 본 발명의 목적에 반드시 필요한 것으로 보이지는 않지만, 그러한 사용자 모드 및 커널 모드를 포함하도록 기능적으로 동작될 수 있다. 하여튼, 알 수 있는 바와 같이, 사용자 모드는 실행 코드가 소정의 동작을 실행하지 못하게 하드웨어에 의해 금지되는, 이를테면 예를 들어 메모리로의 기입이 그러한 코드에 할당되지 않는, 일반적으로 권한이 없는 상태이다. 일반적으로 그러한 금지 동작은 VM(14, 16)의 운영 체제를 불안정하게 하거나 보안 위험 상태로 만들 수 있는 것들이다. 운영 체제와 관련하여, 사용자 모드는 실행 코드가 시스템 구성 파일로의 기입, 기타 프로세스의 삭제, 시스템의 재부팅 등등과 같은 잠재적으로 위험한 동작을 실행하지 못하게 커널에 의해 금지되는 유사한 권한없는 실행 모드이다.
또한 알 수 있는 바와 같이, 커널 모드 또는 권한 모드는 운영 체제 및 관련 핵심 컴포넌트가 실행되는 모드이다. 커널 모드에서 실행되는 코드는 VM/파티션(14, 16)에 할당되는 자원 및 시스템 메모리로의 무제한 액세스를 갖는다. 일반적으로, 커널 모드에서 실행되는 코드의 양은 보안 및 간결함을 위해 최소화된다. 대략적으로 말하자면, 컴퓨팅 장치(10)의 사용자는 사용자 모드 및 그 안에서 동작되는 애플리케이션을 통해 대부분 직접 그 컴퓨팅 장치와 접속하지만, 컴퓨팅 장치(10)는 대부분 직접 커널 모드를 통해 특정 자원(12)을 포함한 자원과 접속한다.
하드웨어 자원(12)을 소유하는 VM-H(14)의 이동
위에서 나타낸 바와 같이, 가상 구성체로서의 VM(14, 16)은 마음대로 정지되고, 저장되며, 검색되고, 다시 시작될 수 있다. 결과적으로, 저장된 제1 플랫폼상의 VM(14, 16)은 제2 플랫폼으로 이동되거나 '이주'될 수 있는데, 여기에서 플랫폼은 상이한 컴퓨팅 장치, 또는 동일한 컴퓨팅 장치의 상이한 구성을 나타낸다. 그러므로, 예를 들어, 웹 서버인 VM(14, 16)은 제1 물리적 컴퓨터상에서 실행되지 못하게 정지될 수 있고, 웹 서버상의 어떤 클라이언트도 그러한 웹 서버가 이동되었다는 것을 모르게 제2 물리적 컴퓨터상으로 이동되어 다시 시작될 수 있다. 게다가, 그러한 이동으로, 제1 물리적 컴퓨터는 그 위에서 실행되는 작업을 중단하지 않고 유지 관리 또는 재구성을 위해 오프라인으로 될 수 있다. 또한, 그러한 이동은 한 그룹의 물리적 컴퓨터가 동적으로 로드의 균형을 조정할 수 있게 한다. 이와 유사하게, 사용자의 개인 작업공간을 나타내는 VM(14, 16)은 직장, 집 등에서 사용자에 의해 컴퓨팅 장치(12) 사이에서 이동될 수 있다.
그러나, 주의할 점은 때때로 VM(14, 16)에 관한 상태 정보의 전부가 그러한 VM(14, 16)의 소프트웨어 구성체 내에 포함되는 것은 아니라는 것이다. 특히, 하드웨어의 일부 또는 그 어댑터인 자원(12)을 소유하는 VM-H(14)는 그러한 자원(12)에 저장된 자원(12)에 관한 특정 상태 정보를 가질 수 있다. 특히 VM-H(14)의 상태 정보의 일부가 그러한 VM-H(14)의 소프트웨어 구성체 내에 포함되지 않는 상황에서, 이때 제1 플랫폼에서 제2 플랫폼으로의 VM-H(14)의 이동은 더욱 어려워진다. 특히, 그러한 이동은 자원(12)에 있는 VM-H(14)의 상태 정보가 손실되지 않거나 그 밖에 VM-H(14)와 영구적으로 분리되지 않게 처리될 때까지 발생하지 않아야 한다.
VM-H(14)가 하드웨어 자원(12)의 사용시에 끼어들기를 용인할 수 있는 한 시나리오에서, 자원(12)에서의 상태 정보는 사실상 비교적 문제되지 않고, 아마도 자원(12)에서 실행될 수 있으며, VM-H(14)의 이동을 위해 VM-H(14)를 정지하기 이전에 자원(12)에서 삭제될 수 있다. 예를 들어, 자원이 프린터이고, 상태 정보가 인쇄 작업에 관한 것이면, 인쇄 작업은 상태 정보가 프린터에 의해 소모되도록 완료되게 될 수 있고, 그 후 프린터 자원(12)의 소유권은 VM-H(14)에서 박탈될 수 있으며, 그러한 VM-H(14)는 이동될 수 있다.
VM-H(14)가 하드웨어 자원(12)의 사용시에 끼어들기를 용인할 수 있는 다른 시나리오에서, 자원(12)에서의 상태 정보는 사실상 약간 덜 문제되지 않지만, 아마도 이동을 위해 VM-H(14)를 정지하기 이전에 VM-H(14)로 이동될 수 있다. 예를 들어, 자원(12)이 앞에서와 동일한 프린터이고, 상태 정보가 앞에서와 동일한 인쇄 작업이지만, 그러한 인쇄 작업이 적당한 시간에 완료될 수 없는 경우에, 인쇄 작업은 정지될 수 있고, 인쇄 작업에 관한 나머지 상태 정보는 VM-H(14)의 이동을 위해 VM-H(14)를 정지하기 이전에 VM-H(14)에 이동될 수 있으며, 그 후 프린터 자원(12)의 소유권은 다시 VM-H(14)에서 박탈될 수 있고, 그러한 VM-H(14)는 이동될 수 있다. 이때, 이동 후에, VM-H(14)가 다시 동일한 프린터 자원(12)을 소유한다고 가정하면, 인쇄 작업에 관한 나머지 상태 정보는 인쇄 작업을 완료하기 위해 VM-H(14)에서 그러한 프린터로 이동될 수 있다.
그러나, 상기 설명된 가정이 이루어질 수 없는 경우가 있을 수 있다. 그러므로, 이동 후의 VM-H(14)에 의해 소유된 프린터 자원(12)은 상이한 유형의 프린터와 같은 완전히 다른 프린터 자원(12), 또는 인쇄 제어기가 업그레이드된 동일한 프린터와 같은 약간 다른 프린터 자원(12)일 수 있다. 중요한 것은 어느 경우에나, 상이한 프린터 자원이 그러한 상태 정보를 더 이상 인식하거나 실행할 수 없는 한, 아마도 인쇄 작업에 관한 나머지 상태 정보가 인쇄 작업을 완료하기 위해 VM-H(14)에서 그러한 프린터로 이동될 수 없다는 것이다.
게다가, 주의할 점은 자원(12)을 소유하는 VM-H(14)가 작업 목록, 내부 상태 기계 변수 등을 포함하는 자원에서의 상태 정보를 포함할 수 있다는 것이다. VM-H(14)가 임의로 정지되고 다시 시작되는 경우에, 자원(12)에서의 상태 정보는 아마도 상이할 것이고, 미해결 요청은 기껏해야 중지될 것인데, 이것은 VM-H(14)를 작동하지 못하게 할 수 있다. 최악의 경우에는, 자원(12)의 드라이버 등이 상황을 잘못 생각할 것이고, 프로그래밍시에 자원(12)은 자원(12) 내의 메모리를 훼손시킬 것인데, 이것은 다시 VM-H(14)를 작동하지 못하게 하고, 또한 아마도 컴퓨팅 장치(10) 상의 다른 VM(14, 16)도 작동하지 못하게 할 것이다.
그러므로, 이동 후의 VM-H(14)가 동일한 컴퓨팅 장치(10) 상에서 다시 시작될 것이고 동일한 자원(12)이 VM-H(14)에 이용될 수 있다는 것이 보증될 수 있는 경우에는, 충분히, VM-H(14)의 운영 체제를 갖고, 모든 상태 정보를 자원(12)에서 이동시키며, 이동 전의 VM-H(14)에 그 상태 정보를 저장할 수 있다. 그 다음, VM-H(14)가 이동 후 다시 시작될 때, VM-H(14)의 운영 체제는 저장된 상태 정보를 자원에 의해 더욱 실행하도록 다시 자원(12)으로 이동시킬 수 있다.
그러나, 그러한 보증을 할 수 없는 경우, 또는 작업부하가 이동 전의 모든 상태 정보의 움직임을 방해하는 경우, 종종, 이동 전에 VM-H(14)에 의한 소유권에서 자원(12)을 제거하거나 '제외'시키는 것으로 충분하다는 것을 알 수 있을 것이다. 알 수 있는 바와 같이, 그러한 제외는 VM-H(14)의 운영 체제에 대한 적절한 요청시에 달성될 수 있다. 본 발명의 한 실시예에서, 그러한 제외는 이동될 VM-H(14)를 정지하기 전에 명령이 내려지는데, 이것은 VM-H(14)의 운영 체제가 중요하다고 생각되고 아마도 자원(12)의 모든 상태 정보보다 적은 그 상태 정보만을 자원(12)에서 VM-H(14) 내로 이동시키게 한다. 이해할 수 있는 바와 같이, 제외 후, 자원(12)은 VM-H(14)에 관한 상태 정보를 갖지 않고, 더 이상 이동 전 또는 후에 VM-H(14)에 의해 소유되지 않고 또는 VM-H(14)에 이용 불가능하다. 그러므로, 이동 후, VM-H(14)는 어떤 상태 정보도 다시 자원(12)으로 이동시키려고 시도하지 않을 것이고, 이로 인해 그러한 이동으로부터 가능한 모든 문제가 방지된다. 물론, VM-H(14)는, 이용가능하고 그렇게 원하는 경우에 자원(12)의 소유권을 되찾아야 할 것이다.
그러나, 또 다른 시나리오에서, VM-H(14)는 하드웨어 자원(12)의 사용시에 끼어들기를 용인할 수 없고, 따라서 자원(12)에서의 상태 정보는 사실상 비교적 중요하다. 예를 들어, 자원(12)이 디스크 드라이브와 같이 VM-H(14)에 의해 이용된 주 저장 장치이면, 그 자원으로의 액세스는 VM-H(14)에게 중요하고, 그렇지 않으면 VM-H(14)의 운영 체제가 작동을 멈출 것이다. 그러므로, 그러한 시나리오에서는, VM-H(14)가 항상 상태 정보를 그러한 자원(12)으로 보낼 수 있어야 하는 한, 디스크 드라이브 자원(12)의 소유권이 VM-H(14)에서 박탈될 수 있는 시점이 없다. 게다가, 그러한 시나리오에서, 소정의 메커니즘은 VM-H(14)가 여전히 상태 정보를 그러한 자원(12) 쪽으로 보낼 수 있게 하는 동시에, 자원(12)의 동작을 중지시키고 VM-H(14)의 임의의 상태 정보를 그 자원(12)에서 제거하기 위해 이용되어야 한다.
이제, 도 4를 참조하면, 전형적인 VM-H(14)는 파일 시스템 드라이버, 파티션 드라이버, 볼륨 드라이버, 디스크 드라이버 등을 포함할 수 있는 저장 장치 스택(22)을 통해 저장 장치 자원(12)과 같은 자원(12)을 액세스한다는 것을 알 수 있다. 물론, 본 발명은 저장 장치 자원(12)에 제한되는 것이 아니라, 그 대신에, 본 발명의 정신 및 범위를 벗어나지 않는 임의의 다른 유형의 자원(12)일 수 있는데, 그 경우에 적절한 대응하는 스택(22) 등이 그 자원을 액세스하기 위해 이용될 수 있다.
도시된 바와 같이, 도 4의 저장 장치 스택(22)은 포트 드라이버(24) 등(이 후, '포트(24)' 또는 그 등가물)을 통해 저장 장치 자원(12)과 통신한다. 알 수 있는 바와 같이, 전형적인 바와 같이, 포트(24)는 저장 장치 스택(22)으로부터의 일반적인 이상화 명령 및 요청을 저장 장치 자원(12)에 특정된 명령 또는 요청으로 변환한다. 특히, 예를 들어, 저장 장치 자원(12)이 VM-H(14)의 운영 체제가 존재하는 메모리의 일부를 포함하는 경우에, 그러한 저장 장치 자원(12)은 페이징 요청 등을 받아들이기 위해 연속 동작 상태로 있어야 하고, 그렇지 않으면 VM-H(14)의 운영 체제가 작동을 멈출 것이다. 간단히 말하자면, 그러한 경우에, 최소한 VM-H(14)가 상태 정보를 액세스 요청 등의 형태로 그러한 저장 장치 자원(12)으로 항상 보낼 수 있어야 하는 한, 저장 장치 자원(12)으로의 액세스는 인터럽트될 수 없다.
따라서, 이제, 도 5를 참조하면, 본 발명의 한 실시예에서, 도 4의 단일 포트(24)는 한 쌍의 포트(24a 및 24b)로 대체되는데, 포트(24a)는 저장 장치 스택(22)을 저장 장치 자원(12)과 통신으로 연결시키고, 포트(24b)는 저장 장치 스택(22)을 통신 매체를 통해 교체 대상과 통신으로 연결시킨다. 도시된 바와 같이, 통신 매체는 VM 버스(18)이고, 아마도 교체 대상은 컴퓨팅 장치(10) 상에서 동작하는 다른 VM(14, 16)이다. 그러나, 교체 대상 및 통신 매체는 본 발명의 정신 및 범위를 벗어나지 않는 임의의 적절한 교체 대상 및 통신 매체일 수 있다.
중요하게, 본 발명의 한 실시예에서, 도 5에 도시된 바와 같이, 각 포트(24a 및 24b)는 포트 조정기(26)를 통해 저장 장치 스택(22)에 연결된다. 알 수 있는 바와 같이, 포트 조정기(26)는 저장 장치 자원(12)에 대한 각 액세스 요청을 포 트(24a)를 통해 그러한 저장 장치 자원(12)으로 보내거나, 포트(24b) 및 통신 매체/VM 버스(18)를 통해 교체 대상으로 보낸다. 주로, 포트 조정기(26)는 아래에 설명되는 방식으로 각 액세스 요청을 보내는 방법을 결정한다.
이제, 도 6을 참조하면, 본 발명의 한 실시예에서, 저장 장치와 같은 자원(12)을 소유하는 VM-H(14)를 이동시키기 위해 이용될 수 있는 일련의 동작이 도시된다는 것을 알 수 있다. 게다가, 주의할 점은 그러한 일련의 동작이 VM-H(14)를 반드시 이동시키지 않고도 그러한 VM-H(14)를 저장하기 위해 또한 이용될 수 있다는 것이다. 이동이든 저장이든, VM-H(14)의 정상 런타임 동작 중에, 저장 장치 자원(12)은 VM-H(14)에 의해 소유되고, 포트 조정기(26)는 VM-H(14)의 저장 장치 스택(22)으로부터의 액세스 요청 등을 포트(24a)를 통해 저장 장치 자원(12)으로 보내며, 포트(24a) 및 저장 장치 자원(12)은 그러한 액세스 요청 등을 차례로 대기시켜 처리한다(단계(601)). 그러나, VM-H의 저장 또는 이동이 어떤 적절한 자원에 의해서든 활성화된 후(단계(603)), 포트 조정기(26)는 VM-H(14)의 저장 장치 스택(22)으로부터의 액세스 요청 등을 포트(24b)로 보낸다(단계(605)).
처음에, 포트(24a) 및 저장 장치 자원(12)이 임의의 나머지 액세스 요청 등을 처리하는 동안에, 포트(24b)는 수신한 액세스 요청 등을 대기시킨다(단계(607)). 그러므로, 포트(24a) 및 저장 장치 자원(12)에서의 모든 액세스 요청 등은 완료할 수 있게 되고, 그 후, 관련된 어떤 상태 정보도 저장 장치 자원(12)에 남지 않는다(단계(609)). 결정적으로, 포트(24a) 및 저장 장치 자원(12)에서의 그러한 액세스 요청 등이 완료할 수 있게 되는 동안에, 또 다른 액세스 요청 등은 포 트(24b)에서 대기하게 되고, 그러한 액세스 요청 등은 VM-H(14)의 운영 체제의 작동을 멈추게 할 수 있는 어떤 식으로도 거부되거나, 무시되거나, 그 밖에 부인되지 않는다.
중요하게, 일단 포트(24a) 및 저장 장치 자원(12)에서의 모든 액세스 요청 등이 완료되었고, 관련된 어떤 상태 정보도 저장 장치 자원(12)에 남아 있지 않으면, 저장 장치 자원(12)은 (제1) VM-H(14)가 아마도 제외 등을 통해 더 이상 그 자원을 소유하지 않도록 (제1) VM-H(14)에서 제거되고(단계(611)), 그 다음 그러한 저장 장치 자원(12)은 다른 VM(14, 16)에 할당되며, 그러한 다른 VM(14, 16)은 이제 저장 장치 자원(12)을 소유하는 제2 VM-H(14)가 된다(단계(613)). 알 수 있는 바와 같이, 그러한 제거 및 할당 동작의 실행은 본 발명의 정신 및 범위를 벗어나지 않고서 임의의 적절한 방식으로 임의의 적절한 엔티티에 의해 행해질 수 있다.
또한, 중요하게, 본 발명의 한 실시예에서, 일단 저장 장치 자원(12)이 제2 VM-H(14)에 할당되었으면, 포트(24b)는 VM 버스(18) 등을 통해 그러한 제2 VM-H(14)에 연결되고(단계(615)), 그 다음에 그러한 포트(24b)에서 대기중인 액세스 요청 등은 이제 제2 VM-H(14)에 의해 소유된 저장 장치 자원(12)에서 완료하기 위해 그러한 제2 VM-H(14)로 전송된다(단계(617)). 이제 알 수 있듯이, 소정의 시점에서, 모든 필요한 액세스 요청 등은 포트(24a) 또는 포트(24b)를 통해, 활성화된 저장 또는 이동 동안에, 제1 VM-H(14)의 저장 장치 스택(22)에 의해 저장 장치 자원(12)으로 보내졌으며, 저장 장치 자원(12)은 그러한 모든 보내진 액세스 요청 등을 처리했다(단계(619)). 따라서, 제1 VM-H(14)의 저장 또는 이동은 저장 장치 자 원(12)에 대한 VM-H(14)로부터의 모든 액세스 요청이 포트(24a)를 통해 직접적으로 또는 포트(24b) 및 제2 VM-H(14)를 통해 간접적으로 실행되었다는 것을 알고, 그리고 저장 장치 자원(12)이 그러한 제1 VM-H(14)에 관한 어떤 상태 정보도 보유하지 않고 제1 VM-H(14)에서 제외되었다는 것을 알고 완료될 수 있다(단계(621)).
이제 알 수 있는 바와 같이, 이동 후의 제1 VM-H(14)로의 저장 장치 자원(12)의 재할당은 본질적으로 단계(603-621)에서 실행된 제거 단계와 반대이다. 따라서, 그러한 재할당의 상세는 어떤 상세든지 여기에서 설명될 필요가 없다.
여기에서 주의할 점은 제1 VM-H(14)의 포트(24b)가 수신한 일반적인 명령을 특정 명령으로 변환하지 않아야 한다는 것이다. 이와 같이, 제2 VM-H(14)의 저장 장치 스택(22)은 제1 VM-H(14)의 저장 장치 스택(22)과 기능적으로 대등한 것 이상의 그 무엇이 될 필요가 없다. 특히, 그러한 스택(22) 둘 다가 일반 명령을 내기 때문에, 제2 VM-H(14)의 포트(24)에서 수신된 것과 같은 일반 명령은 특정하게 될 수 있다.
결론
본 발명이 호스트 및 클라이언트 VM(14, 16)와 관련하여 최소한 부분적으로 설명되지만, 본 발명은 하드웨어를 소유하는 파티션 또는 VM이 이동되는 임의의 상황에 관한 것이라는 것을 알 수 있을 것이다. 그러한 이동 VM이 어쩌면 다른 클라이언트에 대한 호스트일 수 있지만, 반드시 그러한 이동 VM이 항상 다른 클라이언트에 대한 호스트인 것은 아니다. 게다가, 이동 동안에, 하드웨어 장치의 소유권 포기 시의 VM-H(14)는 적어도 여기에서 설명된 용어에 따르면, 사실상 VM-C(16)가 된다는 것을 알 수 있을 것이다. 게다가, 알 수 있는 바와 같이, 본 발명은 비록 호스트 및 클라이언트 VM(14, 16)과 관련하여 적절하게 개시했지만, '호스트' 또는 '클라이언트'와 같은 용어에 관계없이, 즉 이동하기 위한 하드웨어를 소유하는 VM, 및 이동하기 전에 그러한 하드웨어의 소유권을 다른 VM에 양도하는 VM과 관련하여, 더욱 적절하게 고려되어야 한다.
본 발명과 관련하여 실행된 프로세스를 실시하기 위해 필요한 프로그래밍은 비교적 간단하고, 관련 프로그래밍계에서 명백히 알 수 있을 것이다. 특히, 그 중에서도 도 5에 도시된 개체들의 각각을 구성하고 또한 도 6의 단계를 실시하기 위해 필요한 프로그래밍은 각각의 그러한 개체 및 단계에 필요한 기능에 기초하여 명백히 알 수 있을 것이다. 따라서, 그러한 프로그래밍은 여기에 첨부되지 않는다. 게다가, 임의의 특정 프로그래밍은 본 발명의 정신 및 범위를 벗어나지 않고서 본 발명을 실시하기 위해 이용될 수 있다.
본 발명에서는, VM-H(14)가 저장되거나 제1 플랫폼에서 제2 플랫폼으로 이동될 때 VM-H(14)에 의해 소유된 자원(12)에 있는 VM-H(14)의 상태 정보를 처리하는 방법 및 메커니즘이 제공된다. 자원(12)에서의 상태 정보는 이동 전에 일반적인 동작으로 자원(12)에서 삭제될 수 있고, 그렇지 않으면 이동 후에 VM-H(14)에 의한 나중의 검색을 위해 저장될 수 있으며, 그렇지 않으면 다른 VM-H(14)에 의해 처리될 수 있다.
본 발명의 개념을 벗어나지 않고서 상기 설명된 실시예에 대한 변경이 이루어질 수 있다는 것을 알 수 있을 것이다. 한 예로서, 본 발명은 VM-H(14)의 상태 정보를 갖는 하드웨어 자원(12)과 관련하여 설명되지만, 그러한 자원(12)은 본 발명의 정신 및 범위를 벗어나지 않고서, 소프트웨어 자원(12)과 같은, VM-H(14)의 상태 정보를 갖는 다른 유형의 자원일 수도 있다. 다른 예로서, 본 발명은 자원(12)을 액세스하는 스택(22) 및 포트(24)와 관련하여 설명되지만, 그러한 스택(22) 및 포트(24)는 각각 스택 및 포트뿐만 아니라, 자원(12)을 액세스하는 임의의 다른 적절한 액세싱 메커니즘을 포함하고자 하는 것이고, 이들 모두는 본 발명의 정신 및 범위를 벗어나지 않는 것이다. 그러므로, 본 발명은 개시된 특정 실시예에 제한되는 것이 아니라, 첨부된 청구범위에 의해 정의된 본 발명의 정신 및 범위 내의 변경을 포함하고자 한다는 것을 이해할 것이다.

Claims (15)

  1. 컴퓨팅 시스템에 있어서,
    자원 서비스를 제공하는 자원; 및
    컴퓨팅 장치상에서 인스턴스화된 제1 및 제2 가상 컴퓨터(VM)를 갖는 컴퓨팅 장치
    를 포함하는데,
    각각의 VM은 하나 이상의 애플리케이션들이 인스턴스화될 수 있는 운영 체제의 인스턴스를 호스팅하고, 상기 제1 VM이 처음에 상기 자원 및 상기 자원에 의해 제공된 서비스를 소유하도록 상기 제1 VM은 처음에 상기 자원에 통신으로 연결되고, 상기 자원은 처음에 상기 제1 VM에 할당되며, 상기 제1 VM은 저장될 수 있고 제1 플랫폼에서 제2 플랫폼으로 이동될 수 있는 컴퓨팅 장치상의 소프트웨어 구성체이고,
    상기 제1 VM은,
    상기 자원에 대응하고, 자원 스택을 통해 보내진 액세스 요청에 따라 상기 자원을 액세스하는 자원 스택;
    상기 자원에 통신으로 연결된 제1 포트;
    통신 매체에 통신으로 연결된 제2 포트; 및
    상기 자원 스택, 상기 제1 포트 및 상기 제2 포트에 통신으로 연결되어, 상기 자원 스택으로부터의 각 액세스 요청을 상기 제1 포트 및 상기 제2 포트 중의 어느 한 포트에서 대기하도록 전송하는 포트 조정기(port redirector)
    를 포함하며,
    상기 포트 조정기는 상기 제1 VM이 저장되거나 이동되도록 지시받을 때까지 상기 제1 포트에서 대기하도록 상기 자원 스택으로부터의 각 액세스 요청을 전송하고, 상기 제1 포트에서의 각 액세스 요청은 자원에 의해 실행되도록 순서대로 자원으로 더욱 전송되며,
    상기 포트 조정기는 상기 제1 VM이 저장되거나 이동되도록 지시받을 때 및 그 이후에 상기 자원 스택으로부터의 각 액세스 요청을 상기 제2 포트로 전송하고, 상기 제2 포트에서의 각 액세스 요청은 상기 자원이 상기 제1 포트에서 대기중인 모든 액세스 요청을 실행한 다음에 상기 제1 VM에 의해 소유되지 않게 된 후에만 순서대로 더욱 전송되며,
    상기 제2 VM이 그 다음에 상기 자원 및 상기 자원에 의해 제공된 서비스를 소유하도록, 상기 제2 VM은 그 다음에 상기 자원에 통신으로 연결되고, 상기 자원은 그 다음에 상기 제1 VM에서 제거된 후에 제2 VM에 할당되며, 상기 자원의 소유자로서의 제2 VM은 상기 통신 매체를 통해 상기 제1 VM의 제2 포트에 통신으로 연결되고, 상기 제2 포트에서의 각 액세스 요청은 통신 매체를 통해 상기 제2 VM으로 순서대로 더욱 전송되며, 그 다음에 상기 자원에 의해 실행되도록 상기 제2 VM을 통해 순서대로 상기 자원에 더욱 전송됨으로써,
    상기 제1 VM의 자원 스택으로부터의 모든 액세스 요청은 상기 자원이 상기 제1 VM에서 제거되고 상기 제2 VM에 할당된 후라도 순서대로 상기 자원에 의해 실 행되고, 그 후에 상기 저장 또는 이동이 완료될 수 있는 컴퓨팅 시스템.
  2. 제1항에 있어서, 상기 컴퓨팅 장치는 또한 상기 제1 VM 및 상기 제2 VM을 통신으로 연결하는 상기 통신 매체로서 VM 버스를 갖는 컴퓨팅 시스템.
  3. 제1항에 있어서, 상기 컴퓨팅 장치는 상기 자원을 갖는 컴퓨팅 시스템.
  4. 제1항에 있어서, 상기 자원은 하드웨어 자원인 컴퓨팅 시스템.
  5. 제1항에 있어서, 상기 자원은 저장 장치 자원인 컴퓨팅 시스템.
  6. 컴퓨팅 시스템에 관한 방법에 있어서,
    상기 컴퓨팅 시스템은,
    자원 서비스를 제공하는 자원; 및
    컴퓨팅 장치상에서 인스턴스화된 제1 및 제2 가상 컴퓨터(VM)를 갖는 컴퓨팅 장치를 포함하는데,
    각각의 VM은 하나 이상의 애플리케이션들이 인스턴스화될 수 있는 운영 체제의 인스턴스를 호스팅하고, 상기 제1 VM이 처음에 상기 자원 및 상기 자원에 의해 제공된 서비스를 소유하도록 상기 제1 VM은 처음에 상기 자원에 통신으로 연결되고, 상기 자원은 처음에 상기 제1 VM에 할당되며,
    상기 제1 VM은,
    상기 자원에 대응하고, 자원 스택을 통해 보내진 액세스 요청에 따라 상기 자원을 액세스하는 자원 스택;
    상기 자원에 통신으로 연결된 제1 포트;
    통신 매체에 통신으로 연결된 제2 포트; 및
    상기 자원 스택, 상기 제1 포트 및 상기 제2 포트에 통신으로 연결되어, 상기 자원 스택으로부터의 각 액세스 요청을 상기 제1 포트 및 상기 제2 포트 중의 어느 한 포트에서 대기하도록 전송하는 포트 조정기를 포함하며,
    상기 방법은,
    상기 포트 조정기가 상기 자원 스택으로부터의 각 액세스 요청을 상기 제1 포트에서 대기하도록 전송하는 단계 - 상기 제1 포트에서 대기중인 각 액세스 요청은 자원에 의해 실행되도록 순서대로 상기 자원으로 더욱 전송됨 -;
    상기 제1 VM이 저장되거나 또는 제1 플랫폼에서 제2 플랫폼으로 이동되도록 지시받았다는 것을 첫 번째로 판정하고, 이 제1의 판정시에, 상기 포트 조정기가 상기 자원 스택으로부터의 각 액세스 요청을 상기 제2 포트에서 대기하도록 전송하는 단계; 및
    상기 자원이 상기 제1 포트에서 대기중이고 제1 포트에 의해 전송된 모든 액세스 요청을 실행했다는 것을 두 번째로 판정하는 단계
    를 포함하는데, 이 제2의 판정시에,
    상기 자원을 상기 제1 VM에 의해 소유되지 않게 하고, 그 다음에 상기 제2 VM이 상기 자원 및 상기 자원에 의해 제공된 서비스를 소유하도록 상기 제2 VM을 상기 자원에 통신으로 연결하고 상기 자원을 상기 제2 VM에 할당하는 단계;
    상기 자원의 소유자로서의 상기 제2 VM을 상기 통신 매체를 통해 상기 제1 VM의 제2 포트에 통신으로 연결하는 단계;
    상기 제2 포트에서 대기중인 각 액세스 요청을 상기 통신 매체를 통해 상기 제2 VM으로 순서대로 더욱 전송하고, 그 다음에 각 액세스 요청이 자원에 의해 실행되도록 상기 제2 VM을 통해 상기 자원으로 순서대로 더욱 전송되는 단계 - 이로 인해, 상기 제1 VM의 자원 스택으로부터의 모든 액세스 요청은 상기 자원이 상기 제1 VM에서 제거되고 상기 제2 VM으로 할당된 후라도 순서대로 상기 자원에 의해 실행됨-; 및
    그 후에 상기 제1 VM의 저장 또는 이동을 완료하는 단계
    를 포함하는 컴퓨팅 시스템에 관한 방법.
  7. 제6항에 있어서, 상기 컴퓨팅 장치는 또한 상기 제1 VM 및 상기 제2 VM을 통신으로 연결하는 상기 통신 매체로서 VM 버스를 갖는 컴퓨팅 시스템에 관한 방법.
  8. 제6항에 있어서, 상기 컴퓨팅 장치는 상기 자원을 갖는 컴퓨팅 시스템에 관한 방법.
  9. 제6항에 있어서, 상기 자원은 하드웨어 자원인 컴퓨팅 시스템에 관한 방법.
  10. 제6항에 있어서, 상기 자원은 저장 장치 자원인 컴퓨팅 시스템에 관한 방법.
  11. 컴퓨팅 시스템에 관한 방법에 있어서,
    상기 컴퓨팅 시스템은,
    자원 서비스를 제공하는 자원; 및
    컴퓨팅 장치상에서 인스턴스화된 제1 및 제2 가상 컴퓨터(VM)를 갖는 컴퓨팅 장치를 포함하는데,
    각각의 VM은 하나 이상의 애플리케이션들이 인스턴스화될 수 있는 운영 체제의 인스턴스를 호스팅하고, 상기 제1 VM이 처음에 상기 자원 및 상기 자원에 의해 제공된 서비스를 소유하도록 상기 제1 VM은 처음에 상기 자원에 통신으로 연결되고, 상기 자원은 처음에 상기 제1 VM에 할당되며,
    상기 방법은,
    상기 자원에 대한 각 액세스 요청을 자원에 의해 실행되도록 그러한 자원으로 처음에 전송하는 단계;
    상기 제1 VM이 저장되거나 또는 제1 플랫폼에서 제2 플랫폼으로 이동되도록 지시받았다는 것을 첫 번째로 판정하고, 이 제1의 판정시에, 상기 자원에 대한 각 액세스 요청을 보유 큐(holding queue)로 전송하는 단계; 및
    상기 자원이 거기에 전송된 모든 액세스 요청을 실행했다는 것을 두 번째로 판정하는 단계
    를 포함하는데, 이 제2의 판정시에,
    상기 자원을 상기 제1 VM에 의해 소유되지 않게 하고, 그 다음에 상기 제2 VM이 상기 자원 및 상기 자원에 의해 제공된 서비스를 소유하도록 상기 제2 VM을 상기 자원에 통신으로 연결하고 상기 자원을 상기 제2 VM에 할당하는 단계;
    상기 자원의 소유자로서의 상기 제2 VM을 상기 보유 큐에 통신으로 연결하는 단계;
    상기 보유 큐에 있는 각 액세스 요청을 상기 제2 VM으로 더욱 전송하고, 그 다음에 각 액세스 요청이 자원에 의해 실행되도록 상기 제2 VM을 통해 상기 자원으로 순서대로 더욱 전송되는 단계 - 이로 인해, 상기 자원에 대한 모든 액세스 요청은 상기 자원이 상기 제1 VM에서 제거되고 상기 제2 VM으로 할당된 후라도 상기 자원에 의해 실행됨-; 및
    그 후에 상기 제1 VM의 저장 또는 이동을 완료하는 단계
    를 포함하는 컴퓨팅 시스템에 관한 방법.
  12. 제11항에 있어서, 상기 컴퓨팅 장치는 또한 상기 제1 VM 및 상기 제2 VM을 통신으로 연결하는 상기 통신 매체로서 VM 버스를 갖는 컴퓨팅 시스템에 관한 방법.
  13. 제11항에 있어서, 상기 컴퓨팅 장치는 상기 자원을 갖는 컴퓨팅 시스템에 관한 방법.
  14. 제11항에 있어서, 상기 자원은 하드웨어 자원인 컴퓨팅 시스템에 관한 방법.
  15. 제11항에 있어서, 상기 자원은 저장 장치 자원인 컴퓨팅 시스템에 관한 방법.
KR1020087020464A 2006-02-28 2007-02-13 하드웨어 장치와 같은 자원을 소유하는 가상 컴퓨터를 이동시키기 위해 이용될 수 있는 컴퓨팅 시스템 및 방법 KR20080106908A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/363,897 US7788665B2 (en) 2006-02-28 2006-02-28 Migrating a virtual machine that owns a resource such as a hardware device
US11/363,897 2006-02-28

Publications (1)

Publication Number Publication Date
KR20080106908A true KR20080106908A (ko) 2008-12-09

Family

ID=38445496

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087020464A KR20080106908A (ko) 2006-02-28 2007-02-13 하드웨어 장치와 같은 자원을 소유하는 가상 컴퓨터를 이동시키기 위해 이용될 수 있는 컴퓨팅 시스템 및 방법

Country Status (11)

Country Link
US (4) US7788665B2 (ko)
EP (1) EP1989635B1 (ko)
JP (1) JP5214473B2 (ko)
KR (1) KR20080106908A (ko)
CN (1) CN101390079B (ko)
AU (1) AU2007221339A1 (ko)
BR (1) BRPI0708338A8 (ko)
CA (1) CA2638765A1 (ko)
NO (1) NO20083314L (ko)
RU (1) RU2436149C2 (ko)
WO (1) WO2007100508A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150004854A (ko) * 2012-04-19 2015-01-13 유니베르시타트 폴리테크니카 데 카탈루냐 컴퓨터 시스템의 하드웨어 자원 사용을 조정하기 위한 방법, 시스템 및 실행가능 프로그램 코드

Families Citing this family (105)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7788665B2 (en) 2006-02-28 2010-08-31 Microsoft Corporation Migrating a virtual machine that owns a resource such as a hardware device
CA2547047A1 (en) * 2006-05-15 2007-11-15 Embotics Corporation Management of virtual machines using mobile autonomic elements
US7823152B2 (en) * 2006-06-06 2010-10-26 International Business Machines Corporation System and method for collaborative hosting of applications, virtual machines, and data objects
US8819242B2 (en) * 2006-08-31 2014-08-26 Cisco Technology, Inc. Method and system to transfer data utilizing cut-through sockets
US7673113B2 (en) * 2006-12-29 2010-03-02 Intel Corporation Method for dynamic load balancing on partitioned systems
JP5246388B2 (ja) * 2007-03-08 2013-07-24 日本電気株式会社 仮想装置構成システム、及びその方法
US20080244574A1 (en) * 2007-03-26 2008-10-02 Vedvyas Shanbhogue Dynamically relocating devices between virtual machines
WO2009039375A2 (en) * 2007-09-20 2009-03-26 C & S Operations, Inc. Computer system
US8468521B2 (en) * 2007-10-26 2013-06-18 Netapp, Inc. System and method for utilizing a virtualized compute cluster as an execution engine for a virtual machine of a storage system cluster
CA2645716C (en) * 2007-11-21 2017-05-30 Datagardens Inc. Adaptation of service oriented architecture
US8910152B1 (en) * 2007-11-30 2014-12-09 Hewlett-Packard Development Company, L.P. Migrating a virtual machine by using a hot-plug event
US8370833B2 (en) * 2008-02-20 2013-02-05 Hewlett-Packard Development Company, L.P. Method and system for implementing a virtual storage pool in a virtual environment
US8201166B2 (en) * 2008-04-30 2012-06-12 Hewlett-Packard Development Company, L.P. Virtualization platform configured with virtual connect control
US8145471B2 (en) * 2008-04-30 2012-03-27 International Business Machines Corporation Non-destructive simulation of a failure in a virtualization environment
US9032397B2 (en) * 2008-05-28 2015-05-12 Hewlett-Packard Development Company, L.P. Virtual machine migration with direct physical access control
US7917617B1 (en) * 2008-08-14 2011-03-29 Netapp, Inc. Mitigating rebaselining of a virtual machine (VM)
US8307177B2 (en) 2008-09-05 2012-11-06 Commvault Systems, Inc. Systems and methods for management of virtualization data
US8321878B2 (en) 2008-10-09 2012-11-27 Microsoft Corporation Virtualized storage assignment method
US8266618B2 (en) * 2008-11-21 2012-09-11 International Business Machines Corporation Graphics hardware resource usage in a fully virtualized computing environment
US7996484B2 (en) * 2008-12-11 2011-08-09 Microsoft Corporation Non-disruptive, reliable live migration of virtual machines with network data reception directly into virtual machines' memory
US20100161922A1 (en) * 2008-12-19 2010-06-24 Richard William Sharp Systems and methods for facilitating migration of virtual machines among a plurality of physical machines
US8190769B1 (en) * 2008-12-30 2012-05-29 Juniper Networks, Inc. Methods and apparatus for provisioning at a network device in response to a virtual resource migration notification
US8054832B1 (en) 2008-12-30 2011-11-08 Juniper Networks, Inc. Methods and apparatus for routing between virtual resources based on a routing location policy
US8255496B2 (en) * 2008-12-30 2012-08-28 Juniper Networks, Inc. Method and apparatus for determining a network topology during network provisioning
US8565118B2 (en) * 2008-12-30 2013-10-22 Juniper Networks, Inc. Methods and apparatus for distributed dynamic network provisioning
US8331362B2 (en) * 2008-12-30 2012-12-11 Juniper Networks, Inc. Methods and apparatus for distributed dynamic network provisioning
US8224885B1 (en) 2009-01-26 2012-07-17 Teradici Corporation Method and system for remote computing session management
US8813048B2 (en) * 2009-05-11 2014-08-19 Accenture Global Services Limited Single code set applications executing in a multiple platform system
US8832699B2 (en) 2009-05-11 2014-09-09 Accenture Global Services Limited Migrating processes operating on one platform to another platform in a multi-platform system
US8826269B2 (en) * 2009-06-15 2014-09-02 Microsoft Corporation Annotating virtual application processes
US8429652B2 (en) * 2009-06-22 2013-04-23 Citrix Systems, Inc. Systems and methods for spillover in a multi-core system
US8953603B2 (en) * 2009-10-28 2015-02-10 Juniper Networks, Inc. Methods and apparatus related to a distributed switch fabric
US8442048B2 (en) * 2009-11-04 2013-05-14 Juniper Networks, Inc. Methods and apparatus for configuring a virtual network switch
US9645857B2 (en) * 2009-12-17 2017-05-09 Hewlett Packard Enterprise Development Lp Resource fault management for partitions
US20110161495A1 (en) * 2009-12-26 2011-06-30 Ralf Ratering Accelerating opencl applications by utilizing a virtual opencl device as interface to compute clouds
US9110702B2 (en) * 2010-06-02 2015-08-18 Microsoft Technology Licensing, Llc Virtual machine migration techniques
US8719847B2 (en) * 2010-09-27 2014-05-06 Microsoft Corp. Management and marketplace for distributed home devices
US9384029B1 (en) 2010-09-30 2016-07-05 Amazon Technologies, Inc. Managing virtual computing nodes
WO2012045021A2 (en) * 2010-09-30 2012-04-05 Commvault Systems, Inc. Efficient data management improvements, such as docking limited-feature data management modules to a full-featured data management system
US9183028B1 (en) 2010-09-30 2015-11-10 Amazon Technologies, Inc. Managing virtual computing nodes
US9104458B1 (en) 2010-09-30 2015-08-11 Amazon Technologies, Inc. Managing virtual computing nodes using isolation and migration techniques
JP5594049B2 (ja) * 2010-10-18 2014-09-24 富士通株式会社 仮想計算機移動方法、コンピュータ及びプログラム
JP5681465B2 (ja) * 2010-12-02 2015-03-11 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 情報処理システム、情報処理装置、準備方法、プログラムおよび記録媒体
US8891406B1 (en) 2010-12-22 2014-11-18 Juniper Networks, Inc. Methods and apparatus for tunnel management within a data center
US8924965B2 (en) * 2011-01-07 2014-12-30 Red Hat Israel, Ltd. Memory state transfer of virtual machine-controlled peripherals during migrations of the virtual machine
US9104459B2 (en) 2011-01-07 2015-08-11 Red Hat Israel, Ltd. Memory change tracking during migration of virtual machine (VM) with VM-controlled assigned peripherals
US8490092B2 (en) * 2011-07-06 2013-07-16 Microsoft Corporation Combined live migration and storage migration using file shares and mirroring
US10042656B2 (en) * 2011-08-01 2018-08-07 Avocent Corporation System and method for providing migrateable virtual serial port services
JP5718525B2 (ja) * 2011-08-15 2015-05-13 エンパイア テクノロジー ディベロップメント エルエルシー マルチモーダルコンピューティングデバイス
US9372827B2 (en) 2011-09-30 2016-06-21 Commvault Systems, Inc. Migration of an existing computing system to new hardware
US9461881B2 (en) 2011-09-30 2016-10-04 Commvault Systems, Inc. Migration of existing computing systems to cloud computing sites or virtual machines
US9280380B2 (en) * 2012-02-29 2016-03-08 Red Hat Israel, Ltd. Management of I/O reqeusts in virtual machine migration
CN103577265A (zh) * 2012-07-25 2014-02-12 田文洪 一种云计算数据中心离线节能调度的方法与装置
US9600206B2 (en) 2012-08-01 2017-03-21 Microsoft Technology Licensing, Llc Request ordering support when switching virtual disk replication logs
US9740702B2 (en) 2012-12-21 2017-08-22 Commvault Systems, Inc. Systems and methods to identify unprotected virtual machines
CN103051479B (zh) * 2012-12-24 2016-01-20 北京启明星辰信息技术股份有限公司 虚拟机网络控制策略的迁移处理方法及系统
US9378035B2 (en) 2012-12-28 2016-06-28 Commvault Systems, Inc. Systems and methods for repurposing virtual machines
US9338254B2 (en) 2013-01-09 2016-05-10 Microsoft Corporation Service migration across cluster boundaries
CN103116517B (zh) * 2013-01-24 2016-09-14 华为技术有限公司 虚拟化平台下i/o通道的调整方法和调整装置
KR102083289B1 (ko) 2013-01-29 2020-03-02 삼성전자주식회사 마이크로서버 환경의 소프트웨어 이주 방법 및 이를 지원하는 장치
CN103226496B (zh) * 2013-03-15 2016-05-25 杭州华三通信技术有限公司 业务同步处理方法和多核设备
US9720712B2 (en) * 2013-06-03 2017-08-01 Red Hat Israel, Ltd. Physical/virtual device failover with a shared backend
US9530000B2 (en) * 2013-06-14 2016-12-27 Microsoft Technology Licensing, Llc Secure privilege level execution and access protection
US9674105B2 (en) * 2013-06-19 2017-06-06 International Business Machines Corporation Applying a platform code level update to an operational node
CN103473139B (zh) * 2013-09-26 2016-06-01 四川中电启明星信息技术有限公司 虚拟机集群资源分配调度方法
CN103699389B (zh) * 2013-12-30 2016-11-16 北京大学 一种基于编译选项的Linux内核模块关系提取方法
US9772876B2 (en) * 2014-01-06 2017-09-26 International Business Machines Corporation Executing an all-to-allv operation on a parallel computer that includes a plurality of compute nodes
US10140112B2 (en) * 2014-03-28 2018-11-27 Ntt Docomo, Inc. Update management system and update management method
US10013276B2 (en) * 2014-06-20 2018-07-03 Google Llc System and method for live migration of a virtualized networking stack
US9367414B2 (en) 2014-06-27 2016-06-14 Vmware, Inc. Persisting high availability protection state for virtual machines stored on distributed object-based storage
US9513946B2 (en) 2014-06-27 2016-12-06 Vmware, Inc. Maintaining high availability during network partitions for virtual machines stored on distributed object-based storage
US9495259B2 (en) * 2014-06-27 2016-11-15 Vmware, Inc. Orchestrating high availability failover for virtual machines stored on distributed object-based storage
WO2016003454A1 (en) * 2014-07-02 2016-01-07 Hewlett-Packard Development Company, L.P. Managing port connections
CN104158868B (zh) * 2014-08-06 2017-12-08 新华三技术有限公司 一种文件传输方法和管理服务器
US10296320B2 (en) * 2014-09-10 2019-05-21 International Business Machines Corporation Patching systems and applications in a virtualized environment
US9811367B2 (en) * 2014-11-13 2017-11-07 Nsp Usa, Inc. Method and apparatus for combined hardware/software VM migration
CN105677441B (zh) * 2014-11-21 2019-07-09 华为技术有限公司 虚拟机迁移方法、虚拟设施管理器及协调器
US9959157B1 (en) * 2014-12-02 2018-05-01 Amazon Technologies, Inc. Computing instance migration
US10698607B2 (en) * 2015-05-19 2020-06-30 Netapp Inc. Configuration update management
US9563514B2 (en) 2015-06-19 2017-02-07 Commvault Systems, Inc. Assignment of proxies for virtual-machine secondary copy operations including streaming backup jobs
US10084873B2 (en) 2015-06-19 2018-09-25 Commvault Systems, Inc. Assignment of data agent proxies for executing virtual-machine secondary copy operations including streaming backup jobs
US9804873B2 (en) 2015-08-14 2017-10-31 Red Hat Israel, Ltd. Guest management of devices assigned to a virtual machine
US10430221B2 (en) 2015-09-28 2019-10-01 Red Hat Israel, Ltd. Post-copy virtual machine migration with assigned devices
US9639388B2 (en) 2015-09-30 2017-05-02 Red Hat, Inc. Deferred assignment of devices in virtual machine migration
US10136247B2 (en) * 2015-10-20 2018-11-20 Microsoft Technology Licensing, Llc Physical and virtual phone mobility
US9933957B1 (en) * 2015-12-30 2018-04-03 EMC IP Holding Company LLC Non-disruptively migrating virtual disks using virtualization appliance
CN105718310B (zh) * 2016-01-13 2018-09-18 上海应用技术学院 一种云平台下io密集型应用的虚拟机调度方法
US9954958B2 (en) 2016-01-29 2018-04-24 Red Hat, Inc. Shared resource management
US10061528B2 (en) * 2016-05-22 2018-08-28 Vmware, Inc. Disk assignment for multiple distributed computing clusters in a virtualized computing environment
RU2644126C2 (ru) * 2016-05-31 2018-02-07 Некоммерческое Партнерство "Центр Прикладных Исследований Компьютерных Сетей" Способ оптимального планирования использования виртуальных сетевых ресурсов центров обработки данных
US10210326B2 (en) * 2016-06-20 2019-02-19 Vmware, Inc. USB stack isolation for enhanced security
US10423444B2 (en) 2016-08-09 2019-09-24 Red Hat Israel, Ltd. Routing table preservation for virtual machine migration with assigned devices
US10949308B2 (en) 2017-03-15 2021-03-16 Commvault Systems, Inc. Application aware backup of virtual machines
US11108858B2 (en) 2017-03-28 2021-08-31 Commvault Systems, Inc. Archiving mail servers via a simple mail transfer protocol (SMTP) server
US11074138B2 (en) 2017-03-29 2021-07-27 Commvault Systems, Inc. Multi-streaming backup operations for mailboxes
US10853195B2 (en) 2017-03-31 2020-12-01 Commvault Systems, Inc. Granular restoration of virtual machine application data
US11221939B2 (en) 2017-03-31 2022-01-11 Commvault Systems, Inc. Managing data from internet of things devices in a vehicle
US11294786B2 (en) 2017-03-31 2022-04-05 Commvault Systems, Inc. Management of internet of things devices
US10552294B2 (en) 2017-03-31 2020-02-04 Commvault Systems, Inc. Management of internet of things devices
US10191911B2 (en) * 2017-05-27 2019-01-29 Plesk International Gmbh Permanent website hosting on mobile devices
WO2019100014A1 (en) * 2017-11-17 2019-05-23 Duke Manufacturing Co. Food preparation apparatus having a virtual data bus
US10740479B2 (en) * 2018-01-24 2020-08-11 International Business Machines Corporation Controlling access to removable non-volatile memory device using instruction file
US10904330B2 (en) 2018-07-10 2021-01-26 Vmware, Inc. Systems, methods and apparatus to manage services in distributed systems
US11385909B2 (en) * 2020-01-06 2022-07-12 International Business Machines Corporation Cascading data configuration and data migration
US11656951B2 (en) 2020-10-28 2023-05-23 Commvault Systems, Inc. Data loss vulnerability detection

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3653159B2 (ja) * 1997-04-01 2005-05-25 株式会社日立製作所 仮想計算機システム間の仮想計算機移動制御方法
US6854115B1 (en) * 2000-06-02 2005-02-08 Sun Microsystems, Inc. Process persistence in a virtual machine
US6934755B1 (en) * 2000-06-02 2005-08-23 Sun Microsystems, Inc. System and method for migrating processes on a network
JP3877519B2 (ja) * 2000-12-15 2007-02-07 株式会社日立製作所 システム回復方法およびその実施計算機システム並びにその処理プログラムを記録した記録媒体
JP3426216B2 (ja) * 2001-01-19 2003-07-14 三菱電機株式会社 フォールトトレラント計算機システム
US7065549B2 (en) * 2002-03-29 2006-06-20 Illinois Institute Of Technology Communication and process migration protocols for distributed heterogeneous computing
US7313793B2 (en) * 2002-07-11 2007-12-25 Microsoft Corporation Method for forking or migrating a virtual machine
DE20215241U1 (de) * 2002-10-02 2003-02-27 Wang Huo Pia Bürste mit einer austauschbaren Borsteneinheit
US7484208B1 (en) * 2002-12-12 2009-01-27 Michael Nelson Virtual machine migration
US7424710B1 (en) * 2002-12-18 2008-09-09 Vmware, Inc. TCP/IP offloading for virtual machines
JP4256693B2 (ja) * 2003-02-18 2009-04-22 株式会社日立製作所 計算機システム、i/oデバイス及びi/oデバイスの仮想共有方法
US7114153B2 (en) * 2003-09-10 2006-09-26 Qualcomm Inc. Method and apparatus for continuation-passing in a virtual machine
US7552436B2 (en) * 2003-11-25 2009-06-23 International Business Machines Memory mapped input/output virtualization
US7467381B2 (en) 2003-12-16 2008-12-16 Intel Corporation Resource partitioning and direct access utilizing hardware support for virtualization
US7971203B2 (en) * 2004-03-05 2011-06-28 Intel Corporation Method, apparatus and system for dynamically reassigning a physical device from one virtual machine to another
US20050216920A1 (en) 2004-03-24 2005-09-29 Vijay Tewari Use of a virtual machine to emulate a hardware device
US8156490B2 (en) * 2004-05-08 2012-04-10 International Business Machines Corporation Dynamic migration of virtual machine computer programs upon satisfaction of conditions
US7257811B2 (en) * 2004-05-11 2007-08-14 International Business Machines Corporation System, method and program to migrate a virtual machine
US7383405B2 (en) 2004-06-30 2008-06-03 Microsoft Corporation Systems and methods for voluntary migration of a virtual machine between hosts with common storage connectivity
US7464019B1 (en) * 2004-07-14 2008-12-09 Unisys Corporation Method of resolving conflicts of virtualized disks between two operating environments
US7660910B2 (en) * 2004-08-30 2010-02-09 Lantronix, Inc. Secure communication port redirector
US20060184938A1 (en) 2005-02-17 2006-08-17 Intel Corporation Method, apparatus and system for dynamically reassigning memory from one virtual machine to another
US7730486B2 (en) * 2005-02-28 2010-06-01 Hewlett-Packard Development Company, L.P. System and method for migrating virtual machines on cluster systems
US7797707B2 (en) * 2005-03-02 2010-09-14 Hewlett-Packard Development Company, L.P. System and method for attributing to a corresponding virtual machine CPU usage of a domain in which a shared resource's device driver resides
US7581229B2 (en) * 2005-03-11 2009-08-25 Microsoft Corporation Systems and methods for supporting device access from multiple operating systems
CN100367210C (zh) * 2005-06-16 2008-02-06 武汉理工大学 构建单机环境下的分布式应用系统的方法
US20070039050A1 (en) * 2005-08-15 2007-02-15 Vladimir Aksenov Web-based data collection using data collection devices
US8327353B2 (en) * 2005-08-30 2012-12-04 Microsoft Corporation Hierarchical virtualization with a multi-level virtualization mechanism
US20070143315A1 (en) * 2005-12-21 2007-06-21 Alan Stone Inter-partition communication in a virtualization environment
US7984438B2 (en) * 2006-02-08 2011-07-19 Microsoft Corporation Virtual machine transitioning from emulating mode to enlightened mode
US7788665B2 (en) * 2006-02-28 2010-08-31 Microsoft Corporation Migrating a virtual machine that owns a resource such as a hardware device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150004854A (ko) * 2012-04-19 2015-01-13 유니베르시타트 폴리테크니카 데 카탈루냐 컴퓨터 시스템의 하드웨어 자원 사용을 조정하기 위한 방법, 시스템 및 실행가능 프로그램 코드

Also Published As

Publication number Publication date
EP1989635A4 (en) 2012-05-09
AU2007221339A1 (en) 2007-09-07
CA2638765A1 (en) 2007-09-07
RU2436149C2 (ru) 2011-12-10
RU2008135084A (ru) 2010-03-10
US20070204265A1 (en) 2007-08-30
US20170161103A1 (en) 2017-06-08
WO2007100508A1 (en) 2007-09-07
BRPI0708338A2 (pt) 2011-05-24
US8769530B2 (en) 2014-07-01
US20140317621A1 (en) 2014-10-23
CN101390079B (zh) 2010-12-08
BRPI0708338A8 (pt) 2016-12-13
NO20083314L (no) 2008-07-31
US7788665B2 (en) 2010-08-31
US9535745B2 (en) 2017-01-03
JP2009528620A (ja) 2009-08-06
EP1989635A1 (en) 2008-11-12
JP5214473B2 (ja) 2013-06-19
EP1989635B1 (en) 2016-07-13
CN101390079A (zh) 2009-03-18
US10552208B2 (en) 2020-02-04
US20100325282A1 (en) 2010-12-23

Similar Documents

Publication Publication Date Title
KR20080106908A (ko) 하드웨어 장치와 같은 자원을 소유하는 가상 컴퓨터를 이동시키기 위해 이용될 수 있는 컴퓨팅 시스템 및 방법
US7984438B2 (en) Virtual machine transitioning from emulating mode to enlightened mode
US9367947B2 (en) Remote rendering of three-dimensional images using virtual machines
JP4942966B2 (ja) パーティションバス
US8387114B2 (en) Secure workload partitioning in a server environment
CN105122210B (zh) Gpu虚拟化的实现方法及相关装置和系统
US8006254B2 (en) Bequeathing privilege to a dynamically loaded module
US20070253436A1 (en) Communicating in a virtual environment
US7941800B2 (en) Transferring data between virtual machines by way of virtual machine bus in pipe mode
JP2006164266A (ja) オペレーティングシステムのパフォーマンスの改善
US8442939B2 (en) File sharing method, computer system, and job scheduler
US20070169012A1 (en) Asynchronous just-in-time compilation
US20100162236A1 (en) Using Stored State To Instantiate A Virtual Computer
US7587722B2 (en) Extending operating system subsystems
US7409691B2 (en) Extending operating system subsystems
CN112470443B (zh) 将复位向的生物辨识装置隔离到远程会话
US11003488B2 (en) Memory-fabric-based processor context switching system
JP2009251735A (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