KR20070032734A - 다수의 클라이언트 간의 물리 장치 공유 - Google Patents

다수의 클라이언트 간의 물리 장치 공유 Download PDF

Info

Publication number
KR20070032734A
KR20070032734A KR1020067027670A KR20067027670A KR20070032734A KR 20070032734 A KR20070032734 A KR 20070032734A KR 1020067027670 A KR1020067027670 A KR 1020067027670A KR 20067027670 A KR20067027670 A KR 20067027670A KR 20070032734 A KR20070032734 A KR 20070032734A
Authority
KR
South Korea
Prior art keywords
core
client
interface
circuitry
function
Prior art date
Application number
KR1020067027670A
Other languages
English (en)
Other versions
KR100893541B1 (ko
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 KR20070032734A publication Critical patent/KR20070032734A/ko
Application granted granted Critical
Publication of KR100893541B1 publication Critical patent/KR100893541B1/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Multi Processors (AREA)
  • Storage Device Security (AREA)
  • Information Transfer Systems (AREA)
  • Hardware Redundancy (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

물리 장치는 컴퓨터 시스템의 코어 I/O 기능을 수행하는 코어 기능 회로부(core function circuitry)를 갖는다. 코어 기능 회로부에 액세스하는 다수의 클라이언트 인터페이스 회로가 제공되며, 이들 각각은 시스템에서 소프트웨어 클라이언트에게 완전한 장치처럼 보인다. 멀티플렉싱 회로부는 클라이언트 인터페이스를 코어 I/O 기능에 연결시킨다. 다른 실시예들에 대해서도 기술되고 청구된다.
물리 장치, 코어 기능 회로부, 클라이언트 인터페이스 회로, 소프트웨어 클라이언트(VM 클라이언트)

Description

다수의 클라이언트 간의 물리 장치 공유{SHARING A PHYSICAL DEVICE AMONG MULTIPLE CLIENTS}
본 발명의 일 실시예는 일반적으로 컴퓨터 시스템에 관한 것으로서, 상세하게는 다수의 프로그램에 의해 물리 장치가 공유될 수 있게 해주는 가상화 기술에 관한 것이다.
서로 다른 컴퓨터 운영 체제(OS) 프로그램들(예를 들어, LINUX, MACINTOSH, MICROSOFT WINDOWS)의 보급에 따라, 소비자들은 안타깝게도 동일한 OS 상에서 실행되도록 설계되어 있지 않은 광범위한 서로 다른 종류의 애플리케이션 프로그램을 제공받는다. 가상화 기술은 가상 머신 모니터(virtual machine monitor, VMM)를 실행시키는 단일의 호스트 컴퓨터로 하여금 호스트의 다수의 추상화를 제공할 수 있게 해주며, 따라서 호스트의 기본적 하드웨어가 하나 이상의 독립적으로 동작하는 가상 머신(virtual machine, VM)처럼 보인다. 각각의 VM은 그 자신의 운영 체제(OS) 및/또는 하나 이상의 소프트웨어 애플리케이션을 실행하는 완비된 플랫폼(self-contained platform)으로서 기능할 수 있다. VMM은 호스트 상에서의 자원의 할당을 관리하고 또 라운드-로빈 또는 다른 미리 정해진 방식에 따라 여러가지 가상 머신들 간에 멀티플렉싱하기 위해 필요에 따라 컨텍스트 전환(context switching)을 수행한다. 예를 들어, VM 환경에서, 각각의 OS는 그 자신의 하드웨어 플랫폼 또는 "베어 메탈(bare metal)" 상에서 실행되고 있는 것으로 착각하고 있다. 각각의 OS는 키보드 제어기, 하드디스크 드라이브 제어기, 네트워크 인터페이스 제어기, 및 그래픽 디스플레이 어댑터 등의 이용가능한 I/O 장치의 전체 세트를 "본다".
이하의 기술들은 운영 체제가 I/O 장치와 통신을 할 때 사용된다. OS가 실제로 베어 메탈 상에서 실행되고 있는 경우, 물리 I/O 장치의 하드웨어 클라이언트 인터페이스는 버스를 통해 노출된다. 클라이언트 인터페이스는 메모리 매핑 레지스터(memory-mapped register) 세트[메모리 매핑 I/O(memory mapped I/O), MMIO] 또는 I/O 포트(IOP)일 수 있고, 메모리 매핑 I/O 주소 공간을 통해 또는 컴퓨터 시스템의 I/O 주소 공간을 통해 각각 어드레싱될 수 있다. 그러면, 프로세서는 할당된 주소 공간으로의 OS 트랜잭션을 버스를 통해 발행함으로써 물리 장치 내의 장소(locations)의 읽기 또는 쓰기를 할 수 있다.
한편, 가상화에 있어서, (다수의 게스트 OS를 실행하기 위해) 다수의 VM이 있을 수 있다. 그 경우에, 게스트에 I/O 능력을 제공하기 위해 2가지 기본 기술이 사용된다. 첫째, VM은 장치로의 독점적 액세스를 제공받는다. VMM은 VM에 의한 MMIO 또는 IOP로의 모든 액세스가 목표 I/O 장치(targeted I/O device)로 직접 전송되도록 준비를 한다. 이와 같이, VM은 장치와 통신하기 위한 최대 성능 경로를 갖는다. 이 기술은 때로는 장치 할당(device assignment)이라고 한다. 그의 주된 한계는 I/O 장치가 단일의 VM에만 할당될 수 있다는 것이다.
I/O 장치가 다수의 VM 간에 어떤 방식으로 공유되는 것이 요망되는 경우, 통상적인 기술은 VMM이 물리 I/O 장치를 하나 이상의 "가상 장치"로서 에뮬레이션하는 것이다. 그러면, 물리 장치로의 특정의 OS로부터의 트랜잭션은 VMM에 의해 가로채 진다(intercept). 따라서, VMM은 장치를 에뮬레이션하기로 선택하거나(예를 들어 네트워크 인터페이스를 사용하여 직렬 포트를 시뮬레이션하는 것에 의함) 여러가지 클라이언트 VM으로부터의 요청들을 단일의 I/O 장치 상으로 멀티플렉싱할 수 있다(예를 들어, 하드 드라이브를 다수의 가상 드라이브로 분할함).
가상화 프로세스를 보는 다른 방법은 다음과 같다. VM은 가상 장치 및 물리 장치 둘다를 포함할 수 있는 I/O 장치 세트에 액세스할 필요가 있다. 물리 장치가 단일의 VM에 할당되는 경우, 그 장치는 나머지 가상 머신들이 이용할 수 없다. 따라서, 물리 장치가 2개 이상의 VM에 의해 공유될 필요가 있는 경우, VMM은 일반적으로 각각의 VM에 대한 가상 장치를 구현한다. 이어서, VMM은 가상 장치에 의한 물리 장치의 동일한 하드웨어 클라이언트 인터페이스의 액세스를 중재한다.
본 발명의 실시예들은 유사한 참조 번호가 유사한 구성요소를 나타내고 있는 첨부 도면의 도면들에 제한이 아닌 예로서 도시되어 있다. 유의해야 할 점은 본 명세서에서 발명의 "일" 실시예는 반드시 동일한 실시예를 말하는 것이 아니며, 이는 적어도 하나를 의미한다.
도 1은 "설계에 의해 공유가능한(sharable by design)" 물리 장치의 블록도.
도 2는 공유가능 장치를 갖는, 가상화 프로세스를 실행하고 있는 컴퓨터 시 스템의 블록도.
도 3은 컴퓨터 시스템에서 공유가능 I/O 장치를 찾아내는 것을 수반하는 가상화 프로세스의 흐름도.
도 1은 "설계에 의해 공유가능한" 물리 장치의 블록도를 나타낸 것이다. 이 공유가능 장치(100)는, 이 예에서, 컴퓨터 시스템의 코어 I/O 기능을 수행하게 되는 코어 기능 회로부(104)를 갖는다. 코어 I/O 기능의 예는 그래픽 어댑터의 경우에 이미지 렌더링, 및 네트워크 인터페이스 제어기의 전송 제어 프로토콜/인터넷 프로토콜(TCP/IP) 패킷 오프로딩(packet offloading)을 포함한다. 코어 I/O 기능 회로부는 하드와이어드(hardwired) 및/또는 프로그램가능 로직의 조합 및 프로그램된 프로세서 또는 당업자에게 잘 알려져 있는 임의의 다른 기술로서 구현될 수 있다.
이 시스템에서의 소프트웨어 가상 머신(VM) 클라이언트(108)는 다수의 클라이언트 인터페이스 회로(112)(또는 간단히 클라이언트 인터페이스(112)라고 함) 중 임의의 것을 통해 코어 기능 회로부(104)에 액세스한다. VM 클라이언트(108)는 장치 드라이버를 포함하는 MICROSOFT WINDOWS 또는 LINUX 등의 운영 체제일 수 있다. 클라이언트 인터페이스(112)는, 클라이언트 인터페이스를 통해 VM 클라이언트에 의한 코어 기능의 공유를 가능하게 해주기 위해, 멀티플렉싱 회로(116)를 통해 코어 기능 회로부(104)에 연결된다. 멀티플렉싱 회로(116)는 한번에 코어 기능 회로부를 클라이언트 인터페이스(112) 중 어느 하나에 접속시키는 데 필요한 멀티플렉서 로직 및 신호 라인 둘다를 포함할 수 있다.
각각의 클라이언트 인터페이스(112)는 VM 클라이언트(108) 등의 시스템에서의 소프트웨어 클라이언트에게 완전하고 개별적인 장치처럼 보인다. 이 인터페이스(112)는 그가 상주하고 있는 버스에 의해 요구되는 기능의 모든 측면을 구현할 수 있다. 클라이언트 인터페이스(112)는 장치에서의 논리 시그널링과 외부 버스 시그널링 간의 변환을 행하는 아날로그 회로를 포함할 수 있다. 외부 버스가 직렬의 포인트-투-포인트 유형인 경우, 언제라도 레지스터 세트 중 하나를 버스의 전송 매체에 접속하기 위해 멀티플렉싱 스위치 회로가 부가될 수 있다.
본 발명의 어떤 실시예에서, 각각의 클라이언트 인터페이스(112)는 (물리 장치가 연결되어 있는) 동일한 버스를 통해 동일한 PCI(Peripheral Components Interconnect)-호환 구성 메카니즘 및 동일한 기능 발견 메카니즘을 지원할 수 있다. 그렇지만, 이러한 실시예에서, 각각의 클라이언트 인터페이스는 다른 PCI 장치 식별 번호를 제공하게 된다(왜냐하면 각각이 사실상 다른 장치를 나타내기 때문임). 게다가, 각각의 클라이언트 인터페이스는 개별적인 PCI-호환 기능 세트를 식별한다. 클라이언트 인터페이스는 물론 예를 들어 컴퓨터 시스템의 구성요소들을 접속시키는 데 사용되는 다른 유형의 I/O 또는 버스 통신 프로토콜에 부합하도록 설계될 수 있다.
각각의 클라이언트 인터페이스는 인터페이스에 관한 정보를 획득하고 그 인터페이스를 구성하기 위해 소프트웨어 클라이언트에 의해 사용될 개별적인 레지스터 세트를 포함할 수 있다. 각각의 레지스터 세트는, 버스가 직렬이거나 병렬이거 나 또 멀티-드롭(multi-drop)이거나 포인트-투-포인트(point-to-point)이거나에 상관없이, 동일한 버스를 통해 물리 장치의 외부로부터 액세스가능하다. 예를 들어, 플러그 앤 플레이 서브시스템은 MMIO 영역의 베이스 주소(base address)를 정의하기 위해 PCI 구성 레지스터를 사용할 수 있다. PCI-호환 구성 레지스터 세트는 이하의 공지된 레지스터, 즉 벤더 ID(Vendor ID), 장치 ID(Device ID)(구성 레지스터 주소의 오프셋을 결정함), 개정판 ID(Revision ID), 클래스 코드(Class Code), 서브 시스템 벤더 ID(Subsystem Vendor ID), 및 서브시스템 ID(Subsystem ID) 중 일부 또는 그 전부를 포함할 수 있다. 장치에 대해 어느 드라이버를 로드할지를 결정하기 위해 운영 체제에 의해 일반적으로 이들 레지스터의 조합이 사용된다. 공유가능 장치에서 구현될 때, (주어진 클라이언트 인터페이스의) 각각의 레지스터 세트는 서로 다른 오프셋을 제외하고는 동일한 주소 범위에 있을 수 있다.
베이스 주소 레지스터(Base Address Register, BAR)를 설정하는 일은 장치에 의해 사용되는 베이스 주소를 지정하는 데 사용될 수 있다. 게스트가 BAR를 설정하려고 시도할 때, VMM은 이 요청을 가로채도록 설계될 수 있고 또 그것을 수정할 수 있다. 이렇게 하는 이유가 몇가지 있다. 첫째, 2개의 VM 각각이 무심코 인터페이스에서의 BAR을 동일한 값으로 설정하려고 할 수 있다. VMM은 이것이 확실히 일어나지 않도록 설계될 수 있다. 둘째, 각각의 VM은 그가 제로-베이스 주소 공간(zero-based address space)(소위 게스트 물리 주소(Guest Physical Address), 즉 GPA)에서 실행하고 있는 것으로 생각할 수 있다. BAR가 게스트에 의해 설정될 때, 제로-베이스 GPA는 BAR에 로드되기 이전에 실제의 호스트 물리 주소(Host Physical Address, HPA)로 변환되어야만 한다. 게다가, VMM은 이 변환을 반영하기 위해 게스트 VM의 메모리 관리 테이블을 수정해야만 한다.
공유가능 장치(100)는 훨씬 더 바람직한 해결책일 수 있으며, 이 경우 코어 기능 회로부(104)는 비교적 복잡하고 및/또는 커지며, 따라서 이를 복제(duplicate)하는 것은 아주 비용이 많이 들게 된다(또 복제로부터의 병렬 처리 성능 이득이 필요하지 않다). 다른 유익한 사용은 I/O 가상화 실시예(도 2를 참조하여 이하에서 기술함)에서 있다. 그 경우에, 공유가능 장치(100)는 가상 머신 모니터(VMM)로 하여금 모든 트랜잭션에 관여하지 않아도 될 수 있게 해주며, 그에 의해 그래픽 및 네트워킹 트랜잭션(대기 시간에 특히 민감함)의 대기 시간을 단축시킨다. 게다가, 어떤 실시예들에서, VMM의 설계 및 구현은 실질적으로 덜 복잡할 수 있으며, 그 결과 소프트웨어의 보다 안정된 동작이 얻어진다. 그러한 이유는 다수의 클라이언트 인터페이스를 가지면 VMM이 대응 가상 장치를 지원할 필요가 없게 해주기 때문일 수 있다(예를 들어, VMM은 장치 자체도 각각의 가상 장치에 대한 PCI 구성 공간도 에뮬레이션할 필요가 없다).
소프트웨어 클라이언트는 공유가능 장치의 동일한 주요 기능을 호출하기 위해 클라이언트 인터페이스(112) 중 어느 하나를 사용할 수 있다. 이 주요 기능은 디스플레이 그래픽 어댑터 등의 I/O 장치의 기능, 예를 들어 비트맵 디스플레이 이미지를 생성하는 이미지 렌더링일 수 있다. 그 경우에, 공유가능 장치는 컴퓨터 시스템 칩셋의 그래픽 I/O 섹션의 일부로서 또는 단일의 그래픽 어댑터 카드로서 구현될 수 있다. 후자의 경우에서의 클라이언트 인터페이스는 또한 카드를 컴퓨터 시스템의 버스에 분리가능하게 접속시키는 전기 커넥터를 포함할 수 있다. 그 경우에서의 인터페이스들 모두는 동일한 커넥터를 통해 액세스될 수 있다.
다른 주요 기능은 네트워크 인터페이스 제어기(NIC)의 기능일 수 있다. 이러한 실시예에서, 각각의 소프트웨어 클라이언트(예를 들어, VM 클라이언트(108))는 네트워크에서의 개별적인 종단 노드(end node)일 수 있다. VM 클라이언트(108)는 전송 제어 프로토콜/인터넷 프로토콜(TCP/IP) 패킷 오프로딩(나가는 패킷의 생성 및 들어오는 패킷의 디코딩) 및 매체 접근 제어(MAC) 주소 필터링 등의 주요 기능을 통해 네트워크와 통신하게 된다. 그 경우에, 공유가능 장치는 단일의 네트워크 인터페이스 제어기 카드일 수 있다. 각각의 클라이언트 인터페이스는 각각의 클라이언트 인터페이스에 대한 개별적인 MAC 주소를 포함하는 완전한 또는 완전히 기능하는 NIC처럼 행동한다. 들어오는 패킷은 정확한 클라이언트 인터페이스로, 그 다음에 대응 VM 클라이언트로 자동적으로 라우팅된다. 이것은 각각의 들어오는 패킷을 평가하기 위해 CPU 사이클(VMM)을 소비할 필요없이, 그리고 패킷이 시스템에서의 VM으로 보내지는 것인지 여부에 상관없이 CPU가 들어오는 패킷 각각을 검사하는 엉망인 상황에 NIC가 놓일 필요없이 달성된다.
유의할 점은 공유가능 장치(100)의 클라이언트 인터페이스가 소프트웨어 클라이언트에게 완전하고 개별적인 장치인 것처럼 보일 수 있지만, 이들이 동일한 장치일 필요가 없다는 것이다. 보다 일반적으로, 공유가능 장치(100)는, 그의 클라이언트 인터페이스(112) 중 하나 이상이 VM 클라이언트에 서로 다른 장치 능력 세트(코어 기능(104)에 구현됨)를 제공하는 경우, 이질적인 인터페이스를 가질 수 있 다. 예를 들어, 공유가능 장치가 디스플레이 그래픽 어댑터인 경우를 생각해보자. 그의 클라이언트 인터페이스 중 하나는 소프트웨어 클라이언트에게 이전 버전의 특정의 장치(예를 들어, 레거시 장치)처럼 보일 수 있는 반면, 다른 것은 소프트웨어 클라이언트에게 새 버전인 것처럼 보인다. 다른 예로서, 코어 I/O 기능이 다수의 프로그램가능 컴퓨팅 유닛을 갖는 확장가능 컴퓨팅 아키텍처로서 구현되어 있는 그래픽 어댑터를 생각해보자. 클라이언트 인터페이스 중 하나는, 동일한 유형이지만 더욱 강력한 I/O 기능을 제공하기 위해, 다른 것보다 더 큰 컴퓨팅 유닛들의 서브셋에 액세스하도록 설계 또는 프로그램될 수 있다.
다른 예에서, 공유가능 장치(100)는 그의 클라이언트 인터페이스 중 일부가 보다 완전해 지도록 할 수 있는데, 예를 들어 더욱 고성능의 기능(예를 들어, 코어 기능에서의 다른 유형의 그래픽 렌더링 기능)을 보일 수 있다. 인터페이스가 보다 복잡해지면 그에 대응하여 그와 연관된 장치 드라이버 프로그램이 보다 복잡하게 될 가능성이 많다. 따라서, 보다 복잡한 장치 드라이버가 버그(bug)나 루프 홀(loop hole)을 가질 가능성이 많고 보안 분석에 덜 구속받기 때문에, 공격에 더 취약한 것으로 생각된다. 따라서, 그 경우의 인터페이스는 그의 복잡성으로 인해 비신뢰(untrusted) 또는 비보안(unsecure)이라고 한다. 동시에, 공유가능 장치는 더 낮은 성능 버전의 주요 I/O 기능(예를 들어, 기본적인 이미지 렌더링 및 디스플레이만)을 보여주는 하나 이상의 다른 클라이언트 인터페이스를 가질 수 있다. 후자의 인터페이스는 그 결과 보다 신뢰되거나 보다 안전한 것으로 생각된다.
예를 들어, 인터페이스는 (그의 복잡성이나 고유의 설계 덕분에) 사용자의 비밀 데이터(예를 들어, 사용자의 사회 보장 번호 및 재무 정보 등의 시스템의 사용자로부터 비롯되고 그 사용자에 의해 "소유된" 데이터)를 보호하기 위해 의존할 만한 충분히 신뢰되는 것으로 생각될 수 있다. (그래픽 장치로의) 이 인터페이스는 전적으로 개인 회계(personal accounting) 및 세금 계산 소프트웨어(tax preparation software) 등의 어떤 애플리케이션 프로그램의 출력을 디스플레이하는 데만 사용될 수 있다. 이것은 예를 들어 시스템에 침입하여 사용자에 관한 비밀 개인 정보를 수집하려고 시도하는 제3자의 악의적 소프트웨어 컴포넌트(rogue software component)에 의한 공격을 무력화시키는 데 도움이 된다.
다른 시나리오로서, 향상된 컨텐츠 보호를 위해, 예를 들어 시스템의 사용자가 코어 기능의 출력에 나타나는 제3자의 저작권 보호된 데이터를 캡처하는 것을 방지하기 위해 덜 복잡한 인터페이스가 사용될 수 있다. 예를 들어, 사용자는 컨텐츠 보호된 인터페이스에만 연관되어 있는 특정의 VM 클라이언트 상에서 DVD 플레이어 애플리케이션 프로그램을 실행하고 있을 수 있으며, 따라서 영화 데이터 스트림이 그 인터페이스에 의해서만 렌더링된다. 다른 대안으로서, 컨텐츠 보호 클라이언트 인터페이스는 중간의 장치 드라이버 계층 없이 애플리케이션 프로그램에 의해 직접 액세스되도록 설계될 수 있다. 이 유형의 보다 간단한 인터페이스는 애플리케이션 프로그램과 코어 그래픽 렌더링 및 디스플레이 기능 간에 더 적은 경로를 제공함으로써 공격의 기회를 훨씬 더 감소시킬 수 있다.
다수의 클라이언트 인터페이스를 갖는 단일의 공유가능 장치(100)는 그에 활성 인터페이스의 수를 변경하는 능력을 부가함으로써 추가적으로 향상될 수 있다. 이 부가적인 능력은 서비스 VM(130) 또는 VMM(224)(이하에서 도 2와 관련하여 설명함) 등의 시스템에서 실행되는 어떤 소프트웨어에, 클라이언트 인터페이스의 어떤 것은 인에이블/디스에이블시키고 다른 것은 그렇게 하지 않는 구성 레지스터로의 액세스를 제공하도록 설계될 수 있다. 이것은 예를 들어 시스템에서 실행되는 VM 클라이언트의 요구에 더 잘 부응하기 위해 I/O 장치 내의 자원의 할당을 제어하는 데 도움이 된다.
도 1에 도시된 공유가능 장치(100)는 또한 하나 이상의 월드 인터페이스 회로(world interface circuit)(또는, 간단히 월드 인터페이스라고 함)(120)를 포함할 수 있다. 월드 인터페이스는 2개 이상인 경우 부가의 멀티플렉싱 회로(122)를 통해 코어 기능 회로부(104)에 연결된다. 각각의 월드 인터페이스(120)는 코어 기능 회로부(104)에서의 시그널링과 장치의 외부의 시그널링 간의 변환을 행하는 역할을 하는 디지털 및/또는 아날로그 회로를 가질 수 있다. 월드 인터페이스는 유선 또는 무선 링크를 통해 디스플레이 모니터 또는 디지털 카메라 등의 컴퓨터 시스템 주변 장치와 통신하는 데 필요한 커넥터 및/또는 다른 하드웨어를 포함할 수 있다. 네트워크 인터페이스 제어기의 경우에, 월드 인터페이스는 근거리 통신망(LAN) 노드 상호접속 매체에 접속하는 네트워크 포트라고 할 수 있다. 이 포트는 LAN 케이블(예를 들어, 이더넷 케이블)과 연결되는 또는 예를 들어 무선 액세스 포인트와 통신하는 회로 또는 무선 송신기 및 수신기를 가질 수 있다.
어떤 실시예들에서, 공유가능 장치(100)는 서비스 VM(130)이라고 하는 시스템 내의 소프트웨어에 의해 사용되는 제어 인터페이스 회로(또는, 간단히 제어 인 터페이스라고 함)(126)를 구비할 수 있다. 제어 인터페이스(126)는 다양한 서로 다른 목적을 위해 사용될 수 있다. 예를 들어, 이는 서로 다른 클라이언트로부터의 데이터를 합성하는(예를 들어, 동일한 디스플레이 화면 상에서 각각의 VM의 출력이 어디에 디스플레이되는지를 제어하는) 메카니즘일 수 있다. 이 제어 인터페이스는 또한 다수의 VM 클라이언트로부터의 명령들이 충돌하는 것을 해결하는 데 사용될 수 있다. 예를 들어, 이는 (그 각각의 클라이언트 인터페이스(112)를 통한) VM 클라이언트(108)에 의한 코어 기능으로의 액세스를 제어하는 다른 방식을 제공할 수 있다. 예로서, 공유가능 그래픽 어댑터에서의 제어 인터페이스는 서비스 VM(130)이 다수의 창을 디스플레이하기 위해 특정의 스케쥴링 정책에 따라 장치를 프로그램할 수 있도록 설계될 수 있으며, 예를 들어, 이는 주어진 시간 구간 동안 모든 VM 클라이언트에 똑같은 우선순위를 부여하지 않으며, 이는 창은 코어 기능 내의 기능 블록들의 전부가 아닌 일부를 특정의 VM 클라이언트에 할당한다. 이러한 실시예에서, 공유가능 장치는 또한 각각의 클라이언트 인터페이스(112)마다 하나씩, 클라이언트 인터페이스(112)와 코어 기능 회로부(104) 사이에 연결되어 있는 작업부하 큐(workload queue)(도시 생략)를 구비할 수 있다. 이 제어 인터페이스는 서비스 VM으로 하여금 큐 상태(예를 들어, 그의 깊이, 얼마나 채워져 있는지 또는 비어 있는지, 그의 우선순위, 기타 등등)의 함수로서 코어 기능 회로부에 명령어를 피드하는 큐를 선택할 수 있게 해준다. 제어 인터페이스는 또한 그래픽이 어떻게 렌더링되고 디스플레이되는지, 예를 들어 각각의 VM이 개별적인 모니터에 할당되는 다중-모니터(multi-monitor)를 구성하거나 또는 동일한 모니터 내에 다중 -창(multi-window)을 구성하도록 사용될 수 있다. 그래픽 어댑터의 전력 소모도 역시 제어 인터페이스를 통해 관리될 수 있다. 유의할 점은, 어떤 경우에, 공유가능 장치는 제어 인터페이스가 없어도 실행한다는 것이다. 예를 들어, 공유가능 NIC는 그의 서로 다른 클라이언트 인터페이스에 공평하게 서비스하는 또는 적절하다면 심지어 불공평하게 서비스하는 중재 정책으로 단지 한번 프로그램(또는 아마도 하드와이어드(hardwired))될 수 있다.
NIC의 경우에, 제어 인터페이스는 서비스 VM으로 하여금 VM 클라이언트 당(on a per-VM client basis) 할당된 또는 예비된 대역폭을 변경할 수 있게 해줄 수 있다. 사운드 카드의 경우에, 제어 인터페이스는 서비스 VM으로 하여금 서로 다른 VM 클라이언트 소스로부터의 오디오의 믹싱을 제어할 수 있게 해줄 수 있다. 또 다른 가능성은 비디오 및/또는 오디오 캡처 스트림이 특정의 VM 클라이언트로 라우팅될 수 있게 해주기 위해 제어 인터페이스를 사용하는 것이다. 예를 들어, 제어 인터페이스는, 소프트웨어가 다수의 서로 다른 매체 접근 제어(MAC) 각각과 그들의 각 VM 클라이언트와의 연관성을 나타내는 곳일 수 있다.
이제 도 2를 참조하면, 공유가능 장치(100)를 가지며 또 가상화 프로세스를 실행하고 있는 컴퓨터 시스템의 블록도가 도시되어 있다. 공유가능 장치(100)는 시스템의 물리적 호스트 하드웨어(204)(또한 베어 메탈(bare metal)이라고도 함)의 일부이다. 호스트 하드웨어(204)는 키보드 제어기, 하드 디스크 드라이브 제어기, 및 그래픽 디스플레이 어댑터 등의 이용가능한 I/O 장치 세트(도시 생략)를 포함할 수 있다. 이들은 사용자 입력 장치(208)(이 예에서 키보드/마우스 조합으로 나타 냄), 비휘발성 대용량 저장 장치(여기서 하드 디스크 드라이브(212)로 나타냄), 디스플레이 모니터(214), 및 NIC 어댑터 카드(216) 등의 주변 장치와 통신하는 역할을 한다.
여기서 가상화는 가상 머신 모니터(VMM)(224)라고 하는 프로그램을 사용하여 달성된다. VMM(224)은 호스트 하드웨어 플랫폼(204)을 다수의 분리된 가상 머신(VM)(228)으로 "분할"한다. 각각의 VM(228)은, 그 안에서 실행되는 소프트웨어에게, 본질적으로 도시된 바와 같은 I/O 장치 및 주변 장치를 포함하는 완전한 컴퓨터 시스템처럼 보인다. VMM(224)은 각각의 VM(228)이 실행되고 있는 환경을 제공하는 일을 맡고 있으며, VM들 간의 분리를 유지시키기 위해 사용될 수 있다(여기서의 다른 대안은 분리를 유지시키기 위해 하드웨어 CPU 개량의 사용이다). 각각의 VM(228)에서 실행되는 소프트웨어는 서로 다른 게스트 OS(232)를 포함할 수 있다. VM 환경에서, 각각의 게스트 OS(232)는 그가 그 자신의 하드웨어 플랫폼 상에서 실행되고 있는 것으로 착각하고 있다. 따라서, 게스트 OS(232)는, 다른 운영 체제 역시 동일한 시스템에서 실행되고 있다는 것, 또는 기본 컴퓨터 시스템이 분할되어 있다는 것을 알지 못할 수 있다.
가상화 프로세스는 애플리케이션 프로그램(236)으로 하여금, 그 각각의 게스트 운영 체제(232) 상부 위의, 서로 다른 VM(228)에서 실행될 수 있게 해준다. 애플리케이션 프로그램(236)은 개별적인 창(예를 들어, 각각의 VM마다 하나씩)을 사용하여 단일의 디스플레이 모니터(214) 상에 그의 정보를 동시에 디스플레이할 수 있다. 이것은 이 예에서 그래픽 어댑터인 공유가능 장치(100)에 의해 가능하게 된 다. 유의할 점은 VMM(224)이 이러한 공유가능 장치(100)가 존재함을 알고 있으며 따라서 (예를 들어, 서비스 VM(130)을 통해, 도 1 참조) 그것을 관리할 수 있도록 설계되어 있다는 것이다. 그렇지만, 물리 장치를 공유하기 위한 순수 소프트웨어 기술의 많은 단점은 회피된다. 예를 들어, 물리 장치를 적절히 공유할 수 있도록 하기 위해 그 물리 장치가 어떻게 동작하는지를 상세히 이해해야만 하는 꽤 복잡한 VMM을 설계 및 구현할 필요가 없다. 각각의 게스트 OS(232)에 의해 즉시 인식가능한 하드웨어로 된 다수의 클라이언트 인터페이스의 이용가능성에 의해 이렇게 하지 않아도 될 수 있다.
공유가능 장치 개념의 어떤 부가적인 이점은 이하의 예에 의해 설명될 수 있다. 멀티프로세서 시스템 또는 (스케쥴링 의미에서 뿐만 아니라 충분한 실행 능력이 남아 있기 때문에) 단일의 CPU가 2개 이상의 CPU인 것처럼 동작하는 하이퍼-쓰레드 방식의 중앙 처리 장치(CPU)를 갖는 시스템을 생각해보자. 프로세서(1)는 VM0를 위한 코드를 실행하고 있고, 프로세서(2)는 VM1을 위한 코드를 실행하고 있다. 다음에, 각각의 VM이 동일한 I/O 장치에 동시에 액세스하기를 원하는 것으로 가정한다. 공유불가능 I/O 장치는 임의의 시점에서 하나의 컨텍스트에서만 동작하고 있을 수 있다. 따라서, VM들 중 단지 하나만이 장치에 액세스할 수 있다. 나머지 VM들이 장치에 액세스하려는 시도하면 그 결과 잘못된 컨텍스트에서 장치에 액세스하게 된다.
본 발명의 실시예는 (VM과 하드웨어 클라이언트 인터페이스 간의) "대화(conversation)" 및 (코어 기능 회로부에 의해 행해지는) "작업(work)"을 분 리(de-coupling)시킬 수 있으며, 그에 따라 상기한 컨텍스트 전환이 필요하지 않을 수 있다. 그러한 이유는 각각의 VM이 그의 개별적인 하드웨어 클라이언트 인터페이스를 할당받고 있어서 I/O 장치의 컨텍스트 전환을 필요로 하지 않고 VM이 그 각각의 클라이언트 인터페이스 회로에 I/O 요청을 전송할 수 있기 때문이다. 이것은 상기한 액세스 문제에 대한 해결책을 제공한다.
다른 예로서, CPU가 VM0 및 VM1 둘다를 실행하는 것을 생각해보자. VM0에서, 애플리케이션 소프트웨어는 CUP를 비교적 많이 사용하지만(예를 들어, 상수 파이를 계산하는 것) 그래픽 어댑터를 거의 요구하지 않고 있다(예를 들어, 디스플레이 창에서의 시계를 갱신하는 것). 다른 VM 창에서, 그래픽 패턴이 그래픽 어댑터에 의해 규칙적으로 갱신되고 있지만, CPU를 거의 사용하지 않는다. 이제, CPU 및 그래픽 어댑터가 함께 컨텍스트 전환되는 것으로 가정한다(일부 시간에 그래픽 어댑터 및 CPU를 VM0에 제공하고 나머지 시간에 VM1에 제공한다). 그 경우에, VM0에 의한 비교적 가벼운 그래픽 요구로 인해 일부 시간에 그래픽 사이클의 낭비/유휴 상태를 야기하고, VM1의 가벼운 CPU 요구는 나머지 시간에 CPU 사이클의 낭비/유휴 상태를 야기한다. 그러한 이유는 CPU 및 그래픽 어댑터 코어 기능 둘 다 항상 동일한 컨텍스트에 있기 때문이다. 시스템 자원의 이러한 비효율적인 사용은 CPU 작업부하가 그래픽 어댑터 작업부하와 독립적으로 스케쥴링될 수 있게 해주는 본 발명의 실시예에 의해 회피될 수 있다. 서로 다른 하드웨어 클라이언트 인터페이스가 그래픽 어댑터에서 이용가능한 경우, CPU는 그 시간의 대부분을 VM0를 위해 실행하는 데 소비하고 또 그럼에도 불구하고 때때로 그래픽 어댑터에 액세스하도록 스케쥴링될 수 있다. 반면에, 그래픽 어댑터의 코어 기능은 그의 시간의 대부분을 VM1 상에서 소비하도록 스케쥴링될 수 있고 또 VM0에 서비스하기 위해 가끔 인터럽트될 수 있다.
이제 도 3을 참조하면, 컴퓨터 시스템에서의 공유가능 I/O 장치의 발견 및 공유를 수반하는 가상화 프로세스의 흐름도가 도시되어 있다. 이 시스템은 도 2에 도시된 것일 수 있다. 이 방법은 시스템에서 플러그 앤 플레이 발견 프로세스가 수행되는 동작(304)으로 시작한다. 예로서, 이것은 종래의 PCI 장치 및 기능 열거 프로세스(PCI device and function enumeration process)(또한 PCI 구성 프로세스라고도 함)의 일부일 수 있다. 이 발견 프로세스는, 단일의 그래픽 어댑터 카드의 서로 다른 클라이언트 인터페이스로부터, 각각의 장치에 대한 고유의 PCI 장치 식별 번호를 판독한 결과 다수의 I/O 장치를 검출할 수 있다. 이것은, 시스템을 켠 후에, 기본 입/출력 시스템 펌웨어(BIOS) 및/또는 시스템의 프로세서에 의해 실행되는 VMM에 의해 행해질 수 있다. 어댑터 카드는 코어 I/O 기능이 그의 다수의 하드웨어 클라이언트 인터페이스에 의해 공유되는 공유가능 I/O 장치의 예이다. 발견 프로세스는 또한 제어 인터페이스(126)(도 2 참조)의 형태인 다른 장치를 검출할 수 있다.
대안적인 실시예에서, BIOS는, 초기 부팅 동안에, 제어 인터페이스만을 발견할 수 있다. 얼마간의 시간 후에, VMM은 제어 인터페이스를 사용하여 필요에 따라 하나 이상의 클라이언트 인터페이스를 생성할 수 있다. 이들 인터페이스는 다 한꺼번에 생성되거나 요구 시에 생성될 수 있다. 각각의 인터페이스의 생성 시에, VMM은 새로 생성된 인터페이스의 "삽입"을 나타내는 핫 플러그 이벤트(hot plug event)를 보게 된다. 예를 들어 2004년 3월 5일자로 출원되고 본 출원의 양수인과 동일한 양수인에게 양도된, 발명의 명칭이 "물리 장치를 한 가상 머신으로부터 다른 가상 머신으로 동적으로 재할당하는 방법, 장치 및 시스템(Method, Apparatus and System for Dynamically Reassigning a Physical Device from One Virtual Machine to Another)"인 Lantz 등의 미국 특허 출원 제10/794,469호를 참조하기 바란다.
본 방법은 VMM 또는 서비스 VM이 하나 이상의 VM을 생성하고 검출된 I/O 장치 중 하나 이상을 그들에게 할당하는 동작(308)을 계속한다. 이 예에서, 각각의 검출된 장치는 시스템에서의 각각의 VM의 그래픽 어댑터이다. 이어서, 서비스 VM은 그의 제어 인터페이스를 통해 어댑터를 구성하는 데 사용될 수 있으며, 따라서 그의 코어 I/O 기능은 예를 들어 하나의 VM에 다른 것보다 우선순위를 부여하는 우선순위 정책에 따라 공유된다(동작 312). 그 후에, VM이 실행 중이면, VMM은 손을 떼고(stand back) 본질적으로 그 자신을 I/O 트랜잭션과 연관시키지 않을 수 있는데, 그 이유는 각각의 VM이 이제 (예를 들어, 그에게 할당된 하드웨어 클라이언트 인터페이스를 가리키는 주소 오프셋을 부가함으로써) 디스플레이 그래픽에 관한 그의 OS 호출을 용이하게 수정 또는 가로챌 수 있기 때문이다.
본 발명의 어떤 실시예들은 본 발명의 실시예에 따라 프로세스를 수행하도록 컴퓨터(또는 다른 전자 장치)를 프로그램하는 데 사용될 수 있는 명령어를 저장하고 있는 머신 또는 컴퓨터 판독가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품 또는 소프트웨어로서 제공될 수 있다. 다른 실시예들에서, 마이크로코드 또는 하드와이어드 로직을 포함하는 특정의 하드웨어 컴포넌트에 의해 또는 프로그램된 컴퓨터 컴포넌트 및 커스텀 하드웨어 컴포넌트의 임의의 조합에 의해 동작들이 수행될 수 있다.
기계-판독가능 매체는 기계(예를 들어, 하나 이상의 프로세서 세트, 데스크톱 컴퓨터, 휴대용 컴퓨터, 제조 도구, 또는 프로세서를 갖는 또 다른 장치)에 의해 액세스가능한 형태로 정보를 제공, 즉 저장 또는 전송하는 임의의 메카니즘일 수 있다. 예를 들어, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 자기 회전 디스크 저장 매체, 광학 디스크 저장 매체는 물론 전기, 광학, 음향 또는 그 외의 형태의 전파된 신호(예를 들어, 반송파, 적외선 신호, 기타 등등) 등의 기록가능/기록불가능 매체일 수 있다.
요약하면, 다수의 클라이언트 간에 물리 장치를 공유하는 기술의 여러가지 실시예에 대해 기술하였다. 이상의 명세서에서, 본 발명은 그의 특정의 예시적인 실시예를 참조하여 기술되어 있다. 그렇지만, 첨부된 청구항에 기재된 본 발명의 보다 광의의 정신 및 범위를 벗어나지 않고 본 발명에 여러가지 수정 및 변경이 행해질 수 있다는 것이 명백하다. 예를 들어, VMM이 실행되고 있는 컴퓨터 시스템은 다수의 프로세서(CPU)를 가질 수 있으며, 여기서 각각의 VM 클라이언트는 예를 들어 서로 다른 프로세서 상에서 실행되고 있을 수 있다. 이러한 시스템에서의 공유가능 장치의 다수의 클라이언트 인터페이스는 VM 클라이언트가 서로를 알지 못한 상태로 서로 다른 VM 클라이언트에 의해, 장치의 동일한 코어 기능으로의 액세스가 동시에 행해지는 것을 가능하게 해준다. 이것은 VM 클라이언트가 그 자신의 관점에서 볼 때 서로를 방해하지 않고 행해진다. 이와 관련하여 동시적인 액세스는 예를 들어 트랜잭션 요청이 I/O 장치에 의해 포착되지만 아직 완료되지 않았고, 또 다른 트랜잭션 요청 역시 I/O 장치에 의해 포착되지만 완료되지 않은 것을 의미한다. 가상화되지 않은 시스템에서, OS는 일반적으로 이러한 시나리오가 허용되지 않도록 하는데, 예를 들어 2개의 CPU가 동일한 장치를 동시에 프로그램할 수 없다. 그렇지만, 여기에 기술된 VM 시스템의 일 실시예에서, VMM는 (이러한 소프트웨어는 I/O 장치를 모니터링하거나 I/O 장치로의 모든 액세스에 관여할 필요가 있다는 복잡성으로 인해) 이러한 책임을 지지 않는 것이 바람직하다. 따라서, 이러한 시스템에서, VM 클라이언트 또는 게스트들이 동일한 I/O 장치에 액세스할 때 이들 간에 조정이 없다. 그렇지만, 상기한 다수의 클라이언트 인터페이스의 본질로 인해 이러한 액세스는 I/O 장치의 코어 기능으로 적절히 라우팅되며, 멀티프로세서 VM 시스템에서 이 해결책이 특히 매력적이게 된다. 따라서, 본 명세서 및 도면은 제한적인 의미가 아니라 예시적인 의미로 보아야 한다.

Claims (35)

  1. 컴퓨터 시스템의 코어 기능을 수행하는 코어 기능 회로부,
    상기 코어 기능 회로부에 액세스하는 복수의 클라이언트 인터페이스 회로 - 이들 각각은 상기 시스템에서 소프트웨어 클라이언트에게 완전한 장치처럼 보임 -, 및
    상기 복수의 클라이언트 인터페이스 회로를 상기 코어 기능 회로부에 연결시키는 멀티플렉싱 회로부
    를 포함하는 물리 장치.
  2. 제1항에 있어서, 상기 코어 기능은 디스플레이 그래픽 어댑터의 주요 기능인 물리 장치.
  3. 제1항에 있어서, 상기 주요 기능은 이미지 렌더링인 물리 장치.
  4. 제1항에 있어서, 상기 코어 기능은 네트워크 인터페이스 제어기의 주요 기능인 물리 장치.
  5. 제4항에 있어서, 상기 주요 기능은 TCP/IP 패킷 오프로딩(packet offloading)인 물리 장치.
  6. 제1항에 있어서, 상기 클라이언트 인터페이스는 서로 다른 I/O 장치 능력들을 소프트웨어 클라이언트에 노출시키는 물리 장치.
  7. 제1항에 있어서, 상기 클라이언트 인터페이스들 중 하나는 신뢰 그래픽 어댑터(trusted graphics adapter)를 노출시키고 다른 하나는 비신뢰 그래픽 어댑터(untrusted graphics adapter)를 노출시키는 물리 장치.
  8. 제1항에 있어서, 상기 복수의 클라이언트 인터페이스 각각은 상기 코어 기능 회로부의 동작을 구성하는 개별적인 레지스터 세트를 가지며,
    하나의 세트는 소프트웨어 클라이언트에게 이전 버전의 I/O 장치처럼 보이고, 또 다른 세트는 상기 소프트웨어 클라이언트에게 새 버전의 상기 I/O 장치처럼 보이는 물리 장치.
  9. 제1항에 있어서, 상기 시스템에서의 복수의 가상 머신(VM)에 의한 상기 코어 기능 회로부로의 액세스를 제어하기 위해 상기 시스템에서의 서비스 가상 머신(VM) 소프트웨어에 의해 사용되는 제어 인터페이스 회로를 더 포함하며,
    상기 복수의 VM은 각각 상기 복수의 클라이언트 인터페이스 회로를 통해 상기 코어 기능 회로부에 액세스하는 물리 장치.
  10. 제9항에 있어서, 상기 코어 기능은 디스플레이 그래픽 어댑터의 주요 기능이고,
    상기 제어 인터페이스는 상기 서비스 VM 소프트웨어로 하여금 상기 코어 기능 회로부를 사용하여 상기 복수의 VM에 대한 복수의 창을 각각 어떻게 디스플레이할지를 선택하도록 하는 물리 장치.
  11. 제1항에 있어서, 상기 코어 기능 회로부에서의 시그널링과 상기 장치 외부에서의 시그널링 간의 변환을 행하기 위해, 부가의 멀티플렉싱 회로부를 통해 상기 코어 기능 회로부에 연결된 복수의 월드 인터페이스 회로(world interface circuit)를 더 포함하는 물리 장치.
  12. 제11항에 있어서, 상기 복수의 월드 인터페이스 회로는 상기 코어 기능 회로부에서의 시그널링과 컴퓨터 주변 장치 버스(computer peripheral bus)에서의 시그널링 간의 변환을 행하는 물리 장치.
  13. 제11항에 있어서, 상기 복수의 월드 인터페이스 회로는 상기 코어 기능 회로부에서의 시그널링과 LAN 노드 상호접속 매체에서의 시그널링 간의 변환을 행하는 물리 장치.
  14. 제9항에 있어서, 복수의 클라이언트 인터페이스 회로의 개별적인 회로와 상 기 코어 기능 회로부 사이에 각각 연결된 복수의 작업부하 큐(workload queue)를 더 포함하며,
    상기 제어 인터페이스 회로는 상기 서비스 VM으로 하여금 큐 상태(queue condition)의 함수로서 상기 코어 기능 회로부에 피드할 큐를 선택하도록 하는 물리 장치.
  15. 컴퓨터 시스템의 코어 I/O 기능을 수행하는 코어 I/O 기능 회로부, 및
    복수의 클라이언트 인터페이스 회로 - 이들 중 어느 하나가 상기 코어 I/O 기능 회로부에 액세스하여 동일한 코어 I/O 기능을 호출하기 위해 상기 시스템에서의 가상 머신(VM)에 의해 사용될 수 있음 -
    를 포함하는 I/O 장치.
  16. 제15항에 있어서, 상기 클라이언트 인터페이스 회로 각각은 상기 I/O 장치 외부로부터 액세스가능한 개별적인 레지스터 세트를 가지며,
    각각의 세트는 오프셋을 제외하고는 동일한 주소 범위를 갖는 I/O 장치.
  17. 제15항에 있어서, 상기 클라이언트 인터페이스 회로 중 하나는 그래픽 어댑터 기능에 의해 렌더링되는 출력 데이터의 불법 복제를 저지하기 위해 상기 그래픽 어댑터 기능에 컨텐츠 보호 인터페이스를 제공하고,
    상기 클라이언트 인터페이스 회로 중 또 다른 하나는 상기 그래픽 어댑터 기 능에 비보안 인터페이스(unsecure interface)를 제공하는 I/O 장치.
  18. 제15항에 있어서, 상기 I/O 장치는 상기 I/O 장치의 자원들을, 각각 상기 복수의 클라이언트 인터페이스 회로를 통해 상기 I/O 장치에 액세스하게 될 복수의 가상 머신 클라이언트의 요구에 더 잘 매칭시키기 위해 클라이언트 인터페이스의 수를 마음대로 변경하는 능력을 소프트웨어에 부여할 수 있는 I/O 장치.
  19. 가상 머신 능력을 갖는 컴퓨터 시스템으로서,
    프로세서,
    가상 머신 모니터(virtual machine monitor, VMM)를 저장하고 있는 메모리 - 상기 VMM은 복수의 클라이언트 프로그램을 각각 실행하기 위한 상기 시스템에서의 복수의 가상 머신(VM)을 관리하기 위해 상기 프로세서에 의해 액세스됨 -, 및
    하드웨어로 된 복수의 인터페이스를 갖는 I/O 장치 - 각각의 인터페이스는 상기 복수의 VM 내에서 실행되고 있을 복수의 클라이언트 프로그램의 각각의 프로그램에게 개별적인 I/O 장치처럼 보임 -
    를 포함하는 컴퓨터 시스템.
  20. 제19항에 있어서, 상기 메모리는 상기 프로세서에 의해 액세스되는, 그 안에 저장된 서비스 VM을 더 포함하며,
    상기 I/O 장치는 상기 코어 I/O 기능 회로부를 구성하기 위해 상기 서비스 VM에 의해 사용되는 하드웨어로 된 제어 인터페이스를 더 포함하는 컴퓨터 시스템.
  21. 제20항에 있어서, 상기 I/O 장치는 상기 코어 I/O 기능 회로부의 시그널링과 상기 I/O 장치 외부의 시그널링 간의 변환을 행하는 하드웨어로 된 월드 인터페이스를 더 포함하는 컴퓨터 시스템.
  22. 컴퓨터 시스템의 코어 I/O 기능을 수행하는 수단,
    상기 코어 I/O 기능에 액세스하기 위해 복수의 완전한 인터페이스를 복수의 가상 머신(VM) 클라이언트에 제공하는 수단 - 각각의 인터페이스는 동일한 장치 드라이버에 의해 별개의 I/O 장치처럼 액세스될 수 있다는 점에서 완전함-, 및
    상기 코어 I/O 기능 수행 수단과 상기 완전한 인터페이스 제공 수단 간에 메시지를 전달하는 수단
    을 포함하는 가상화 장치.
  23. 제22항에 있어서, 상기 완전한 인터페이스 각각은 a) 고유의 장치 식별 번호 및 b) 동일한 버스를 통해 노출되는 개별적인 구성 레지스터 세트를 갖는 개별적인 I/O 장치를 제공하는 가상화 장치.
  24. 제23항에 있어서, 각각의 구성 레지스터 세트는 개별적인 PCI 장치 ID, 벤더 ID, 개정판 ID(revision ID) 및 클래스 코드(Class Code)를 저장하는 가상화 장치.
  25. I/O 장치를 공유하는 방법으로서,
    컴퓨터 시스템에서 플러그 앤 플레이 발견 프로세스(plug and play discovery process)를 수행하는 단계, 및
    복수의 I/O 장치가 상기 시스템에 존재하는지를 상기 프로세스에 의해 검출하는 단계 - 이 때 실제로는 검출된 I/O 장치들은 상기 시스템에 접속되어 있는 단일의 물리적 I/O 장치로 인한 것이며 그의 코어 I/O 기능은 상기 물리적 I/O 장치에서의 복수의 하드웨어 클라이언트 인터페이스에 의해 공유됨 -
    를 포함하는 방법.
  26. 제25항에 있어서, 상기 검출하는 단계는 상기 공유된 코어 I/O 기능을 포함하는 단일의 그래픽 어댑터 카드로부터 상기 검출된 I/O 장치 각각에 대한 고유의 PCI 장치 식별 번호를 판독하는 단계를 포함하는 방법.
  27. 제25항에 있어서, 상기 복수의 검출된 I/O 장치를 상기 시스템에서의 복수의 가상 머신(VM)에 각각 할당하는 단계를 더 포함하는 방법.
  28. 제27항에 있어서, 상기 VM 중 하나에 다른 것보다 우선순위를 부여하는 우선순위 정책에 따라, 상기 복수의 VM에 서비스할 때, 상기 코어 I/O 기능을 공유되도록 구성하는 단계를 더 포함하는 방법.
  29. 데이터가 저장된 머신 판독 가능 매체를 갖는 제조 물품으로서,
    상기 데이터는, 컴퓨터 시스템에서 프로세서에 의해 액세스될 때, 하드웨어로 된 복수의 클라이언트 인터페이스 - 이들 각각은 상기 시스템에서 장치 드라이버 프로그램에게 완전한 장치처럼 보임 - 에 의한 상기 장치의 동일한 코어 기능으로의 액세스를 제어하기 위해 상기 시스템 내의 물리 장치의 제어 인터페이스에 쓰기(write)를 하고 그로부터 읽기(read)를 하는 제조 물품.
  30. 제29항에 있어서, 상기 데이터는 상기 시스템에 대한 가상화 소프트웨어의 일부인 제조 물품.
  31. 제30항에 있어서, 상기 데이터는, 상기 코어 기능이 복수의 디스플레이 창에서의 클라이언트 인터페이스로부터 이미지를 각각 렌더링 및 디스플레이하기 위해 상기 쓰기 및 읽기가 스케쥴링 정책에 따라 상기 물리 장치를 프로그램하도록 되어 있는 제조 물품.
  32. 제30항에 있어서, 상기 데이터는 상기 복수의 클라이언트 인터페이스 중 하나와 연관된 어느 큐가 상기 코어 기능에 명령어를 피드하는지를 선택하기 위해 상기 쓰기 및 읽기가 상기 물리 장치를 프로그램하도록 되어 있는 제조 물품.
  33. 제30항에 있어서, 상기 데이터는 상기 쓰기 및 읽기가 상기 물리 장치에 대한 전원 관리 동작을 수행하도록 되어 있는 제조 물품.
  34. 제30항에 있어서, 상기 데이터는 상기 쓰기 및 읽기가 외부 캡처 스트림을 상기 클라이언트 인터페이스 중 하나로 라우팅하는 것에 관한 것으로 되어 있는 제조 물품.
  35. 가상 머신 능력을 갖는 멀티프로세서 컴퓨터 시스템으로서,
    복수의 프로세서,
    가상 머신 모니터(virtual machine monitor, VMM)를 저장하고 있는 메모리 - 상기 VMM은 복수의 클라이언트 프로그램을 각각 실행하기 위한 상기 시스템에서의 복수의 가상 머신(VM)을 관리하기 위해 상기 프로세서들 중 하나에 의해 실행됨 -, 및
    코어 기능 및 하드웨어로 된 복수의 인터페이스를 갖는 I/O 장치 - 각각의 인터페이스는 상기 복수의 VM 내에서 실행되고 있을 복수의 클라이언트 프로그램의 각각의 프로그램에게 개별적인 I/O 장치처럼 보임 -
    를 포함하고,
    상기 복수의 VM은 서로를 알지 못하는 상태에서, 상기 VMM이 상기 복수의 VM 간에 중재를 할 필요없이 상기 복수의 인터페이스를 통해 상기 I/O 장치의 코어 기능에 동시에 액세스할 수 있는 컴퓨터 시스템.
KR1020067027670A 2004-06-30 2005-06-22 다수의 클라이언트 간의 물리 장치 공유 KR100893541B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/882,458 2004-06-30
US10/882,458 US20060069828A1 (en) 2004-06-30 2004-06-30 Sharing a physical device among multiple clients
PCT/US2005/022467 WO2006012291A2 (en) 2004-06-30 2005-06-22 Sharing a physical device among multiple clients

Publications (2)

Publication Number Publication Date
KR20070032734A true KR20070032734A (ko) 2007-03-22
KR100893541B1 KR100893541B1 (ko) 2009-04-17

Family

ID=34972763

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067027670A KR100893541B1 (ko) 2004-06-30 2005-06-22 다수의 클라이언트 간의 물리 장치 공유

Country Status (7)

Country Link
US (1) US20060069828A1 (ko)
JP (1) JP2008503015A (ko)
KR (1) KR100893541B1 (ko)
CN (1) CN100517287C (ko)
DE (1) DE112005001502T5 (ko)
TW (1) TWI303025B (ko)
WO (1) WO2006012291A2 (ko)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101007279B1 (ko) * 2007-12-17 2011-01-13 한국전자통신연구원 가상 머신 디스크 풀을 이용한 가상 머신 프로비저닝 방법 및 시스템
WO2012047023A2 (ko) * 2010-10-05 2012-04-12 엘지전자 주식회사 네트워크 모니터, 이를 이용한 네트워크 모니터 시스템 및 그의 제어 방법
WO2012086915A2 (ko) * 2010-12-23 2012-06-28 (주)케이티 솔루션 공유 방법 및 그 장치
WO2012086918A2 (ko) * 2010-12-24 2012-06-28 (주)케이티 오브젝트를 복수 개의 데이터 노드들의 위치에 기반하여 분산 저장하는 분산 저장 시스템 및 그 위치 기반 분산 저장 방법 및 컴퓨터에 의하여 독출 가능한 저장 매체
US8775870B2 (en) 2010-12-22 2014-07-08 Kt Corporation Method and apparatus for recovering errors in a storage system
WO2014137008A1 (ko) * 2013-03-06 2014-09-12 팬터로그 주식회사 그래픽 자원 공유 시스템 및 방법
KR101444984B1 (ko) * 2010-06-21 2014-09-26 인텔 코오퍼레이션 다수의 가상 머신들 사이에서 네트워크 인터페이스를 공유하기 위한 방법
US8849756B2 (en) 2011-04-13 2014-09-30 Kt Corporation Selecting data nodes in distributed storage system
US9052962B2 (en) 2011-03-31 2015-06-09 Kt Corporation Distributed storage of data in a cloud storage system
US9158460B2 (en) 2011-04-25 2015-10-13 Kt Corporation Selecting data nodes using multiple storage policies in cloud storage system
US9888062B2 (en) 2010-12-24 2018-02-06 Kt Corporation Distributed storage system including a plurality of proxy servers and method for managing objects

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060184296A1 (en) * 2005-02-17 2006-08-17 Hunter Engineering Company Machine vision vehicle wheel alignment systems
US7870301B2 (en) * 2005-02-25 2011-01-11 International Business Machines Corporation System and method for modification of virtual adapter resources in a logically partitioned data processing system
US7398328B2 (en) * 2005-02-25 2008-07-08 International Business Machines Corporation Native virtualization on a partially trusted adapter using PCI host bus, device, and function number for identification
US7685335B2 (en) * 2005-02-25 2010-03-23 International Business Machines Corporation Virtualized fibre channel adapter for a multi-processor data processing system
US7543084B2 (en) * 2005-02-25 2009-06-02 International Business Machines Corporation Method for destroying virtual resources in a logically partitioned data processing system
US20060195617A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation Method and system for native virtualization on a partially trusted adapter using adapter bus, device and function number for identification
US7480742B2 (en) * 2005-02-25 2009-01-20 International Business Machines Corporation Method for virtual adapter destruction on a physical adapter that supports virtual adapters
US7398337B2 (en) * 2005-02-25 2008-07-08 International Business Machines Corporation Association of host translations that are associated to an access control level on a PCI bridge that supports virtualization
US7496790B2 (en) * 2005-02-25 2009-02-24 International Business Machines Corporation Method, apparatus, and computer program product for coordinating error reporting and reset utilizing an I/O adapter that supports virtualization
US20060195848A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation System and method of virtual resource modification on a physical adapter that supports virtual resources
US20060193327A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation System and method for providing quality of service in a virtual adapter
US20060195618A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation Data processing system, method, and computer program product for creation and initialization of a virtual adapter on a physical adapter that supports virtual adapter level virtualization
US7386637B2 (en) * 2005-02-25 2008-06-10 International Business Machines Corporation System, method, and computer program product for a fully trusted adapter validation of incoming memory mapped I/O operations on a physical adapter that supports virtual adapters or virtual resources
US7546386B2 (en) * 2005-02-25 2009-06-09 International Business Machines Corporation Method for virtual resource initialization on a physical adapter that supports virtual resources
US7308551B2 (en) * 2005-02-25 2007-12-11 International Business Machines Corporation System and method for managing metrics table per virtual port in a logically partitioned data processing system
US7493425B2 (en) * 2005-02-25 2009-02-17 International Business Machines Corporation Method, system and program product for differentiating between virtual hosts on bus transactions and associating allowable memory access for an input/output adapter that supports virtualization
US20060212870A1 (en) * 2005-02-25 2006-09-21 International Business Machines Corporation Association of memory access through protection attributes that are associated to an access control level on a PCI adapter that supports virtualization
US7464191B2 (en) * 2005-02-25 2008-12-09 International Business Machines Corporation System and method for host initialization for an adapter that supports virtualization
US20060195623A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation Native virtualization on a partially trusted adapter using PCI host memory mapped input/output memory address for identification
US7376770B2 (en) * 2005-02-25 2008-05-20 International Business Machines Corporation System and method for virtual adapter resource allocation matrix that defines the amount of resources of a physical I/O adapter
US7475166B2 (en) * 2005-02-28 2009-01-06 International Business Machines Corporation Method and system for fully trusted adapter validation of addresses referenced in a virtual host transfer request
US20070136554A1 (en) * 2005-12-12 2007-06-14 Giora Biran Memory operations in a virtualized system
US20070168872A1 (en) * 2006-01-19 2007-07-19 Raytheon Company Multi-monitor, multi-JVM java GUI infrastructure with layout via XML
US20070192518A1 (en) * 2006-02-14 2007-08-16 Aarohi Communications, Inc., A California Corporation Apparatus for performing I/O sharing & virtualization
US8539137B1 (en) * 2006-06-09 2013-09-17 Parallels IP Holdings GmbH System and method for management of virtual execution environment disk storage
US8407699B2 (en) * 2008-03-10 2013-03-26 Citrix Systems, Inc. System and method for managing code isolation
US9317309B2 (en) * 2006-12-28 2016-04-19 Hewlett-Packard Development Company, L.P. Virtualized environment allocation system and method
US8190778B2 (en) * 2007-03-06 2012-05-29 Intel Corporation Method and apparatus for network filtering and firewall protection on a secure partition
CN101272295B (zh) * 2007-03-21 2012-01-25 联想(北京)有限公司 支持多投影源的虚拟网络投影系统及方法
US7882274B2 (en) 2007-09-20 2011-02-01 Virtual Desktop Technologies, Inc. Computer system with multiple terminals
TWI356301B (en) 2007-12-27 2012-01-11 Ind Tech Res Inst Memory management system and method for open platf
US8646052B2 (en) * 2008-03-31 2014-02-04 Intel Corporation Method and apparatus for providing a secure display window inside the primary display
US20100169884A1 (en) * 2008-12-31 2010-07-01 Zohar Bogin Injecting transactions to support the virtualization of a physical device controller
JP5081847B2 (ja) * 2009-02-20 2012-11-28 株式会社日立製作所 マルチプロセッサによるパケット処理装置およびパケット処理方法
KR101325292B1 (ko) * 2009-06-16 2013-11-08 인텔 코오퍼레이션 핸드헬드 디바이스의 카메라 응용
US8627413B2 (en) * 2009-11-23 2014-01-07 Symantec Corporation System and method for authorization and management of connections and attachment of resources
US8572610B2 (en) * 2009-12-09 2013-10-29 General Electric Company Patient monitoring system and method of safe operation with third party parameter applications
JP5423404B2 (ja) * 2010-01-08 2014-02-19 日本電気株式会社 オフロード処理装置、および、通信システム
US20120054740A1 (en) * 2010-08-31 2012-03-01 Microsoft Corporation Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments
CN102480410B (zh) * 2010-11-22 2015-06-10 杭州华三通信技术有限公司 一种集中式业务处理单板及虚拟化资源划分方法
US8972984B2 (en) * 2011-05-20 2015-03-03 Citrix Systems, Inc. Methods and systems for virtualizing audio hardware for one or more virtual machines
CN103827819B (zh) * 2011-09-30 2017-03-01 惠普发展公司,有限责任合伙企业 计算机系统中的虚拟化设备控制
DE102011116407A1 (de) * 2011-10-19 2013-04-25 embedded projects GmbH Mobile Recheneinheit
US9164789B2 (en) * 2012-02-29 2015-10-20 Red Hat Israel, Ltd. Multiple queue management and adaptive CPU matching in a virtual computing system
US20140012704A1 (en) 2012-07-05 2014-01-09 Google Inc. Selecting a preferred payment instrument based on a merchant category
US9092767B1 (en) 2013-03-04 2015-07-28 Google Inc. Selecting a preferred payment instrument
CN103778018B (zh) * 2014-01-16 2018-05-04 深圳艾迪宝智能系统有限公司 一种用于pcie虚拟化管理的方法
US9858572B2 (en) 2014-02-06 2018-01-02 Google Llc Dynamic alteration of track data
US9632953B2 (en) * 2014-06-03 2017-04-25 Qualcomm Incorporated Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers
TWI592874B (zh) 2015-06-17 2017-07-21 康齊科技股份有限公司 網路伺服系統
JP6545022B2 (ja) * 2015-07-10 2019-07-17 日本電産サンキョー株式会社 カード搬送システム及びカード搬送制御方法
US10185679B2 (en) 2016-02-24 2019-01-22 Red Hat Israel, Ltd. Multi-queue device assignment to virtual machine groups
CN109542581B (zh) * 2017-09-22 2020-10-13 深圳市中兴微电子技术有限公司 一种设备共享方法、装置及存储介质
CN110618843A (zh) * 2018-06-20 2019-12-27 成都香巴拉科技有限责任公司 单电脑主机多用户桌面虚拟化系统

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0664536B2 (ja) * 1986-01-17 1994-08-22 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション 仮想端末サブシステムの制御方法
US5414851A (en) * 1992-06-15 1995-05-09 International Business Machines Corporation Method and means for sharing I/O resources by a plurality of operating systems
DE69429575T2 (de) * 1993-07-28 2002-08-22 3Com Corp Netzwerkstation mit mehreren netzwerkadressen
JPH09167429A (ja) * 1995-12-15 1997-06-24 Fujitsu Ltd 光ディスク装置
US5758099A (en) * 1996-05-29 1998-05-26 International Business Machines Corporation Plug and play protocol for bus adapter card
JP2866376B2 (ja) * 1998-05-20 1999-03-08 株式会社日立製作所 ディスクアレイ装置
JP3659062B2 (ja) * 1999-05-21 2005-06-15 株式会社日立製作所 計算機システム
JP4395223B2 (ja) * 1999-09-24 2010-01-06 株式会社日立製作所 表示装置、表示方法、および、ナビゲーション装置
US6823404B2 (en) * 2000-06-08 2004-11-23 International Business Machines Corporation DMA windowing in an LPAR environment using device arbitration level to allow multiple IOAs per terminal bridge
JP2002351621A (ja) * 2001-05-30 2002-12-06 Toshiba Corp 複数デバイスとして認識されるドライブ装置と光ディスクドライブ装置及びこれらの方法
US7174550B2 (en) * 2003-05-12 2007-02-06 International Business Machines Corporation Sharing communications adapters across a plurality of input/output subsystem images
JP2005301513A (ja) * 2004-04-08 2005-10-27 Fujitsu Ltd プログラム内蔵デバイス

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101007279B1 (ko) * 2007-12-17 2011-01-13 한국전자통신연구원 가상 머신 디스크 풀을 이용한 가상 머신 프로비저닝 방법 및 시스템
KR101444984B1 (ko) * 2010-06-21 2014-09-26 인텔 코오퍼레이션 다수의 가상 머신들 사이에서 네트워크 인터페이스를 공유하기 위한 방법
WO2012047023A3 (ko) * 2010-10-05 2012-08-23 엘지전자 주식회사 네트워크 모니터, 이를 이용한 네트워크 모니터 시스템 및 그의 제어 방법
WO2012047023A2 (ko) * 2010-10-05 2012-04-12 엘지전자 주식회사 네트워크 모니터, 이를 이용한 네트워크 모니터 시스템 및 그의 제어 방법
US8775870B2 (en) 2010-12-22 2014-07-08 Kt Corporation Method and apparatus for recovering errors in a storage system
WO2012086915A3 (ko) * 2010-12-23 2012-09-07 (주)케이티 솔루션 공유 방법 및 그 장치
US8843635B2 (en) 2010-12-23 2014-09-23 Kt Corporation Apparatus and method for providing a service through sharing solution providing unit in cloud computing environment
WO2012086915A2 (ko) * 2010-12-23 2012-06-28 (주)케이티 솔루션 공유 방법 및 그 장치
WO2012086918A3 (ko) * 2010-12-24 2012-09-07 (주)케이티 오브젝트를 복수 개의 데이터 노드들의 위치에 기반하여 분산 저장하는 분산 저장 시스템 및 그 위치 기반 분산 저장 방법 및 컴퓨터에 의하여 독출 가능한 저장 매체
US8495013B2 (en) 2010-12-24 2013-07-23 Kt Corporation Distributed storage system and method for storing objects based on locations
WO2012086918A2 (ko) * 2010-12-24 2012-06-28 (주)케이티 오브젝트를 복수 개의 데이터 노드들의 위치에 기반하여 분산 저장하는 분산 저장 시스템 및 그 위치 기반 분산 저장 방법 및 컴퓨터에 의하여 독출 가능한 저장 매체
US9888062B2 (en) 2010-12-24 2018-02-06 Kt Corporation Distributed storage system including a plurality of proxy servers and method for managing objects
US9052962B2 (en) 2011-03-31 2015-06-09 Kt Corporation Distributed storage of data in a cloud storage system
US8849756B2 (en) 2011-04-13 2014-09-30 Kt Corporation Selecting data nodes in distributed storage system
US9158460B2 (en) 2011-04-25 2015-10-13 Kt Corporation Selecting data nodes using multiple storage policies in cloud storage system
WO2014137008A1 (ko) * 2013-03-06 2014-09-12 팬터로그 주식회사 그래픽 자원 공유 시스템 및 방법

Also Published As

Publication number Publication date
US20060069828A1 (en) 2006-03-30
KR100893541B1 (ko) 2009-04-17
TW200606648A (en) 2006-02-16
JP2008503015A (ja) 2008-01-31
WO2006012291A2 (en) 2006-02-02
TWI303025B (en) 2008-11-11
WO2006012291A3 (en) 2006-08-03
CN1973274A (zh) 2007-05-30
DE112005001502T5 (de) 2007-11-29
CN100517287C (zh) 2009-07-22

Similar Documents

Publication Publication Date Title
KR100893541B1 (ko) 다수의 클라이언트 간의 물리 장치 공유
US10235515B2 (en) Method and apparatus for on-demand isolated I/O channels for secure applications
US8332875B2 (en) Network device driver architecture
US20070192518A1 (en) Apparatus for performing I/O sharing & virtualization
US9417996B2 (en) Shared physical memory protocol
EP2040176B1 (en) Dynamic Resource Allocation
JP2002342280A (ja) 区分処理システム、区分処理システムにおけるセキュリティを設ける方法、およびそのコンピュータ・プログラム
CA3145053A1 (en) Io processing method and apparatus
WO2007033557A1 (fr) Procédé et appareil d’attribution dynamique de dispositif e/s dans un système de machine virtuelle
JP2005309553A (ja) 計算機
WO2022001808A1 (zh) 一种系统以及中断处理方法
EP3436947A1 (en) Secure driver platform
KR101498965B1 (ko) 가상화 기술을 이용한 내외부망 격리 시스템 및 방법
CN113312140A (zh) 虚拟可信平台模块
TWI403955B (zh) 用於在虛擬化環境中共享音訊子系統的裝置、方法與系統
US7406583B2 (en) Autonomic computing utilizing a sequestered processing resource on a host CPU
JP2002287996A (ja) 構成可能なデータ処理システムで端末のプロファイルを保守する方法および装置
US11036649B2 (en) Network interface card resource partitioning
CN113312141B (zh) 用于卸载串行端口模拟的计算机系统、存储介质和方法
WO2022271223A1 (en) Dynamic microservices allocation mechanism
KR101239290B1 (ko) 제로 클라이언트를 지원하는 가상화 서버의 가상 머신 설정을 위한 시스템 및 방법
JP4660362B2 (ja) 計算機システム
Gebhardt et al. Challenges for inter virtual machine communication
US8782779B2 (en) System and method for achieving protected region within computer system
US11650835B1 (en) Multiple port emulation

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment
FPAY Annual fee payment
LAPS Lapse due to unpaid annual fee