KR20120106778A - 라이트웨이트 클라이언트를 이용해서 네트워크를 거쳐 가상화 컴퓨팅 서비스와 인터페이스하기 위한 방법 - Google Patents

라이트웨이트 클라이언트를 이용해서 네트워크를 거쳐 가상화 컴퓨팅 서비스와 인터페이스하기 위한 방법 Download PDF

Info

Publication number
KR20120106778A
KR20120106778A KR20127016549A KR20127016549A KR20120106778A KR 20120106778 A KR20120106778 A KR 20120106778A KR 20127016549 A KR20127016549 A KR 20127016549A KR 20127016549 A KR20127016549 A KR 20127016549A KR 20120106778 A KR20120106778 A KR 20120106778A
Authority
KR
South Korea
Prior art keywords
client
virtual machine
data
framebuffer
image
Prior art date
Application number
KR20127016549A
Other languages
English (en)
Other versions
KR101773638B1 (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 KR20120106778A publication Critical patent/KR20120106778A/ko
Application granted granted Critical
Publication of KR101773638B1 publication Critical patent/KR101773638B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F15/163Interprocessor communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • 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/45595Network integration; Enabling network access in virtual machine instances
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Image Input (AREA)
  • Stored Programmes (AREA)

Abstract

클라이언트를 통해 원격적으로 가상화 컴퓨터 서비스를 제어하기 위한 방법은, 가상 머신에서 이용가능한 가상 서비스를 제어하기 위해 클라이언트로부터 연결 요청을 수신하는 것을 포함한다. 요청은 클라이언트의 연결 요구를 설명하는 다수의 연결 파라미터를 포함하고, 이미지 프로세서 알고리즘과 함께 장착된 가상 머신에서 수신된다. 연결 파라미터는 요청된 가상화 컴퓨터 서비스를 제공하는 특정 가상 머신을 식별하도록 이미지 프로세서 알고리즘을 이용해서 질의된다. 가상 메모리에 위치된 식별된 가상 머신을 위한 프레임버퍼 데이터가 하이퍼바이저를 통해 직접 액세스 및 판독된다. 프레임버퍼 데이터는 이미지 프로세서 알고리즘을 이용해서 다수의 이미지 데이터 패킷으로 처리되고 클라이언트와 관련된 디스플레이 장치 상에 제공하기 위해 클라이언트에 대해 전송된다. 이미지 데이터 패킷 그래머(grammar)는 클라이언트에 대해 맞추어지고 특정 가상 머신을 위한 가상 머신 디스플레이의 이미지를 표현한다.

Description

라이트웨이트 클라이언트를 이용해서 네트워크를 거쳐 가상화 컴퓨팅 서비스와 인터페이스하기 위한 방법{METHODS FOR INTERFACING WITH A VIRTUALIZED COMPUTING SERVICE OVER A NETWORK USING A LIGHTWEIGHT CLIENT}
본 발명은 라이트웨이트 클라이언트로 짧고 긴 거리를 거쳐 가상화 컴퓨팅 서비스에 대해 액세스, 제어, 및 인터페이스하기 위한 방법 및 시스템에 관한 것이다.
가상 환경에 있어서, 가상 리소스(virtual resource)는 하드웨어 및 소프트웨어 프로토콜의 조합을 통해 원격적으로 액세스 및 제어된다. 가상 환경은 인터넷을 걸쳐 서비스됨에 따라 제공되고 이 가상 리소스를 액세스하기 위한 기본적인 기술의 "클라우딩(clouding)"에 기인하여 클라우드 서비스를 적절하게 명명하는 다수의 동적으로 축척가능한(scalable) 가상 리소스를 포함한다. 전형적인 가상 환경은 컴퓨팅 하드웨어의 수집(collection), 컴퓨팅 하드웨어의 상부에 위치하고 컴퓨팅 하드웨어에 대한 액세스를 제공하는 하이퍼바이저(hypervisor), 및 하이퍼바이저를 통해 하드웨어를 액세스하는 하이퍼바이저의 상부에 위치하는 다수의 게스트(guest)(가상 머신(Virtual Machines) 또는 VM)로서 특징지워질 수 있다. 다수의 클라이언트는 프로토콜을 매개로 가상 환경 내에서 가상화 컴퓨터 서비스(또는, 간단하게 가상 서비스)에 대한 연결 및 원격적으로 제어하는데 이용된다. 이들 프로토콜(protocols)/프로토콜의 도출(derivations of protocols)은 원래의 그래픽 스트림 보다 더 낮은 대역폭 통신을 가능하도록 하기 위해 용장 소거(redundancy elimination) 및 그래픽 명령 재기록(graphic instruction rewrites)을 이용해서, VM과 관련된 다이렉트 그래픽 스트림(direct graphics stream)의 압축/신장(compression/decompression)에 이용된다.
상기 프로토콜은 그들 자신의 한계와 도전을 갖는다. 중요한 한계는 이들 프로토콜이 압축/신장 프로토콜과 조화를 이루도록 오퍼레이팅 시스템 또는 그래픽 칩을 요구하는 특정 플랫폼 또는 플랫폼들(그래픽/오퍼레이팅 시스템 계층(graphics/operating system layer))에 대해 구속된다는 것이다. 이는 압축 프로토콜이 오퍼레이팅 시스템 그래픽의 "콘텍스트(context)"를 활용하여 명령이 가상 환경 내의 원격 VM에서 해석 및 실행되어질 수 있음을 의미한다. 이 플랫폼 특정 프로토콜의 악 영향은 프로그레시브 이미지(progressive imagery)의 해석 및 압축/신장을 위한 가상 서비스 측에서 그리고 씬 클라이언트(thin client)에서 큰 CPU의 이용과, 장거리 WAN 네트워크 연결의 긴 지연 처리에서의 어려움을 포함한다. 부가적인 결점은 소정 환경에서 압축을 복호하기 위해 특정화된 칩(그래픽 칩)의 요구와, 다른 환경에서의 높은 네트워크 소모를 포함한다.
더욱이, 이러한 플랫폼 특정 소프트웨어-기반 프로토콜을 공식화(formulating) 하기 위한 기초는 오퍼레이팅 시스템 그래픽 계층을 통해 빠른 성능(fast performance)을 구동시키는 것이었다. 결과적으로, 오퍼레이팅 시스템 그래픽 명령의 직접 해석(direct interpretation)은 가상 머신 환경에서 이루어지는, 그들의 디자인 플랫폼-특정을 만드는, 이러한 프로토콜의 디자인에 대해 임계적이었다. 다른 주문화 프로토콜(customized protocols)의 결점은, 그들의 복잡성이, 저전력 씬 클라이언트(low power thin clients) 또는 모바일 스마트폰-급 장치(mobile smartphone-class devices)와 같은, 많은 라이트웨이트 클라이언트와 비호환되게(incompatible) 그들을 만든다는 것이다.
이는 이러한 맥락에서 발명의 실시예를 야기시킨다.
본 발명의 실시예는 라이트웨이트 또는 비-라이트웨이트 컴퓨팅 장치에 따라 단거리 또는 장거리를 거쳐 가상화 컴퓨터 서비스에 대한 액세스, 제어, 및 인터페이스를 가능하게 하는 다수의 방법 및 구성을 제공한다.
1실시예에 있어서, 방법은 이미지 프로세서 알고리즘을 실행하는 가상 머신의 적어도 하나를 구비하는 하이퍼바이저 상에서 실행되는 다수의 가상 머신의 가상 기반구조(infrastructure)를 포함하는 시스템에 통합된다. 하이퍼바이저는 가상 머신의 각 오퍼레이팅 시스템과 상호작용한다. 이미지 프로세서 알고리즘은, 연결을 관리하고 요청된 컴퓨팅 서비스를 제공하도록, 가상 머신에 대한 연결을 위해 클라이언트로부터의 요청을 수신하도록 구성된다.
1실시예에 있어서, 연결 요청은 연결 요구 및 클라이언트와 관련된 다른 환경 파라미터를 정의하는 다수의 연결 파라미터를 포함한다. 클라이언트에 의한 요청은 가상 기반구조 내의 특정 가상 머신 상에서 이용가능한 가상화 컴퓨터 서비스에 대한 접근을 획득하고 원격적으로 제어하는 것이다. 연결 요청을 수신하면, 특정 가상 머신과는 다른 가상 머신 상에서 실행되는 이미지 프로세서 알고리즘은 가상화 컴퓨터 서비스와 관련된 특정 가상 머신을 식별하도록 연결 파라미터를 분석하고 특정 가상 머신과 관련된 메모리로부터 프레임버퍼 데이터(framebuffer)를 획득하도록 하이퍼바이저와 상호작용한다. 메모리로부터의 프레임버퍼 데이터는 특정 가상 머신의 가상 머신 디스플레이의 이미지의 그래픽 출력을 정의한다. 프레임버퍼 데이터는 가상 머신에서 알고리즘에 의해 이미지 데이터 패킷(image data packets)으로 처리 및 포맷된다. 이미지 데이터 패킷은 트랜스포트(전송) 프로토콜(transport (transmission) protocol)을 기초로 더욱 패키지화된다. 이때, 이미지 데이터 패킷은 클라이언트의 디스플레이 장치에서 렌더링을 위해, 트랜스포트 프로토콜을 이용해서 클라이언트에 대해 전송된다. 렌더링된 출력은 그래픽 또는 비-그래픽 엘리먼트, 프로그램, 및 특정 가상 머신에서 현재 실행 또는 렌더링되어지는 다른 엘리먼트의 디스플레이를 포함하는 가상 머신 디스플레이의 이미지 또는 부분 이미지를 제공한다.
알고리즘은 오퍼레이팅 시스템 또는 그래픽 카드 보다는 하이퍼바이저를 매개로 프레임버퍼 데이터를 직접 액세스하는 것에 의해 가상 머신 디스플레이의 고성능 이미지를 전송하는 능력을 제공한다. 결과적으로, 이미지는 오퍼레이팅 시스템 또는 그래픽 계층로부터 소정의 직접 또는 이전의 지시 없이 얻어지고, 따라서 알고리즘 오퍼레이팅 시스템 및 그래픽 카드 독립성을 이루게 된다. 그래픽 출력이 클라이언트 상에서 복잡한 프로세싱을 요구하지 않는 간단한 전송 프로토콜을 이용해서 패키지화 및 전송됨에 따라, 전송 서비스가 스마트 추적 및 재전송 기술(smart tracking and retransmission techniques)을 이용할 수 있다. 현재의 실시예는 가깝고 먼 거리로부터 가상 서비스와 상호작용하도록 클라이언트를 가능하게 한다. 그래픽 출력은 클라이언트에서 용이하게 신장, 처리, 및 렌더링될 수 있는 이미지 데이터를 포함하고, 따라서 매우 씬 클라이언트(vey thin clients)가 가상 서비스의 액세스 및 제어를 얻도록 할 수 있다. 간단한 전송 프로토콜이 대역폭 변화, 지연, 및 손실에 대해 민감하고 적응된다.
여러 다른 실시예가 예로서 이하 제공된다.
1실시예에 있어서, 클라이언트를 통해 원격적으로 가상화 컴퓨터 서비스(또는, 간단히 "가상 서비스")를 제어하기 위한 방법이 개시된다. 방법은 가상 센터 내의 특정 가상 머신에서 이용가능한 가상 서비스를 제어하기 위해 클라이언트로부터 연결 요청을 수신하는 것을 포함한다. 연결 요청은 클라이언트의 연결 요구를 설명하고 이미지 프로세서 알고리즘을 실행하는 가상 머신에서 수신되는 다수의 연결 파라미터를 포함한다. 연결 파라미터는 프레임버퍼 및 전송 파라미터를 식별하도록 이미지 프로세서 알고리즘에 의해 질의된다. 특정 가상 머신을 위한 프레임버퍼 데이터는 하이퍼바이저를 통해 가상 센터 내의 가상 메모리의 소정 위치로부터 직접 액세스된다. 프레임버퍼 데이터는 특정 가상 머신과 관련된 가상 머신 디스플레이와 관련된 이미지를 나타내는 그래픽 출력을 정의한다. 프레임버퍼 데이터는 이미지 프로세서 알고리즘을 이용해서 다수의 연결 파라미터를 기초로 다수의 이미지 데이터 패킷으로 처리되고 클라이언트와 관련된 디스플레이 장치에서 렌더링을 위해 클라이언트에 대해 전송된다. 렌더링된 그래픽 출력은, 클라이언트에서, 식별된 가상 머신을 위한 가상 머신 디스플레이의 이미지를 제공한다.
다른 실시예에 있어서, 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 방법이 개시된다. 방법은 가상화 컴퓨터 서비스를 제어하기 위해 클라이언트로부터 연결 요청을 수신하는 것을 포함한다. 연결 요청은 이미지 프로세서 알고리즘를 실행하는 가상 머신에서 수신되고 클라이언트의 연결 요청을 정의하는 다수의 연결 파라미터를 포함한다. 연결 파라미터는 클라이언트로부터의 연결 요청을 만족하는 가상화 컴퓨터 서비스를 제공하기 위한 식별된 서비스 계층 내의 특정 가상 머신과 요청된 서비스의 형태를 제공하는 특정 서비스 계층을 식별하도록 이미지 프로세서 알고리즘을 이용해서 질의되어진다. 방법은 식별된 서비스 계층에 대한 연결 및 하이퍼바이저를 통해 직접 가상 메모리의 소정 위치로부터 특정 서비스 계층 내의 특정 VM을 위한 프레임버퍼 데이터를 액세스하는 것을 포함한다. 액세스된 프레임버퍼 데이터는 다수의 연결 파라미터를 기초로 이미지 프로세서 알고리즘을 이용해서 다수의 이미지 데이터 패킷으로 처리되고, 렌더링을 위해 클라이언트에 대해 전송된다. 클라이언트에 대해 전송된 이미지 데이터 패킷은 클라이언트에 대해 특정되고 특정 가상 머신의 가상 머신 디스플레이의 이미지를 나타낸다.
다른 실시예에 있어서, 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 방법이 개시된다. 방법은 다수의 가상 머신이 하이퍼바이저 상에서 실행되는 가상 센터 내의 적어도 하나의 가상 머신 상에 이미지 프로세서 알고리즘을 제공하는 것을 포함한다. 이미지 프로세서 알고리즘을 실행하는 가상 머신에서 수신된 연결 요청은 연결 요청을 만족할 수 있는 특정 가상 머신과 클라이언트와 관련된 연결 요구를 정의하는 다수의 연결 파라미터를 식별하도록 처리된다. 식별된 가상 머신을 위한 프레임버퍼 데이터는 하이퍼바이저를 통해 가상 메모리의 소정 위치로부터 직접 액세스 및 판독된다. 클라이언트를 위해 특정되는 다수의 이미지 데이터 패킷은 연결 파라미터를 기초로 이미지 프로세서 알고리즘을 이용해서 판독된 프레임버퍼 데이터를 위해 발생되어진다. 발생된 이미지 데이터 패킷은 판독된 프레임버퍼 데이터와 관련된 맥락성 정보(contextual information)를 포함한다. 그래픽 출력을 정의하는 이미지 데이터 패킷은 클라이언트와 관련된 디스플레이 장치에서 렌더링을 위해 클라이언트에 대해 전송된다. 렌더링된 이미지 데이터 패킷은, 클라이언트에서, 식별된 가상 머신과 관련된 가상 이미지 디스플레이의 이미지를 나타낸다.
본 발명의 다른 실시예에 있어서, 컴퓨팅 프로파일(computing profile)에 대한 사용자 액세스를 제공하기 위한 방법이 개시된다. 컴퓨팅 프로파일은 사용자를 위한 테스크탑을 정의하고, 여기서 데스크탑은 사용자의 데이터 및 적용에 대한 액세스를 제공한다. 방법은 클라이언트로부터 인터넷 연결을 통해 컴퓨팅 프로파일에 대한 연결을 요청하는 것을 포함한다. 컴퓨팅 프로파일을 위한 특정 가상 머신이, 요청된 연결에 응답하여, 식별된다. 식별된 가상 머신을 위한 프레임버퍼 데이터가 식별 및 판독된다. 프레임버퍼 데이터가 연결 요청이 만들어지는 클라이언트의 특징으로 기초로 이미지 데이터 패킷을 생산하도록 처리된다. 이미지 데이터 패킷은 이미지 데이터 패킷이 클라이언트와 관련된 디스플레이 상에서 처리 및 제공되는 클라이언트에 대해 전달된다. 프레임버퍼 데이터가 처리되는 클라이언트에 대한 프레임버퍼 데이터의 판독, 처리, 및 전달의 처리는 클라이언트와 가상 머신 사이의 통신이 세션(session) 동안 변경되는 동안 연속된다.
다른 실시예에 있어서, 가상 머신(VM)의 세션에 대한 액세스를 제공하기 위한 방법이 개시된다. 방법은 VM의 세션에 대한 액세스를 얻는 것과; VM을 위한 프레임버퍼 데이터를 식별하는 것과; 이미지 데이터 패킷을 생산하도록 클라이언트의 특징을 기초로 프레임버퍼 데이터를 판독하고 처리하는 것과; 클라이언트에 대해 클라이언트의 특징을 위해 생산된 이미지 데이터 패킷을 전달하는 것; 및 클라이언트와 VM 사이의 백채널 통신(backchannel communication)을 교환하면서 세션 동안 이미지 데이터 패킷의 판독, 처리, 및 전달의 동작을 반복하는 것;의 동작을 포함한다.
도 1은 가상 환경에서 가상화 컴퓨터 서비스를 원격적으로 액세스 및 제어하는데 이용되었던 통상적인 시스템의 블록도를 나타낸다.
도 2a는 본 발명의 실시예에 따른 가상 환경에서 가상화 컴퓨터 서비스를 원격적으로 액세스 및 제어하는데 이용되는 시스템의 블록도를 나타낸다.
도 2b 및 도 2c는 도 2a에 도시된 발명의 다른 실시예를 나타낸다.
도 2d는 통상적인 비디오 카드의 작업의 간단한 블록도를 나타낸다.
도 2e는 본 발명의 1실시예에서 가상 머신과 관련된 모니터의 가상 이미지의 액세스에서 하이퍼바이저의 작업을 나타내는 간단한 블록도이다.
도 2f의 (1),(2),(3)은 본 발명의 다른 실시예에서 프레임버퍼 데이터를 캡처하는 프로세스의 간단한 블록도를 나타낸다.
도 2g는 프레임버퍼 데이터를 패킷화하고 클라이언트에 대해 데이터 패킷을 전송함에 있어 LFP를 실행하는 이미지 프로세서의 작업의 간단한 블록도를 나타낸다.
도 2h는 본 발명의 1실시예에서 특정 클라이언트에 따른 프레임버퍼 데이터의 샘플 패킷화를 나타낸다.
도 2i는 다양한 소스로부터 수신 및 렌더링된 프레임버퍼 데이터의 형태 및 형식을 나타낸 것으로, 도 2f의 (1)은 다양한 소스로부터의 프레임버퍼 데이터가 대역 내 통신(in-band communication)을 통해 수신 및 렌더링되는 실시예를 나타내고, 도 2f의 (2)는 대역 외(out-of-band) 프레임버퍼 데이터가 클라이언트의 디스플레이 장치에서 수신 및 렌더링되는 실시예를 나타낸다.
도 3a는 본 발명의 1실시예에에서, 다양한 모듈, 클라이언트, 및 서비스 사이의 상호작용과 이미지 프로세서 알고리즘 내의 다양한 모듈을 식별하는 간단화된 블록도이다.
도 3b는 본 발명의 1실시예에서, 시스템의 구성요소와 다양한 모듈 사이의 정보의 상세한 흐름을 식별하는 블록도를 나타낸다,
도 4는 본 발명의 실시예에 따른 컴퓨터 시스템의 원격 액세스 및 제어에 이용된 스캔 엔진(scan engine) 내의 처리 흐름을 정의하는 블록도이다.
도 5는 본 발명의 실시예에 따른 컴퓨터 시스템의 원격 액세스 및 제어에 이용된 히트 엔진(heat engine) 내의 처리 흐름을 정의하는 블록도이다.
도 6은 본 발명의 실시예에 따른 컴퓨터 시스템의 원격 액세스 및 제어에 이용된 콘텍스트 엔진(context engine) 내의 처리 흐름을 정의하는 블록도이다.
도 7a는 본 발명의 실시예에 따른 컴퓨터 시스템의 원격 액세스 및 제어에 이용된 로직 엔진(logic engine) 내의 처리 흐름을 정의하는 블록도이다.
도 7b의 (A),(B),(C)는 프레임버퍼 데이터의 관리를 나타내는 블록도이다.
도 8은 본 발명의 실시예에 따른 컴퓨터 시스템의 원격 액세스 및 제어에 이용된 연결 엔진(connection engine) 내의 처리 흐름을 정의하는 블록도이다.
도 9는 본 발명의 실시예에 따른 컴퓨터 시스템의 원격 액세스 및 제어에 이용된 출력 엔진(output engine) 내의 처리 흐름을 정의하는 블록도이다.
도 10은 본 발명의 실시예에 따른 이미지 프로세서 알고리즘의 다양한 구성요소와 상호작용하는 씬 클라이언트의 블록도이다.
도 11은 본 발명의 1실시예에서 다른 계층에 제공된 가상화 컴퓨터 서비스를 액세스하기 위한 간단화된 블록도를 나타낸다.
도 12의 (A)-1 및 (A)-2는 본 발명의 1실시예에서, 도킹(docking)을 통해 가상 환경 내에서 가상화 컴퓨터 서비스를 액세스하도록, 랩탑 컴퓨터 또는 모바알 장치와 같은, 휴대형 컴퓨팅 장치를 위한 방법을 나타낸다.
도 12의 (B)는 본 발명의 1실시예에서, 가상 환경 내에서 가상화 컴퓨터 서비스를 액세스하기 위한 PC 상의 플래시 드라이브(flash drive)를 나타낸다.
도 12의 (C)는 본 발명의 다른 실시예에서, Wi-Fi(wireless fidelity) 시스템을 이용해서 가상 환경 내에서 가상화 컴퓨터 서비스를 액세스하는 PDA(personal digital assistant)를 나타낸다.
도 13은 본 발명의 1실시예에서, 원격 클라이언트로부터 가상화 컴퓨터 서비스를 제어하기 위해 포함된 다양한 단계의 처리 흐름도를 나타낸다.
가상 환경(virtual environment) 내에서 컴퓨터 시스템을 원격으로 제어하기 위한 여러 예시적인 실시 예들이 설명될 것이다. 본 발명은 여기서 제시된 구체적인 세부사항들의 일부 또는 전부가 없어도 수행될 수 있다는 점이 당업자에게 명백할 것이다.
본 발명은 원격 클라이언트(remote client)를 통해 가상 환경 내의 가상 머신(virtual machine)에서 이용가능한 가상화(virtualized) 컴퓨터 서비스(또는 단순히 "가상 서비스(virtual service)")의 액세스(access) 및 관리를 가능하게 하는 방법, 시스템, 컴퓨터 코드를 정의한다. 실시 예들은 가상 환경 내의 서버 가상 머신과 같은 가상 머신에 내장된 이미지 프로세서(image processor) 알고리즘과 같은 알고리즘을 이용해서 가상 서비스와의 연결(connection)을 수립하기 위한 방법들을 제공한다. 가상 서비스에 대한 요청이 서버 가상 머신(server virtual machine; SVM)에서 수신되는 경우에, SVM에서의 알고리즘은, 복수의 가상 머신들이 가상 서비스를 제공하는 가상 머신(VM)을 식별하기 위해 작동 중인 가상 환경에서 하이퍼바이저(hypervisor)와 상호작용한다. VM을 식별하면, 하이퍼바이저를 통해서, 알고리즘은 식별된 VM의 가상 모니터(virtual monitor)의 이미지를 나타내는 그래픽 출력을 정의하는 식별된 VM의 메모리로부터 프레임버퍼 데이터(framebuffer data)에 액세스해서 프레임버퍼 데이터를 판독한다. 알고리즘은 프레임버퍼 데이터를 처리하고, 프레임버퍼 데이터를 패킷(packet)으로 패키징(package)하고, 클라이언트와 관련된 디스플레이 장치에서 렌더링(rendering)하기 위한 단순 전송 프로토콜(simple transport protocol)을 이용해서 패키징된 프레임버퍼 데이터를 클라이언트로 보낸다. 렌더링된 프레임버퍼 데이터를 위한 클라이언트의 디스플레이 장치에서의 사용자 상호작용(user interaction)은 캡처(capture)되어, SVM과 하이퍼바이저를 통해서 식별된 VM으로 재전송되어서, 가상 서비스에 대한 제어를 제공하도록 처리된다. 가상 서비스를 제어하기 위한 그래픽 액세스(graphical access)는 식별된 가상 머신의 운영 시스템 또는 그래픽 카드로부터 임의의 지시를 수신하지 않고 제공된다.
가상 서비스를 제어하기 위한 액세스는 그래픽 출력의 캡처를 통하며, 운영 시스템/그래픽 카드로부터의 임의의 지시를 통하지 않으므로, 실시 예들은 각각의 가상 머신에서 이용가능한 가상 서비스를 제어하기 위한 플랫폼-독립적인 솔루션을 정의해서, 유연하고 효과적인 툴(tool)을 제공한다. 패키징된 그래픽 출력은 매운 씬(thin)한 클라이언트조차 가상 서비스에 액세스하고 제어하는 것을 가능하게 하는 복잡한 연산/처리를 이용할 필요없이 해독(decipher)/신장(decompress)될 수 있다. 단순 전송 프로토콜은 클라이언트가 먼 거리 또는 짧은 거리에 걸쳐서 가상 서비스에 액세스하고 제어하는 것을 가능하게 하고, 대기시간(latency)과 손실 있는 네트워크(lossy network)를 더욱 자연스럽게 처리한다. 알고리즘은 디스플레이의 가상 이미지(virtual image)를 추출하기 위해 하이퍼바이저와 상호작용하고, 운영 시스템으로부터의 지시를 검색하기 위해 운영 시스템과 상호작용하지 않기 때문에, 그래픽 언어(graphical language) 지시를 해독/신장하기 위한 클라이언트에서의 강력한 프로세서에 대한 요구가 회피될 수 있다.
알고리즘의 작업(working)들은 가상 머신의 운영 시스템에 투명하다(transparent). 하이퍼바이저는 모든 VM에 대해서 메모리 관리(memory management)를 제공하고, 식별된 VM을 위한 디스플레이의 가상 이미지를 나타내는 정보를 제공하는 식별된 VM을 위한 메모리의 특정 위치 및 적절한 VM을 식별하기 위하여 메모리 관리로부터의 정보 및 클라이언트에 의해 제공된 연결 파라미터로부터의 정보를 이용한다. 하이퍼바이저의 역할 및 프레임버퍼 데이터에 대한 액세스를 얻기 위한 다른 컴포넌트(component)들의 역할이 도 2d 및 2e를 참조하여 상세하게 설명될 것이다.
다양한 실시 예들의 이점을 완전히 이해하기 위하여, 본 출원명세서 전반에서 공통으로 사용된 용어의 세트가 먼저 상세하게 설명될 것이다. 이 정의들은 용어와 관련하여 일반적인 가이드로서 제공되지만, 이와 관련된 변형들 또는 등가물들에 대해서 결코 제한되지 않아야 한다.
a. 본 출원명세서에서 사용된 "씬 클라이언트(thin client)"는, 다른 컴퓨터, 일반적으로 서버, 원격 컴퓨터에서 또는 다른 네트워킹된(networked) 컴퓨팅 장치에서 연산이 부분적으로 수행될 수 있는 소프트웨어 또는 하드웨어 장치이다. 씬 클라이언트는, 또한 린(lean), 슬림(slim), 또는 덤(dumb) 클라이언트라고도 하는데, 인터페이스(소프트웨어 씬 클라이언트) 또는 매우 적은 연산을 하는 리소스(resource)들(하드웨어 씬 클라이언트)을 포함하고, 하드 드라이브(hard drive)를 포함하지 않을 수 있다. 일부 실시 예들에서, 고체-상태 메모리 및 스토리지는 충분한데, 스마트폰, PDA(personal digital assistant), 타블릿 컴퓨터, 모바일 폰, 단말기 등에서 흔하기 때문이다. 일 실시 예에서, 씬 클라이언트는 스토리지 및 다른 리소스 수용력(capability)을 제공하기 위해서 그것의 서버 컴퓨터에 의존할 수 있고, 장치가 더욱 단말기(즉, 스크린, 키보드, 및 입력 장치)스럽게 작동하도록 한다. 매우 씬(thin)한 클라이언트는 관련된 서버(또는 네트워킹된 컴퓨팅 장치)가 대부분의 연산을 제공하는 것이다. 매우 씬(thin)한 클라이언트는 컴퓨터 단말기 또는 디스플레이 인터페이스를 포함한다. 만일, 팻 클라이언트(fat client)가 원격 컴퓨터에 연결되고 원격 컴퓨터가 처리의 대부분을 수행하거나 특정 컴퓨팅 세션(session)을 위해 서비스를 제공하면, 팻 클라이언트(즉, 표준 스텐드얼론 하드웨어 및 소프트웨어 모두를 가진 것) 또한 씬 클라이언트로서 작동할 수 있다.
b. 본 출원명세서에서 사용된 "원격(remote)" 액세스 클라이언트라 함은, 인터넷과 같은 네트워크 연결을 이용하여 SVM을 통해서 VM들에 액세스하는 동안 가상 센터(virtual center) 내의 하이퍼바이저상에서 실행하는 SVM 및 VM들과 같은 장소에 위치하거나(co-located) 같은 장소에 위치하지 않은(non-co-located) 클라이언트를 지칭하는 것이다. 원격 액세스는 클라이언트가 하드웨어 또는 서버 옆에 물리적으로 위치하고 있더라도 네트워킹된(유선의 또는 무선의) 연결이 수립될 수 있는 한 원격이 될 수 있다. 예를 들어, 사용자가 사실상 데스크탑 컴퓨와 동일한 위치에 있거나 혹은 지구 반대편에 있더라도, 사용자는 휴대폰(cell phone) 인터페이스를 통해서 자신의 데스크탑 컴퓨터로 로그인할 수 있다.
c. 본 출원명세서에서 사용된 "리포맷(re-format)"은, 원래 운영 시스템(OS) 의존 포맷(dependent format)과 같이 특정 포맷으로 정의된 데이터가 알고리즘에 의해 지시된 포맷으로 재정의되는 과정이다. 알고리즘에 의해 정의된 포맷은 임의의 OS 특정 포맷(OS specific format)에 구속되어 있는 것은 아니되, 복잡하지 않은 신장 프로토콜을 이용하여 해독될 수 있는 더욱 범용적인 타입으로 이루어질 수 있다. 데이터의 리포맷에서 이용될 수 있는 예시적 OS 특정 포맷은 LinuxTM, OSXTM, BeOSTM, AIXTM, MVSTM, WindowsTM 등을 위한 프레임버퍼 포맷을 포함하지만, 이에 한정되는 것은 아니다.
d. 본 출원명세서에서 사용된 "리디렉션(re-direction)"이라 함은, 미리 정의된 위치로부터 알고리즘에 의해서 정의된 새로운 위치로 데이터의 경로를 변경하는(re-routing) 과정을 지칭하는 것이다. 예를 들어, 특정 가상 머신으로부터의 데이터는 일반적으로 각각의 가상 메모리에 저장된다. 본 발명에서, 제2 가상 머신(VM2)의 메모리를 로컬적으로(locally) 찾는 제1 가상 머신(VM1)은 하이퍼바이저를 통해서 제2 가상 머신의 실제 메모리 공간에 대한 액세스를 획득한다. 제2 가상 머신의 메모리 내 데이터는 제1 가상 머신의 로컬 메모리에서 판독되고 처리될 수 있다. 산업계에서 잘 알려진 바와 같이 하이퍼바이저는 하나의 VM 액세스를 다른 VM의 장치들/리소스들에게 제공할 수 있는 능력을 가진다.
e. 본 출원명세서에서 사용된 가상화(virtualized) 컴퓨터 서비스(또는 "가상 서비스(virtual service)")라 함은, 서비스와 관련된 하드웨어 및 소프트웨어 양쪽 모두를 포함하는 가상 머신에 의해서 제공되는 서비스들을 지칭하는 것이다. 각각의 가상 머신에서 이용가능한 가상 서비스의 일부는 공유된 물리적 하드웨어 리소스들, 소프트웨어 인터페이스들, 및 하드웨어 리소스들에 액세스하기 위해 이용된 및/또는 가상 머신에서 실행하는 프로그램들을 포함하되, 이에 한정되는 것은 아니다. 가상 서비스는 원격 데스크탑을 위한 렌더링, 컴퓨터 프로그램의 원격 처리, 원격 게임, 원격으로 호스팅되는 엔터테인먼트 디지털 비디오 레코딩(digital video recording; DVR), 퍼스널 비디오 레코딩(personal video recordings; PVR), 및 사용자, 통신 프로그램, 비디오, 이미지, 픽처, 데이터, 및 메타데이터에 할당된 스토리지에 저장된 파일들에 대한 액세스를 포함하는 데이터센터(datacenter)-기반 서비스에 대한 일반적 액세스를 제공할 수 있다.
f. 본 출원명세서에서 사용된 "패키지(package)"라 함은, 디지털 네터워크를 통한 통신의 기본 단위인 데이터 패킷(data packet)들을 지칭하는 것이다. 상이한 프로토콜들이 데이터를 패키징(packaging)하기 위해 상이한 구조를 사용한다. 데이터는 서버 가상 머신과 클라이언트 사이에서 데이터를 전송하기 위해 관여된 전송 프로토콜 및 알고리즘과 관련된 특정 프로토콜을 준수하도록 포매팅(처리)된다. 전송 프로토콜은 데이터의 타입에 의존하여 패킷을 위한 구조를 제공하는데, 예를 들어, 소스(source) 인터넷 프로토콜(Internet protocol; IP) 어드레스, 목적지 IP 어드레스, 패킷의 시퀀스(sequence) 넘버, 서비스의 타입, 플랙(flag) 등을 포함할 수 있다.
g. 본 출원명세서에서 사용된 "서버 가상 머신(Server Virtual Machine)" (SVM)이라 함은, 다른 가상 머신들의 클라이언트와의 상호작용을 관리하는 가상 머신을 지칭하는 것이다. SVM은 VM의 모든 컴포넌트를 포함하고, 클라이언트에 의해 요청된 정보를 제공하는 것과 같이, 클라이언트-서버 컴퓨터 시스템에서 클라이언트를 향하여 서버와 유사한 기능을 제공하도록 구성된다. SVM은 해당 VM의 특정 메모리 공간을 액세스해서 정보를 제공한다. SVM은 이미지 액세스 알고리즘과 같은 알고리즘을 갖추는데, 이것은 SVM이 하이퍼바이저를 통해서 각각의 가상 머신의 메모리에 대한 액세스를 얻는 것을 가능하게 한다. VM의 메모리에 액세스하기 위한 알고리즘은 SVM과 같은 특정 VM에서 제공되어야 할 필요는 없지만, 가상 센터에서 동작하는 각각의 VM에서 이용가능하도록 만들어질 수 있고, 이때 각각의 VM은 다른 VM들의 SVM 관리 메모리와 같이 작동한다.
h. 본 출원명세서에서 사용된 "프레임버퍼 정보(framebuffer information)" 또는 "프레임버퍼 데이터(framebuffer data)"라 함은, 가상 머신의 가상 머신 디스플레이에서 나타내기 위해 OS에 의해 일반적으로 생성되는 비디오 출력 데이터를 지칭한다. OS는 특정 포맷으로 데이터를 생성하고, 가상 머신 디스플레이 스크린상에서 렌더링되는 다양한 엘리먼트들, 특징들, 이미들을 정의하는 모든 픽셀을 나타내는 비트맵(bitmap) 데이터로 이루어진다. 프레임버퍼 데이터는 트레이스(trace)되고, 데이터의 전체 스크린에 대해 왼쪽에서 오른쪽으로, 위에서 아래로 리프레쉬(refresh)된다. 각각의 픽셀은 스크린의 모든 디테일(detail)을 캡처하도록 컬러, 깊이(depth), 사이즈 등을 포함하도록 정의된다. 프레임버퍼 정보는 가상 머신과 같은 컴퓨팅 시스템의 메모리의 특정 일부에 저장된 그래픽 출력을 정의하는데, 이 데이터는 원래 가상 머신 디스플레이 스크린상에서 렌더링하도록 원래 예정되었었다.
i. 본 출원명세서에서 사용된 연결 파라미터(connection parameter)들은 클라이언트의 연결 요구조건들 및 다른 환경적인 요구조건들을 포함하는 클라이언트 특성들을 정의한다. 연결 파라미터들은 일반적으로 클라이언트와의 초기 핸드쉐이크(initial handshake) 동안 획득되고, 발신지 IP 어드레스와 같은 클라이언트의 위치, 사이즈 및 품질을 포함하는 연결 수용력 정보, 목적지 IP 어드레스와 같은 연결하기 위한 가상 서비스의 원하는 위치, 클라이언트의 타입, 해상도, 비트 깊이(bit depth), 리프레쉬 레이트(refresh rate), 서비스 계층 식별(identification) 등을 포함할 수 있다.
다양한 실시 예들의 이해를 용이하게 하기 위해서, 종래의 프로세스에서 사용된 가상 컴퓨터 환경의 기본 기반구조(infrastructure)의 간단한 설명이 먼저 설명되고, 원격으로 가상 서비스를 제어하기 위한 본 발명의 실시 예들에서 사용된 기본 기반구조 내에서의 신규한 특징들에 대한 상세한 설명이 이어질 것이다.
도 1은 가상 환경 내에서 가상화 컴퓨터 서비스(컴퓨터 시스템 또는 단순히, "가상 서비스")의 액세스 및 제어를 제공한기 위해 종래의 프로세스에 의해서 사용된 전형적인 가상 기반구조의 간단한 블록도이다. 가상 환경은 하이퍼바이저상에서 작동하는 복수의 가상 머신(VM)들에 의해 공유되는 물리적 하드웨어의 집합을 포함한다. 하이퍼바이저 또는 가상 머신 모니터(Virtual Machine Monitor)는 복수의 운영 시스템들이 호스트 컴퓨터상에서 동시에 작동하는 것을 가능하게 하는 컴퓨터 플랫폼(platform)-가상화(virtualization) 소프트웨어이다. 하이퍼바이저는 공유 하드웨어(shared hardware)와 VM들 사이의 인터페이스를 제공한다. 하이퍼바이저는 산업계에서 잘 알려져 있으므로, 본 출원명세서에서는 더 상세하게 설명되지 않는다.
복수의 클라이언트들은, 몇 가지만 예를 들면, RDP(Remote Desktop Protocol)과 같은 프러프라이어터리(proprietary) 프로토콜, PCOIP(PC over Internet Protocol), RGS(Remote Graphics Software Protocol), ICA(Independent Computing Architecture Protocol)을 이용하여 VM에서 이용가능한 가상 리소스들을 액세스한다. 클라이언트는 로우-엔드(low-end) 컴퓨터 단말기와 같은 씬 클라이언트, 데스크탑 컴퓨터, 랩톱 컴퓨터 등과 같은 팻 클라이언트일 수 있다. 클라이언트들은 서비스 또는 연결 브로커(broker)를 이용해서 특정 VM들에서 이용가능한 가상 리소스들에 액세스한다. 서비스 브로커는 클라이언트의 요청에서 제공된 환경 파라미터를 기초로 하여 다양한 클라이언트들에 대한 상이한 VM들의 매핑(mapping)을 제공하는 디렉토리 서비스이다. 서비스 브로커는 클라이언트가 적절한 프로토콜을 직접 이용해서 상응하는 운영 시스템(OS)에 액세스하고 상호작용하는 것이 가능하도록 클라이언트에게 요청된 서비스를 제공할 특정 VM을 결정하기 위하여 매핑 또는 연결 정보를 이용한다. 그래서, 클라이언트가 상응하는 VM으로부터 정보를 액세스하기 위하여, 클라이언트는 상응하는 OS 프로토콜을 이해하고 따를 필요가 있다. OS는 OS 프로토콜을 따른 클라이언트의 프로세서를 이용해서 클라이언트에서 처리되는 지시들의 세트(set)를 제공한다. 종래의 프로세스의 접근법은 상응하는 OS로부터의 지시들의 세트를 기초로 하여 클라이언트상의 VM에서 실제로 존재하는 것을 재생성(recreate)하는 것이었는데, 그래서 사용자는 VM에서 무엇이 진행되고 있는지에 대한 액세스를 가질 것이다. 이러한 접근법은 데이터/정보를 압축 및 신장하기 위해 데이터 교환의 양쪽 말단들에서, 즉 각각의 VM들 및 클라이언트들에서 강력한 프로세서를 가지는 결과를 초래해서, 씬 클라이언트의 사이즈 및 기능을 심하게 제한했다. 나아가, 종래의 접근법은 OS/그래픽 카드에 의존하여 상당히 플랫폼/그래픽 계층 중심적이어서, VM에서 컴퓨터 시스템/서비스를 제어하기 위해 클라이언트의 디스플레이 장치에서 VM의 모니터상에 제공된 정보를 재생성하기 위한 지시를 준다.
종래의 프로세스의 제한들을 극복하기 위하여, 본 발명의 일부 실시 예들은, 제2 가상 머신(VM)의 가상 머신 디스플레이의 그래픽 출력을 나타내는 이미지를 획득하기 위해 하이퍼바이저와 상호작용하는, 하이퍼바이저상에서 작동하는 서버 가상 머신과 같은 가상 머신 내에서 이미지 프로세서 알고리즘과 같은 알고리즘을 이용한다. 그래픽 출력은 패키징되고, 렌더링을 위해서 클라이언트로 전달된다. 렌더링된 그래픽 출력은, 제2 VM에서 수행중이거나 렌더링된 그래픽적 엘리먼트들, 아이콘들, 디스플레이들, 프로그램들, 링크들, 픽처들, 영화들, 및 다른 사용자 인터페이스 조작(manipulation) 또는 비조작(non-manipulation)을 도시하는 제2 VM의 디스플레이로 뷰(view)를 제공한다. 알고리즘은 제2 VM의 운영 시스템과 상호작용하지 않고 가상 메모리의 미리 정해진 위치로부터 직접 가상 머신 디스플레이의 이미지에 액세스해서 판독한다. 결과적으로, 알고리즘은 제2 VM상에서 작동하는 OS의 그래픽적인 지시를 따를 필요가 없다.
도 2a 내지 2c는, 본 발명의 개별적인 실시 예들에서, 임의의 OS 프로토콜에 구속되지 않고 클라이언트가 VM에서 이용가능한 가상 서비스와 원격으로 상호작용하는 것을 가능하게 하는 가상 머신 계층 내의 가상 머신에서 제공되는 알고리즘을 가지는 가상 기반구조(VI)의 예시적인 블록도들을 도시한다. 도 2d 및 2e는 VM의 프레임버퍼 정보를 액세스하는 데 사용되는 가상 기반구조(VI)의 다양한 컴포넌트들을 도시한다. 도 2f의 (1) 내지 (3)은 도 2a 내지 2c에서 도시된 실시 예들에 대응하는 프레임버퍼 정보를 액세스하는 개략도를 도시한다. 도 2g 및 2h는 프레임버퍼 데이터의 패킷들을 클라이언트로 전송하는데 관여된 전송 프로토콜 및 알고리즘 양쪽 모두의 요구조건들을 준수하기 위하여 액세스된 프레임버퍼 데이터를 패키징하는 프로세스의 개략적 블록도를 도시한다. 도 2i는 시간이 경과하는 동안 클라이언트로 보내진 데이터가 무엇인지에 대한 개략도를 도시한다. 가상 서비스를 제어하기 위한 알고리즘의 기능 및 컴포넌트들이 이 도면들을 참조로 하여 이하에서 상세하게 설명될 것이다.
이미지 프로세서:
이미지 프로세서가 매우 씬한 클라이언트를 통해서 멀리서부터 효율적으로 기능하기 위해서, 몇몇 근본적인 원리들이 플랫폼 및 운영 시스템 독립 이미지 프로세서 알고리즘의 설계 구조 내에서 의존된다.
의존되는 기본 원리들 중의 하나는 이미지 표현(image representation)이다. 대부분의 가상 머신/가상 게스트(virtual guest)들은 각각의 게스트에서 이용가능한 프레임버퍼 구조를 가진다. 본 출원명세서에서 사용된 프레임버퍼는 가상 머신의 모니터상에 디스플레이된 것의 메모리 내의 표현이다. 달리 말해, 프레임버퍼는, 처리되고 렌더링될 때 가상 머신의 가상 머신 디스플레이를 표현하는 가상 이미지를 나타내는 그래픽 출력을 정의하는 가상 머신의 메모리의 특정 부분들에서 제공된 이미지 데이터를 포함한다. 일반적으로, 하이퍼바이저상에 있는 운영 시스템은 "헤드리스(headless)"인데, 즉 이에 연결된 모니터를 필요로 하지 않는다. 이러한 경우들에 있어서, 운영 시스템은 모니터와 같은 가상 머신 디스플레이로 예정된 출력을 이미지 데이터로서 메모리 내의 특정 부분으로 향하게 한다. 모니터로 예정된 출력은 일반적으로 콘텍스트리스(context-less)인 비트맵으로서 표현된다는 점에 주목해야 한다. 메모리 내의 이러한 이미지는 개별적인 가상 머신에 대한 그래픽적 콘솔(console) 액세스를 수립하기 위해서 하이퍼바이저에 의해 이용된다. 본 출원명세서에서, 용어 "프레임버퍼(framebuffer)"는, 각각의 가상 머신(VM)과 관련된 메모리의 특정 부분들에 저장되고 비트맵으로 표현되는 이미지 데이터를 지칭하기 위한 그래픽 출력(graphical output)과 상호교환가능하게 사용된다.
프레임버퍼 구조는, 일반적으로는 모니터로 겨냥될 그래픽 신호(graphics signal)를 대신 메모리로 로딩되도록 리디렉트(redirect)하기 위한 산업적 접근법이다. 프레임버퍼 데이터는 모니터에서와 유사하게 처리되는데, 비트 깊이, 수평 스캔 레이트, 및 결정된(determined) 사이즈를 가진다. Mac OSXTM과 같은 일부 운영 시스템에서, 프레임버퍼는 고유 커널(native kernel)에 의해 로딩된다. 일부 다른 운영 시스템들에서, 커널 파라미터들이 프레임버퍼를 활성화하기 위한 스타트업 파일(startup file)들 내에서 제공된다. 가상 머신의 메모리 내의 위치와 프레임버퍼를 나타내는 이미지를 위한 그 포맷은 상응하는 운영 시스템에 의해서 유도된다.
의존되는 다른 원리는 이미지 프로세서 알고리즘(또는 단순히 "알고리즘")이 자체적으로(autonomously) 동작할 수 있도록 하는 프레임버퍼 구조의 적절한 번역(interpretation) 및 핸들링(handling)이다. 알고리즘이 플랫폼, 운영 시스템(OS), 및 서비스에 독립적이기 위해서, 알고리즘은 프레임버퍼 구조로부터 스크린상에서 프레임들을 어떻게 평가할지 결정할 수 있을 필요가 있다. 일 실시 예에서, 알고리즘은 활동 및 컬러 콘트라스트(color contrast) 상황에 기초하여 스크린상에서 관심 있는 연속적인 영역(contiguous area)을 인식할 수 있어서, 프레임 또는 특정 정보를 정의하는 관심 영역은 특정 방법들로 핸들링될 수 있다. 일 실시 예에서, 알고리즘은 스크린의 상이한 부분들을 캡처하기 위하여 다양한 기술들을 이용하도록 구성되는데, 인간의 인지 능력을 넘어가는 품질을 유지할 우선권을 가진 뷰어(viewer)에게 만족스러운(pleasing) 시각적 효과를 제공하기 위함이다. 일 실시 예에서, 스크린 부분들은 손실 있는 효과(lossy effect)들을 이용하여 캡처된다. 손실 있는 효과는 그 품질의 일부를 잃도록 데이터가 압축되는 손실 압축(lossy compression) 방법을 통해서 획득된다. 이 압축된 데이터는 신장될 때 원본과는 다르지만 원본 데이터에 충분히 가까운 데이터를 제공한다. 손실 압축 방법은 산업계에서 잘 알려져 있으며, 미디어 어플리케이션들을 위해서 오디오, 비디오, 및 그래픽 이미지들과 같은 멀티미디어 데이터를 압축하기 위해 가장 흔히 이용된다.
알고리즘이 네트워크상에서 효율적이고 성능기준에 맞도록(performant) 하기 위하여, 알고리즘은 일 실시 예에서 적절한 사용자 경험을 가능하게 하도록 호환될 수 있는 UDP(User datagram protocol)이 되게 설계된다. UDP는 수신된 패킷의 접수통지(acknowledgement)를 위한 아무런 핸드쉐이크 또는 제공이 존재하지 않는 "커넥션리스(connectionless)" 또는 "스테이트리스(stateless)" 프로토콜이라는 점에서, UDP는 전형적인 TCP(transmission control protocol)과 다르다. 일 실시 예에서, 알고리즘을 위해 선택된 프로토콜은 대역폭 변화, 대기시간, 및 손실에 민감하고 적응한다. 알고리즘이 특정 전송 프로토콜을 가지고 구성되도록 설명되지만, 이것은 예시적인 것으로 고려되어야 하며 제한적인 것으로 고려되지 않아야 한다. 프로토콜이 알고리즘에 의해 정의되고 희망된 품질, 성능, 및 기능을 제공할 수 있는 한, 다른 실시 예들은 UDP가 아닌 다른 프로토콜들과 호환될 수 있는(compatible) 알고리즘을 이용할 수 있다.
상술한 기본 원리들 및 요구조건들을 기초로 하여, 예시적인 이미지 프로세서 알고리즘의 다양한 특징들 및 기능이 이제 도 2a 내지 2c를 참조하여 설명될 것이다. 설명된 실시 예들과 일치하는 기본 동작이 유지되는 한, 예시적인 알고리즘들은 특별한 이용을 위한 일부 변형들을 수용할 수 있다고 이해되어야 한다. 도 2a에서 도시된 본 발명의 일 실시 예에서, 가상 환경 내의 복수의 VM들과 함께 하이퍼바이저 상에서 동작하는 별개의 VM에서 이미지 프로세서 알고리즘이 제공된다. 알고리즘은 VI의 기존 기반구조와 컴포넌트들에 의존적이고, "씬(thin)" 클라이언트들 또는 "팻(fat)" 클라이언트들일 수 있는 클라이언트들을 통해서 원격으로 동작할 능력을 제공하는 동안 플랫폼/OS 독립적(independent)이다.
도 2a를 참조하면, 이미지 프로세서 알고리즘(155)에는, 복수의 다른 VM들(100)과 함께 하이퍼바이저상에서 동작하는 서버 가상 머신(SVM)(150)으로서 작동하고 하이퍼바이저를 통해서 복수의 VM들(100)과 상호작용하는 가상 머신이 제공된다. SVM(150)는 다양한 VM들(100)들로부터 프레임버퍼 데이터를 액세스하고, 판독하고, 관리한다. 가상 환경의 기본 기반구조는 도 1을 참조로 하여 설명되는 것과 유사하다. 알고리즘(155)을 통한 SVM(150)과 VM들(100) 사이의 상호작용은 VM들에 국한되고, 각각의 VM과 관련된 가상 모니터 스크린상에서 렌더링될 프레임버퍼 정보를 표현하는 그래픽 출력들을 캡처하기 위해 복잡한 기술 또는 큰 CPU를 필요로 하지 않는다. 일 실시 예에서, 알고리즘은 하이퍼바이저를 통해서 직접 각각의 VM(100)의 프레임버퍼 데이터(110)를 액세스하고 판독하도록 설계된다.
도 2b는 본 발명의 다른 실시 예를 도시하는데, 하이퍼바이저상에서 동작하는 몇몇 VM들(150)은 독립적으로 알고리즘(155)을 갖춘다. 알고리즘을 독립적으로 갖춘 VM들(150)의 각각은, 하이퍼바이저상에서 동작하는 하나 이상의 다른 VM들(100)로부터 프레임버퍼 데이터를 액세스하고, 판독하고, 관리하는 도 2a의 SVM과 동일한 기능을 제공한다. 이 실시 예에서, 알고리즘을 독립적으로 갖춘 각각의 VM의 프레임버퍼 데이터는 알고리즘을 독립적으로 갖춘 다른 VM들에 의해서 액세스되고 관리될 수 있다. 도 2c는 다른 실시 예를 도시하는데, 하이퍼바이저상에서 동작하는 모든 VM들(150)은 알고리즘(155)을 독립적으로 갖춘다. 이미지 프로세서 알고리즘을 독립적으로 갖춘 VM들(150)의 각각은 가상 센터 내의 하나 이상의 다른 VM들(100)의 프레임버퍼 데이터를 액세스하고, 판독하고, 관리하는 도 2a의 SVM과 동일한 기능을 제공한다. 도 2a, 2b, 및 2c에서 도시된 각각의 실시 예에서의 알고리즘은 하이퍼바이저를 통해서 직접 VM들의 프레임버퍼 데이터에 액세스한다. VM 내의 알고리즘이 하이퍼바이저상에서 동작하는 다른 VM들의 프레임버퍼 데이터를 액세스하는 것에만 제한되지 않으며, 하이퍼바이저를 통해서 직접 그 자신의 프레임버퍼 데이터를 액세스하게도 구성된다는 점에 주목해야 한다. 상술한 실시 예들은 예시적인 것이며 제한으로서 이해되지 않아야 한다는 점에 주목해야 한다. 따라서, 임의의 치환 및 조합이 하이퍼바이저상에서 동작하는 특정 VM, VM들 중의 특정 몇 개들, 또는 VM들 전부에서 독립적으로 이미지 프로세서 알고리즘을 제공하기 위해 이용될 수 있고, VM 리소스들 및 접근성(accessibility)을 기초로 할 수 있다는 점을 당업자는 이해할 것이다.
판독된 프레임버퍼 데이터는 알고리즘에 의해서 알고리즘의 요구조건들을 준수하는 이미지 데이터 패킷들로 처리되고 알고리즘을 실행하고 있는 VM 내 가상 NIC(network interface card)로 전달되는데, 이미지 데이터 패킷들은 UDP와 같은 전송 프로토콜의 요구조건들을 준수하도록 추가로 패키징된다. 이후, 패키징된 이미지 데이터는 UDP 프로토콜 또는 다른 기능적으로 등가적인 방식을 이용하여 전송된다.
프레임버퍼 데이터의 액세스, 판독의 프로세스 및 관여된 다양한 컴포넌트들의 역할이 이제 도 2d 및 2e를 참조하여 설명될 것이다. 도 2d는 특정 VM과 관련된 운영 시스템(OS)에 의해 프레임버퍼 데이터를 지시하는데 사용된 전형적인 접근법을 도시한다. 각각의 VM의 OS는 VM과 관련된 모니트에서 일반적으로 표현된 특정 VM을 위한 그래픽 출력을 표현하는 이미지 데이터를 캡처하기 위한 비디오 드라이버를 포함한다. OS 내의 비디오 드라이버는 이미지 데이터를 OS에 제공된 물리적 비디오 카드로 이미지 데이터를 향하게 한다. 비디오 카드(video card)는 VM을 위한 이미지 데이터를 그래픽 이미지로 번역하고, VM의 가상 머신 디스플레이에서 번역된 그래픽 이미지를 나타낸다. 일반적으로 특별한 하이퍼바이저 액세스 툴을 가진 VM인 하이퍼바이저를 위해 명령 센터에서 일하는 관리자/사용자는 문제해결(troubleshoot)을 위해서 또는 일반적으로 VM에서 이용가능한 하나 이상의 서비스를 제어하기 위해서 VM에 액세스하고 VM의 가상 머신 디스플레이에 접속한다.
알려진 바와 같이, 프레임버퍼를 캡처하는 다수의 방법이 존재한다. 상술한 예들은 프레임버퍼를 캡처하는 방법이 계속 변하고 확장될 것이라는 것을 생각하도록 제공된다. 예를 들어, 프레임버퍼를 액세스하는 것은 하이퍼바이저의 개발자에게 의존할 것이고, 특정 API들은 특정 VM들을 위한 프레임버퍼들의 위치를 찾는데 이용될 수 있다. API들은, 특정 프레임버퍼들을 식별하고 이 특정 VM들을 위한 프레임버퍼 데이터를 판독하기 위한 프로토콜을 정의할 수 있다. 이러한 것의 목적은 포맷과 무관하게 프레임버퍼를 판독하고 캡처하는 것이다.
일반적으로 VM의 가상 모니터로 향한 그래픽 이미지는 대신 프레임버퍼 데이터로서 가상 센터 내에서 가상 메모리 계층 내의 미리 정의된 위치로 향해진다. 이미지 프로세서 알고리즘는 가상 메모리 계층 내의 미리 정의된 위치에서 VM의 프레임버퍼 데이터에 대한 액세스를 얻기 위해 하이퍼바이저와 직접 상호작용해서, 번역하고, 처리하고, 패키징하고, 처리된 프레임버퍼 데이터를 클라이언트로 전송한다.
도 2e는 가상 센터 내에서 가상 그래픽 카드를 이용해서 특정 가상 머신에 대한 프레임버퍼 데이터를 액세스하는 과정을 도시한다. 도 2e에서 도시된 바와 같이, VM상에서 동작하는 OS는 비디오 드라이버를 포함한다. 가상 센터에서 이용가능한 하이퍼바이저는 가상 그래픽 카드를 포함한다. VM의 OS에서의 비디오 드라이버는 물리적 비디오 (그래픽) 카드로서 인식한 것과 상호작용한다. 대신, OS는 실제로, 하이퍼바이저가 물리적 그래픽 카드로서 각각의 VM의 OS에 제시한 가상 그래픽 카드와 상호작용한다. VM의 OS는 VM의 가상 머신 디스플레이를 일반적으로 타겟(target)으로 한 데이터의 아날로구 또는 디지털 표현을 프레임버퍼 데이터로 처리한다. 그래픽 출력을 표현하는 프레임버퍼 데이터는 VM의 그래픽 드라이버를 통해서 가상 그래픽 카드에 기록된다. 차례로, 가상 그래픽 카드는 하이퍼바이저를 통해서 액세스가능한 하부(underlying) 가상 메모리 계층에 위치한 상응하는 미리 정해진 메모리 위치로 프레임버퍼 데이터를 로딩한다.
가상 그래픽 카드는, 하이퍼바이저를 통해서 액세스가능한 하부 가상 메모리 계층 내 미리 정해진 메모리 어드레스에 프레임 정보를 쓰기 위하여, 상이한 VM들에서 동작하는 OS들을 지시하는 모든 VM들에게 하이퍼바이저에 의해서 제시된 VESA(Video Electronics Standards Association) 카드와 같은 일반 카드(generic card)이다. 하위 메모리 계층에 저장된 프레임버퍼 정보는 일반적으로 비트맵의 형태라는 점이 주목되어야 한다. 비트맵은 미가공된(raw) 콘텍스트리스 데이터이다. 알고리즘을 이용해서 가상 머신은, 모든 VM들을 위해 하부 메모리, 장치들, 및 리소스들을 관리하고 있는 하이퍼바이저를 통해서 모든 VM들의 프레임버퍼 데이터를 액세스할 수 있다. 프레임버퍼 정보(데이터)는 예를 들어 /dev/fb0과 같은 장치 위치를 이용하여 커널을 통해서 종종 이용가능하다. 하이퍼바이저와 같이 동일한 버스상에 있는 이미지 프로세스와 같은 SVM(예컨대, LFP 서버) 내의 알고리즘은 클라이언트로부터 연결 정보를 이용해서 하이퍼바이저를 통해서 직접 특정 VM을 위한 프레임버퍼 정보에 액세스하고 판독하며, 변화들 및 임의의 새롭게 획득된 프레임 버퍼 데이터를 위한 특정 VM의 판독된 프레임버퍼 데이터를 분석하고, 분석을 기초로 하여 프레임버퍼 데이터를 처리하고, 사용될 압축 기술을 결정하고, 복수의 이미지 데이터 패킷들을 생성하고, 이후 알고리즘 및 UDP와 같은 일반 전송 프로토콜 둘 다를 전송하는 프레임버퍼 정보의 패킷들을 패키징하고, 각각의 디스플레이 장치에서 렌더링하기 위해 패키징된 프레임버퍼 데이터를 클라이언트로 전송하고, 패킷의 도착을 측정하고, 필요한 바와 같은 데이터를 재전송한다. 프레임버퍼 데이터의 처리 동안, 프레임버퍼 데이터와 관련된 콘텍스트가 결정되고 적절한 맥락성(contextual) 정보가 프레임버퍼 데이터와 연계된다.
도 2f의 (1) 내지 (3)은 프레임버퍼 데이터를 저장하고 액세스하는데 사용된 흐름 경로의 개략적 블록도를 도시한다. 도 2f의 (1)은 일 실시 예를 도시하는데, 하이퍼바이저상에서 작동 중인 VM(100)에서 실행되고 있는 OS는 상응하는 프레임버퍼 데이터를 가상 기반구조 내의 가상 메모리 계층의 특정 위치 FB1(110)로 향하게 한다. 따라서, 실행 동안, VM1(100)은 비디오 드라이버와 가상 그래픽 카드의 도움을 받아서, 경로(110-1)에 의해 도시된 바와 같이, 위치 FB1에서 각각의 프레임버퍼 데이터를 저장한다. 알고리즘(155)은, 경로(110-2)에 의해 도시된 바와 같이, 하이퍼바이저를 통해서 직접 FB1에서 VM을 위한 저장된 프레임버퍼 데이터에 액세스한다. 유사하게, 도 2f의 (2)는 다른 실시 예를 도시하는데, 하이퍼바이저상에서 작동 중인 VM(100)에서 실행되고 있는 OS는, LFP 알고리즘(155)이 FB1으로부터 프레임버퍼 정보를 직접 액세스할 수 있도록 특정 메모리 위치 FB1 내에 프레임버퍼 데이터를 저장한다. 도 2f의 (3)에서 도시된 다른 실시 예에서, 알고리즘을 실행하고 있는 VM은 서버 VM(150)로서 작동하는데, SVM의 OS는 경로(110-1)에 의해서 도시된 바와 같이 SVM의 프레임버퍼 정보가 하부 메모리 FB1의 특정 부분에 저장되도록 지시하고, 경로(110-2)를 통해서 직접 FB1로부터 저장된 프레임버퍼 정보를 액세스한다.
상이한 VM들로부터의 프레임버퍼 정보는 VM들 상에서 실행되는 운영시스템들에 의해서 유도되고, 다양한 포맷으로 이루어질 수 있을 것이다. 알고리즘은, 상이한 OS에 의해서 제시된 프레임버퍼 정보로의 액세스를 가능하게 하고, 상이한 OS들로부터의 프레임버퍼 정보를 상황 메시지(situational message) 타입들로 이루어진 "라이트웨이트 프레임버퍼 프로토콜(Lightweight frame buffer)" 툴과 같은 알고리즘 내에서 이용가능한 포매팅(formatting) 툴을 이용하여 일반 포맷의 패킷으로 변환해서, UDP(user datagram protocol)과 같은 전송 프로토콜을 이용하여 리포맷된 프레임버퍼 정보를 클라이언트로 전송하라는 지시를 제공한다. 상술한 바와 같이, 프레임버퍼 정보는 그것에 아무런 컨택스트가 부착되어 있지 않은 미가공의 비트맵 정보이다. 알고리즘은 VM을 위한 특정 메모리 위치로부터 프레임버퍼 데이터와 관련된 비트맵 정보를 판독하고, 활동(activity) 및 비활동(inactivity)의 영역을 식별함으로써 비트맵 데이터를 분석하고, 분석을 기초로 하여 데이터에 콘텍스트를 추가하고, 추가된 맥락성 정보를 가진 더 작은 패킷들을 생성한다. 예를 들어, 데이터 분석은 프레임 및 프레임 내에서의 활동 영역을 식별할 수 있다. 콘텍스트가 로딩된(context-loaded) 패킷들은 알고리즘 내에서 이용가능한 포매팅 알고리즘을 이용하고 패키징되고, 패킷들이 전송 프로토콜을 준수하기 위해 추가적인 패키징을 겪는 SVM 내에서 가상 NIC로 전달된다. 완전히 처리되고 패키징된 데이터는 렌더링을 위해 클라이언트로 전달된다. 프레임버퍼 데이터에 대한 대부분의 분석 및 콘텍스트 렌더링은 알고리즘을 이용해서 SVM 또는 VM 내에서 및 가상 센터 내에서 지역적으로 수행된다는 점이 주목되어야 한다. 결과적으로, 클라이언트 단에서 수행될 추가적 분석 또는 해독을 위한 또는 콘텍스트를 이해하기 위해 프레임버퍼 데이터를 분석하기 위한 아무런 필요가 존재하지 않는다. 클라이언트는 단지 로딩된 콘텍스트를 가지고 비트맵 데이터를 언패키징(unpackage)해서 클라이언트의 디스플레이 장치상에서 렌더링해야 한다. 클라이언트는 SVM에 상실된 정보를 조회하고, 서버는 요구되는 바와 같이 재전송한다. 메시지 타입들 및 패킷 정보는 상대적으로 작고 단순하기 때문에, 재전송은 약간의 오버헤드(overhead)를 가지고 외과적으로(surgically) 수행될 수 있다.
도 2g는 클라이언트로의 전방향(onward) 전송 및 렌더링된 패킷에 응답하여 클라이언트로부터의 피드백을 위해 프레임버퍼 데이터를 액세스하고 패키징하는 과정을 도시한다. 도시된 바와 같이, 가상 메모리의 특정 위치(FB1)에서 이용가능한 VM의 프레임버퍼 데이터(110)는 포매팅 알고리즘을 포함하는 LFP와 같은 SVM의 이미지 프로세서 알고리즘(155)에 의해 직접 액세스된다. 알고리즘(155)은 API, 메모리 어드레스 등을 이용해서 저장된 프레임버퍼 정보를 액세스하고 판독할 수 있다. 알고리즘(155)은 이후 SVM의 프로세서를 이용해서 SVM의 메모리(130) 내에서 프레임버퍼 데이터의 더 작은 이미지 데이터 패킷들(203)을 생성하기 위해 프레임버퍼 데이터를 처리한다. 프레임버퍼 데이터의 처리는 콘텍스트를 식별하기 위해 프레임버퍼 데이터를 분석하는 것 및 이미지 데이터 패킷들(203)을 생성할 때 데이터와 맥락성 정보를 통합하는 것을 포함한다. 프레임버퍼 데이터를 액세스하고 패키징하는 과정이 SVM상에서 실행되고 있는 알고리즘을 참조로 하여 설명되지만, 알고리즘은 SVM상에서 실행되는 것으로만 제한되지 않으며, VM상에서도 실행되고 있을 수 있고, 프레임버퍼 데이터를 액세스하고 있을 수도 있다는 점이 이해되어야 한다. 이미지 데이터 패킷들(203)은 클라이언트의 연결 파라미터들의 요구조건들을 준수하도록 이미지 프로세서 알고리즘(155) 내에서 이용가능한 포매팅 알고리즘을 이용해서 생성되고, 클라이언트에 특유(specific)하다. 상술한 바와 같이, 연결 파라미터들은 수락가능한 패킷 사이즈, 클라이언트 타입 등과 같은 클라이언트의 특성 세부사항들을 제공해서, 알고리즘(155)은 클라이언트를 위해 패킷들(203)을 생성할 때 이들 요구조건들을 고려할 수 있다. 패킷들(203)은, 패킷들이 알고리즘에 의해 제공된 패키지 위에 네트워크 패키징을 추가하는 추가적 처리를 겪는 가상 NIC(network interface card)로 전달된다. 결과로 얻어지는 처리된 패키지(204)는 알고리즘 패키지 정보 및 네트워크 패키지 정보 둘 다를 포함한다. 완전히 처리된 패킷들(204)은 클라이언트(200)와 관련된 디스플레이 장치에서 렌더링하기 위해 전송 프로토콜을 이용해서 클라이언트(200)로 전달된다.
도 2g를 계속 참조하면, 클라이언트(200)를 타겟으로 하는 패킷들은 클라이언트 NIC(210-a)에 의해 수신된다. 클라이언트 NIC(210-a)는 클라이언트의 각각에서 이용가능한 표준 NIC 카드이며, 각각의 패킷의 외부 NIC 특정 네트워크 패키지(204)를 스트립(strip)하고, 스트립 다운된(stripped down) 패키지(203)를 클라이언트 LFP(210-b)와 같은 클라이언트 알고리즘으로 전달하는데 이용된다. 클라이언트 LFP(210-b)는, 클라이언트의 NIC로부터 수신된 스트립 다운된 패키지를 판독하고 알고리즘 특정 패키지를 스트립하기 위해 데이터를 처리하는데 이용되는 VM에서 제공된 이미지 프로세서 알고리즘의 단순한 버전이다. 패키지 정보를 스트립한 이후에 획득된 결과적인 부분적(partial) 프레임버퍼 데이터는 클라이언트의 디스플레이 장치에서 어셈블(assemble)되고 렌더링된다. 스트립 다운된 프레임버퍼 데이터는 비트맵 정보 및 관련 콘텍스트를 포함하고, 클라이언트에 특유하다. 패킷들은 단순하고 일반적인 알고리즘을 이용해서 패키징되기 때문에, 클라이언트의 LFP 알고리즘에서 신장 로직 또한 단순하고, 복잡한 처리를 요하지 않아서 클라이언트에서의 더욱 무거운 CPU를 방지한다. 결과적으로, 씬-클라이언트조차 단순한 신장로직을 이용해서 패키지를 신장할 수 있다.
키보드 스트로크 또는 마우스 클릭과 같은 임의의 사용자 입력은 렌더링된 출력에서 캡처될 수 있고, 일 실시 예에서 백채널 통신을 통해서 SVM으로 다시(back) 전송될 수 있다. 다른 실시 예에서, 커넥선의 상태에 대한 자동 피드백이 주기적으로 클라이언트 장치로부터 SVM으로 보내질 수 있다. 이러한 사용자 입력 및 자동적 피드백은 클라이언트 알고리즘 및 클라이언트 NIC를 이용해서 패키징될 수 있다. 패키징된 사용자 입력 및 피드백 패킷들(205)은 이들이 신장되고 처리되는 SVM으로 다시 전달된다. 본 발명의 일 실시 예에서, 사용자 입력 및 피드백 패킷들(205)은 클라이언트(200)에서 렌더링된 것 및 연결의 상태를 알고리즘에게 통지하기 위하여 SVM으로 전달된다. 다른 실시 예에서, 사용자 입력 및 피드백 패킷들(205)은 각각의 OS를 통해 상응하는 VM에서 실행 중인 하나 이상의 어플리케이션으로 전달된다. 사용자 입력 및 피드백 패킷들(205)의 패키징은 데이터 목적지를 기초로 한다.
프레임버퍼 데이터를 패키징하기 위해 이용된 포매팅 알고리즘은 정보를 요청하는 클라이언트와 관련이 있는 정보에 의존한다. 클라이언트 관련 정보는 클라이언트의 특성들을 정의하고, 클라이언트의 타입, 클라이언트상에서 작동 중인 OS의 타입, 및 다른 환경 의존적인 파라미터들을 정의하는 연결 파라미터들을 분석함으로써 획득된다. 포매팅 알고리즘은 프레임버퍼 데이털를 적절히 패키징하기 위해 이 정보를 이용한다. 예를 들어, 도 2h에서 도시된 일 실시 예에서, 포매팅 알고리즘은 양질의 리프레시 비율(refresh rate)을 제공하는 기술을 이용하여 단순한 이미지 렌더링 컨텐츠(203-b)를 생성하기 위해서 모바일 폰-품질의 씬 클라이언트를 위한 클라이언트 관련 정보를 이용하고, 포매팅 알고리즘은 더 풍부한(richer) 경험을 위해서 조정되는(tailor) 복잡한 메시지 타입(203-a)을 생성하기 위해서 데스크탑-기반의 씬 클라이언트를 위한 클라이언트 관련 정보를 이용한다. PDA(personal digital assistant)-품질의 씬 클라이언트를 위한 이미지 렌더링 콘텐츠(203) 및 텔레비전 모니터/스크린/디스플레이-기반의 클라이언트를 위한 이미지 렌더링 콘텐츠(203-c)와 같은 다른 타입의 클라이언트들을 위한 추가적인 포맷들 또한 포매팅 알고리즘을 이용해서 생성될 수 있다. 게다가, 포매팅된 그래픽 출력은 전송을 위해서 UDP를 이용하기 때문에, 클라이언트는 긴 또는 짧은 거리를 통해서 서비스를 액세스하고 제어할 수 있다. UDP 프로토콜을 이용해서 생성된 그래픽 출력은 포매팅 알고리즘으로부터 수신된 특정-클라이언트 기반 패킷들로부터의 다양한 입력을 기초로 하여 달라진다. 따라서, 그래픽 출력(204)은 이미지 렌더링 콘텐츠(203)에 대응하고, 그래픽 출력(204-a)은 이미지 렌더링 콘텐츠(203-a)에 대응하는 등이다. 데이터의 전송에 있어서 이용된 UDP는 예시적인 것이며 한정하는 것으로 고려되지 않아야 한다는 점에 주목해야 한다. 긴 또는 짧은 거리를 통해서 서비스에 액세스하는 클라이언트의 능력이 유지되는 한 다른 전송 프로토콜이 이용될 수 있다.
설명한 바와 같이, 이미지 프로세서 알고리즘은 하이퍼바이저를 통해서 직접 각각의 VM을 위한 프레임버퍼 정보에 액세스해서, 알고리즘이 적절한 프레임버퍼 정보를 검색하고, 처리하고, 패키징하고, 클라이언트로 전송할 수 있다. 알고리즘은 임의의 OS와 상호작용하지 않으며, 결과적으로 하이버파이저로부터 프레임버퍼 정보를 검색하기 위해서 임의의 프러프라이어터리 프로토콜을 필요로 하지 않는다. 알고리즘이 적절한 VM과 관련된 프레임버퍼를 식별하도록 지원하기 위해서, 하이퍼바이저는 적절한 VM들의 프레임버퍼로 클라이언트 요청을 매핑하는 메모리 및 장치 메니저를 포함한다. 클라이언트가 연결에 대해서 요청하는 경우에, 일 실시 예에서 SVM 내의 알고리즘은 연결 요청과 관련된 연결 파라미터를 질의하고(interrogate), 가상 서비스를 제공할 수 있는 VM의 세부사항들 및 클라이언트의 아이덴터티(identity)를 결정하고, VM을 식별하고 위치를 파악한 하이퍼바이저에서의 메모리 관리자와 상호작용한다. 연결 파라미터로부터의 정보와 메모리 및 장치 관리자로부터의 매핑 정보를 이용해서, 하이퍼바이저가 장치 및 메모리즐 SVM에서 알고리즘에게 이용가능하게 만들 때, 알고리즘은 VM을 식별하고, 이후 미리 정해진 메모리 위치로부터 식별된 VM의 프레임버퍼에 직접 액세스한다.
알고리즘의 기능의 상기 일반적인 이해에 있어서, 알고리즘의 다양한 관점들이 이제 상세하게 설명될 것이다. 각각의 VM의 프레임버퍼 데이터의 적절한 부분들의 캡처 및 전송을 지원하기 위해서, 알고리즘은 복수의 모듈들을 포함한다. 이 모듈들은, 모두 단일한 이미지 프로세서 알고리즘으로 통합될 수 있거나 독립적인 모듈로서 존재할 수 있는 소프트웨어(및/또는 하드웨어) 모듈들이다. 알고리즘에 포함된 모듈들이 일부는 스캔 엔진(Scan Engine), 히트 엔진(Heat Engine), 콘텍스트 엔진(Context Engine), 로직 엔진(Logic Engine), 연결 엔진(Connection Engine), 및 출력 엔진(Output Engine)을 포함한다.
스캔 엔진은 VM의 프레임버퍼에서의 변화 및 가상 이미지를 인식하도록 구성되고, 시간-기반(time-based) 구조에서 프레임버퍼의 상태 메인터넌스(state maintenance)를 저장한다. 도 2i는, 각각의 프레임버퍼 데이터를 위해서 유지되고 전송된 시간-기반 구조의 샘플을 도시한다. 예를 들어, 클라이언트 특성 정보를 기초로 하여, 클라이언트를 위한 이미지 구조가 클라이언트의 디스플레이 장치를 위해서 어셈블된다. 일 실시 예에서, 이미지 구조는 LFP 앱 서버(app server) 1로부터 획득된 정보를 포함할 수 있다. 도 2i-1에서 도시된 다른 실시 예에서, 앱 서버 1로부터의 정보에 부가하여, 이미지 구조는 또한, LFP "애드(ad)" 서버로부터 광고 정보와 같은 정보 및 LFP 앱 서버 3으로부터 획득된 것과 같은 다른 앱 서버 정보를 포함할 수 있다. 이미지 구조 정보에 부가하여, 각각의 소스들로부터 이미지 구조 정보와 관련된 임의의 델타(delta)들 또한 캡처되고, 패키징되고, 전송된다. 각각의 이미지 구조 정보는 비트맵 정보로서 획득되기 때문에, 비트맵의 관련 섹션의 정보만이 각각의 LFP 서버로부터 전송된다. 그래서, 도 2i의 (1)에서 도시된 바와 같이, LFP 앱 서버 1로부터의 비트맵 정보는 박스 1 및 박스 2에 의해 커버된 영역을 제외하고 모든 비트맵 정보 및 LFP 앱 서버 1로부터의 임의의 델타를 포함한다. LFP 애드 서버로부터 획득된 임의의 델타를 포함하는 박스 1을 위한 정보 및 임의의 델타를 포함하는 박스 2를 위한 정보는 LFP 앱 서버 3으로부터 획득된다. 다양한 소스들로부터의 비트맵 정보는 대역-내(in-band) 전송으로서 수신된다. 그래서, 정보가 전송될 때, 이미지 데이터는 각각의 소스로부터의 관련 정보만이 포함된 클라이언트의 디스플레이 장치에서 신장되고, 어셈블되어, 네트워크 대역폭 및 컴퓨팅 리소스들을 아낀다.
대역-내 전송뿐 아니라, 알고리즘은 대역-외(out-of-band) 전송이 클라이언트에서 렌더링되는 것을 가능하게 한다. 그래서, 도 2i의 (2)에서 도시된 바와 같이, 디스플레이 모니터에서 가시적(visible) 영역을 위해서 대역-내 전송과 관련 있는 정보 및 임의의 델터가 클라이언트에서 획득되고 렌더링된다. 이 실시 예에서, 비가시적(invisible) 영역을 위한 정보는 획득되지 않아서, 네트워크 대역폭 및 처리 리소스들을 아낀다. 일 실시 예에서, 클라이언트이 전체 스크린은 비디오 스트림과 같은 대역-외 스트림을 렌더링하기 위해서 이용될 수 있다. 이 실시 예에서, 정보를 렌더링하기 위해 클라이언트의 디스플레이 장치에서 가시적 공간이 존재하지 않기 때문에, 알고리즘은 대역-외 스트림을 렌더링하기 위해 사용되는 디스플레이 영역의 양을 결정하고, 클라이언트를 위한 임의의 대역-내 전송 패킷들을 생성하는 것을 지능적으로 피함으로써, 네트워크 및 처리 리소스들 및 처리 시간을 아낀다. 그래서, 알고리즘은 어느 프레임 버퍼 데이터가 렌더링될지와 어떤 소스들이 사용될지를 결정하기 위한 지능(intelligence)을 제공하고, 이미지 구조는 이 결정을 기초로 하여 생성된다.
도 3b를 다시 참조하면, 히트 엔진은 VM의 프레임버퍼의 그래픽 프레임 내에서 활동 영역들의 위치를 파악하는 정밀성(precision)의 슬라이딩 스케일(sliding scale)을 가지고, 상태 활동의 속도 미분(derivative)으로서 활동의 레벨을 인식하도록 구성된다. 콘텍스트 엔진은 연속적인 영역들이 활동(activity)과 같은 엘리먼트들에 의해서 식별될 수 있는지 여부를 결정하기 위해 히트 엔진 출력을 평가해서, 구체적인 특별한 기술을 가지고 영역들을 처리하도록 구성된다. 로직 엔진은 히트 엔진을 통해서 VM의 프레임버퍼로부터 획득된 히트의 레이트(rate of heat), 컬러 구성, 히트 영역의 콘트라스트(contrast), 콘텍스트 엔진으로부터의 입력, 연결된 씬 클라이언트의 플랫폼, 및 연결 엔진으로부터 획득된 연결의 품질과 같은 다양한 모듈들로부터의 입력들을 기초로 하여 압축/전송을 위해서 어떤 기술이 채용되어야할지를 결정하도록 구성된다. 로직 엔진은 또한 선택된 기술을 가지고 분석된 이미지 데이터 정보를 인코딩(encode)하도록 구성된다.
연결 엔진은 a) 초기 핸드쉐이크 및 연결 다이얼로그의 진행중인 품질을 위한 씬 클라이언트; b) 품질 문제들을 획득하고 처리하기 위한 로직 엔진; c) 스캔 엔진이 적절한 VM의 프레임버퍼를 살피도록 지시하기 위한 스캔 엔진과 같은 복수의 모듈들과 상호작용하도록 구성된다. 연결 엔진은 사용자-대-자산(user-to-asset) 디렉토리 시스템과 상호작용함으로써 적절한 VM의 프레임버퍼를 식별한다. 연결 엔진은 또한, 클라이언트의 위치를 결정하기 위하여 출력 엔진과 상호작용해서 VM의 프레임버퍼 정보의 전송이 적절하게 지시될 수 있도록 구성된다.
출력 엔진은, 커스텀 헤더(custom header)를 설계해서 UDP와 같은 단순 전송 프로토콜을 이용하여 효율적인 방식으로 커스텀 헤더 및 관련 데이터를 씬 클라이언트로 전송하기 위한 최적 패킷을 정의하도록 구성된다.
일 실시 예에서, 알고리즘은 하이퍼바이저와 상호작용하고 VM의 OS와 직접 상호작용하지 않는다. 대안적인 실시 예에서, 일부 OS 상호작용이 가능할 수 있다. 개의치않고, 알고리즘은 OS로부터 하부 하드웨어로의 그래픽 지시에 투명할 것이다. 스크린 정보를 캡처하는 전형적인 프로세스는 ATI 테크놀로지 주식회사(ATI Technologies Inc.) 또는 NVIDIATM으로부터의 그래픽 카드와 같은 그래픽 카드의 이용을 통한 것이었다. 이것은 좋지못한(poor) 성능 및 낮은 사용자 만족도를 초래하는 가상 환경의 오버헤드에 부가된 많은 CPU 파워와 커스터마이즈(customize)된 압축/신장을 요하였다. 본 실시 예들에 있어서, 알고리즘은 각각의 VM들의 프레임버퍼 정보를 직접 액세스하기 위해서 하이퍼바이저와 상호작용한다. 게다가, 프레임버퍼 데이터가 비가공 비트맵 데이터 포맷이고, 알고리즘이 비가공 비트맵 포맷을 리포맷하기 때문에, 그래픽 지시를 해독하기 위해서 복잡한 압축/신장 로직을 필요로 하지 않는다. 알고리즘은 OS로부터의 실제 지시가 아니라 하이퍼바이저를 통해서 프레임버퍼를 검색하는데 집중되므로, 프러프라이어터리 프로토콜을 인코딩(encoding)/디코딩(decoding)할 필요가 없고, 이것을 OS/그래픽 카드에 독립적이게 한다.
알고리즘 내의 다양한 모듈들의 세부사항들이 이제 도 3a 및 3b를 참조하여 각각 설명될 것이다. 도 3a 및 3b는 특정 VM을 위한 프레임버퍼를 레버리지(leverage)하는데 관여된 다양한 컴포넌트의 개략적 블록도를 도시한다. 도 3a는 시스템 컴포넌트들 및 VM 내의 가상 서비스를 제어하기 위한 다양한 컴포넌트들 사이에서의 상호작용의 간단한 개요를 도시하고, 도 3b는 하이퍼바이저를 통해서 특정 VM을 위한 프레임버퍼를 레버리지하고 상응하는 프레임버퍼와 관련 있는 데이터의 상응하는 클라이언트로의 전송을 지시하는 알고리즘에 의해서 사용된 프로세스의 흐름과 함께 이미지 프로세서 알고리즘의 다양한 컴포넌트들의 개략적 블록도를 도시한다. 클라이언트는 "씬(thin)" 클라이언트 또는 "팻(fat)" 클라이언트일 수 있다. 씬 클라이언트는 모바일 장치, 퍼스널 디지털 어시스턴스, 휴대폰, 스크린, 넷북, 키오스크, 스마트폰, 타블릿, 또는 이러한 다른 장치들 중의 어느 것이라도 포함할 수 있다. 팻 클라이언트는 데스크탑 컴퓨터, 랩톱 컴퓨터, 워크스테이션 등을 포함할 수 있다. 씬 및 팻 클라이언트들의 상기 목록은 예시적인 것이며, 제한적인 것으로 이해되지 않아야 한다.
도 3a에 도시된 바와 같이, 본 발명의 일 실시 예에서, 이미지 프로세서 알고리즘과 같은 알고리즘은 다른 VM들과 함께 하이퍼바이저에서 작동하는 LFP(Lightweight Framebuffer Protocol) SVM과 같이, 서버 VM 내에서 제공된다. 이 실시 예에서, SVM은 다른 VM들과 구별된다. 알고리즘은 연결 요청을 수신하고, 연결(또는 환경) 파라미터들을 질의하고, 연결 요청에서 요청된 가상 서비스를 제공하는 VM을 식별하고, 식별된 VM과 관련된 프레임버퍼 데이터를 액세스하고 판독하고, 프레임 버퍼 데이터를 이미지 엘리먼트로 패키지하고, 연송적인 활동 영역들 및 활동 레벨을 결정하기 위해서 프레임버퍼를 주기적으로 스캔하고, 컨택스트를 식별하고, 이미지 엘리먼트를 처리, 패키징, 및 렌더링하기 위한 클라이언트로의 전송을 위해 사용할 적절한 기술(들)을 결정하고, 이미지 엘리먼트들을 전송하기 위해서, 스캔 엔진, 히트 엔진, 콘텍스트 엔진, 로직 엔진, 연결 엔진, 및 출력 엔진과 같은 복수의 모듈들을 포함한다.
알고리즘을 가진 모듈들은, 요청이 적절하게 지시될 수 있도록 특정 VM상에서 이용가능한 서비스를 클라이언트에 매핑하는 것을 결정하기 위한 디렉토리 서비스(310), 시간의 경과에 대해 활동의 레벨을 기초로 하여 활동의 영역들을 저장하기 위한 시간-기반 상태 메인터넌스(time-based state maintenance) 데이터베이스(320), 프레임들을 인식하기 위해 변경된 상이한 영역들을 결정하고 로직 엔진이 이 영역들에만 집중해서 비활동 영역을 무시할 수 있도록 하는 변경 영역(areas-of-change) 데이터베이스(330), 클라이언트로의 전송 이전에 관련 이미지 영역들을 압축하기 위해 이용하기 위한 적절한 기술(들)을 식별하기 위한 압축/전송 기술 데이터베이스(340)와 상호작용한다. 알고리즘 외부의 연결 또는 서비스 브로커는 VM을 식별하는데 있어서 도움을 줘서, 알고리즘의 모듈들이 이미지 데이터 엘리먼트로서 클라이언트로의 온워드 전송을 위하여 프레임버퍼 데이터에 대한 액세스를 획득하기 위해 식별된 VM과 상호작용하는 것을 가능하게 한다. 전송된 이미지 데이터 엘리먼트는 클라이언트에서 수신되고, 여기서 엘리먼트들은 디코딩되고, 신장이 수행되고, 신장된 데이터는 클라이언트와 관련된 디스플레이 장치에서 렌더링하기 위해 제공된다. 렌더링된 데이터는 클라이언트에 특유하고, 특정 VM의 VM 디스플레이의 이미지를 표현한다. 따라서, 렌더링된 이미지는 그래픽 엘리먼트, 아이콘, 디스플레이, 프로그램, 링크, 픽처, 영화, 및 VM에서 렌더링되거나 실행중인 사용자 인터페이스 조작 또는 비조작을 도시한다. 사용자 상호작용은 클라이언트에서 가능하게 되고, 사용자 상호작용은 VM에서 가상화 서비스의 제어를 낳는 백채널 통신을 이용해서 VM으로 다시 전송된다. 알고리즘에 의해 제공된 서비스는 특정 VM의 VM 디스플레이의 이미지와 같은 디스플레이 서비스라는 점에 주목해야 한다.
알고리즘은 또한, 스캔 엔진이 특정 타입의 활동의 연속적인 영역들을 갖는 프레임버퍼의 부분들을 결정하는 것을 가능하게 해서, 전문적인 기술들이 연속적인 영역의 일부를 추출하고, 패키징하고, 패키지를 전송하기 위해서 이용될 수 있다. 일 실시 예에서, 대역-외 스트림들이 인보크(invoke)될 수 있고, 여기서 프레임버퍼 데이터는 신장되며 클라이언트와 관련된 디스플레이 장치상에 오버레이(overlay)된다. 일반적으로 비디오 컨텐츠 멀티미디어 데이터가 오디오 및 비디오 컨텐츠를 함께 유지하기 위해서 이러한 접근을 이용한다.
우리는 이제 원격 클라이언트를 통하여 VM에서 가상 서비스를 액세스 및/또는 제어하기 위한 시스템의 컴포넌트들과 알고리즘의 다양한 모듈들 내의 프레임버퍼 데이터의 프로세스 흐름 및 상호작용을 더 잘 이해하기 위해 도 3b를 참조한다. 상술한 바와 같이, 원격 클라이언트는, VM과 동일한 위치 또는 동일하지 않은 위치에 있으며 인터넷과 같은 네트워크를 통해서 VM에 연결된 씬 또는 팻 클라이언트일 수 있다. 일 예에서, 프로세스는 클라이언트(3.18)가 가상 서비스로의 연결 요청을 개시할 때 시작된다. 서버 VM(SVM)과 같은 VM에서 이미지 프로세서 알고리즘 내 연결 엔진(3.12)은 연결 요청을 수신하고 인터럽트(interrupt)하며, 클라이언트의 정책과 인증 정보와 위치, 및 클라이언트(3.18)에 의해 요청된 서비스를 식별한다. 연결 엔진(3.12)의 설명은 도 8을 참조로 하여 설명된다.
도 8에서 도시되고 도 3b를 상호참조한 바와 같이, 연결 요청이 서비스를 위해서 클라이언트(3.18 또는 8.4)로부터 수신된다. 요청 수신 및 요청 서비스 과정 동안, 연결 엔진(3.12)은 초기 핸드쉐이크(3.14)를 위해서 및 연결 다이얼로그(3.15, 3.19)의 진행중인 품질을 유지하기 위해서 클라이언트(3.18 또는 8.4)와 상호작용한다. 연결 엔진(3.12) 내의 라우팅 로직(routing logic)(8.3)은 요청을 수신하고, 차례로 서비스 및 클라이언트의 정책, 인증 정보, 및 위치를 식별하기 위해서 디렉토리 서비스(8.2)로 호출(8.1)을 만든다. 일 실시 예에서, 디렉토리 서비스(8.2)는 외부 서비스이다. 초기 핸드쉐이크(3.14) 동안 교환된 정보는, 클라이언트(8.4)의 위치, 연결 수용력(통신 연결 대역폭, 통신 연결의 품질) 정보, 접속(connect)할 가상 서비스의 원하는 위치(3.0), 클라이언트(8.4)의 타입, 요청된 데이터의 타입, 클라이언트(8.4)와 연관된 디스플레이의 타입, 및 클라이언트(8.4)와 연관된 디스플레이의 설정(configuration)(해상도/비트 깊이/리프레쉬)을 포함하되 이에 한정되지 않는 하나 이상의 연결 파라미터를 식별한다. 연결 파라미터는 클라이언트의 특성들을 정의한다.
연결 엔진(3.12)은 또한, 초기 핸드쉐이크 및 진행중인 다이얼로그(ongoing dialog)(3.19)를 기초로 해서 시간의 흐름에 대해 연결과 관련된 품질 문제들(3.15)을 피드(feed)/갱신하기 위하여 로직 엔진(8.6)과; 요청이 씬 클라이언트(8.4)에 의해서 개시된 VM 리소스(서비스)와 관련된 적절한 프레임버퍼를 스캔 엔진이 살펴보도록 지시하기 위하여 스캔 엔진(8.5)과; 그리고 클라이언트(8.4)의 위치로의 전송을 지시하기 위하여 출력 엔진(8.7)과 상호작용한다.
이제 도 3b를 참조하면, 일반적으로 데이터센터 내부의 하이퍼바이저(3.0)에 존재하는 가상 머신의 운영 시스템(OS)은 이에 연결된 모니터를 필요로 하지 않으며, "헤드리스(headless)"라고 고려된다. OS가 헤드리스인 이 상황에서, OS는 그 출력을 프레임(3.1)로 지시한다. 프레임버퍼(3.1)는 특정 VM과 관련된 메모리의 특정 부분에 저장된 이미지와 관련된 정보이며, VM의 가상 머신 디스플레이의 이미지를 나타내는 그래픽 출력을 정의하는 특정 VM의 OS에 의해 액세스되는 정보이다. 관리자들은 역사적으로 개별 게스트들/VM들에 그래픽 콘솔 액세스를 제공하기 위하여 이 프레임버퍼 구조를 이용해왔다. 일 실시 예에서, 프레임버퍼는 모니터에 유사한 구동 주파수에서 VESA(Video Electronics Standards Association) 드라이버 또는 에뮬레이트(emulate)된 하드웨어 드라이버와 같은 그래픽 드라이버에 의해 그래픽 콘솔에서 갱신될 수 있다. 하지만, 소프트웨어 프로세스와 같은 다른 방식들이 프레임버퍼를 갱신하기 위해서 이용될 수 있다.
일 실시 예에서, 연결 엔진(3.12)으로부터 프레임버퍼 및 연결 상태 정보를 이용하여, 스캔 엔진(3.2)은 갱신된 동일 주파수에서 일반적으로 적절한 프레임버퍼를 자동으로 스캔하고, 변경을 위해서 프레임버퍼를 에뮬레이트한다. 클라이언트의 타입과 같이 초기 핸드쉐이크(3.14) 동안 픽업된(picked up) 정보에 있어서, 스캔 엔진(3.2)은 클라이언트 수용력 또는 서비스 룰들을 기초로 하여 프레임버퍼 변경들을 캡처하기 위해 디폴트 세트(defaults set)를 무시하는(override) 것을 선택할 수 있다. 일 예로서, 전형적으로 프레임버퍼 데이터로 이루어질 수 있는 높은 리프레쉬 레이트를 클라이언트가 할 수 없는 상황에서, 스캔 엔진(3.2)은 리소스들을 아끼기 위해서 프레임버퍼 변경들의 스캐닝 및 캡처의 속도를 낮추는 것(throttle back)을 선택할 수 있다. 스캔 엔진(3.2)은 상응하는 시간-기반 스토리지 어레이(array)(3.3)에서 각각의 VM을 위한 프레임버퍼 변경의 상태를 저장한다.
이와 달리, 다른 실시 예에서, 스캔 엔진(3.2)은 VM과 관련된 그래픽 드라이버가 상응하는 프레임버퍼에서 정보를 변경할 때 잠재적 웨이팅(latent waiting)(3.21)이 통보되게 할 수 있고, 이어서 통보시에 스캔을 수행할 것이다. 일 실시 예에 있어서, 그래픽 드라이버가 언제 상응하는 프레임버퍼를 갱신/리프레쉬할지를 결정하기 위해서 "동기 플랙(sync flag)" 또는 "동기 신호(sync signal)"가 이용될 수 있어서, 스캔 엔진은 임의 데이터의 손실 없이 또는 쓰기/리프레쉬 동작을 방해하지 않고 바로 후에 변경을 캡처할 수 있다.
스캔 엔진의 기능이 도 4를 참조하여 설명된다. 이와 달리, 도 3b 및 4를 참조하면, 스캔 엔진(3.2)은 스캔 엔진은 특정한 VM과 관련하여 프레임버퍼에서의 변경을 인식하고 시간-기반 구조에서의 프레임버퍼 변경의 상태 메인터넌스를 저장하는 것을 가능하게 하는 복수의 로직을 포함한다. 구체적으로, 스캔 엔진(3.2)은 스캔 기능(4.3)에게 말을 걸기 위한 연결 기능(4.1)를 포함할 수 있다. 다이얼로그(4.2)는 접속될 필요가 있는 프레임버퍼의 위치, 사이즈의 예산, 비트 깊이, 및 스캔 주파수로 이루어진다. 다이얼로그(4.2)는, 연결 엔진이 연결 파라미터들을 통해서 클라이언트와 함께 유지하는 진행중인 다이얼로그로부터 및 초기 핸드쉐이크 동안 연결 엔진으로부터 수신된 정보로부터 유도된다. 스캔 기능(4.3)는 프레임버퍼의 메모리 맵(4.4)과 관계를 맺고(engage) 프레임버퍼에서 정보를 스캔하기 시작한다.
이후 스캔 기능는 이전의 스캔(4.6)으로부터 변경들을 찾기 위한 델타기능와 관계를 맺고, 이후 사용할 히트 엔진(3.4)을 위하여 시간-기반 어레이(array)에 델타 상태(delta state)들(4.7)을 저장한다. 델타 상태들(4.7)은 그래픽 프레임버퍼 내에서 활동의 영역들을 나타낸다. 연결 기능(4.1)는 속도, 중지(pause)/리-인게이지(re-engage) 호출, 또는 메모리 맵(memory map)(4.4)의 접속해제(disconnect) 및 릴리즈(release)의 관점에서 스캔 기능(4.3)에 의해 관계를 맺은 스캔 거동을 수정할 수 있다.
프레임버퍼의 스캐닝 이후, 히트 엔진(3.4)이 스캔된 정보를 해석하기 위해 알고리즘이 관여된다. 일 실시 예에서, 히트 엔진(3.4)은 프레임버퍼에서의 변경들을 정의하는 시간-기반 어레이 및 스캔 엔진에 의해 식별된 델타 상태들을 바라보고, 시간의 경과에 대해서 지속된 활동의 레벨을 결정하기 위해 활동의 영역들을 평가한다. 예를 들어, 프레임버퍼 정보의 미세(granular) 영역들의 민감도를 증가시키기 위해서 신호 증폭 서치(signal amplification search) 알고리즘을 이용할 수 있다. 일 실시 예에서, 서치 알고리즘은 등급화된 트러프 기반(graduated trough basis)으로 메카니즘상에서 작동한다. 예를 들어, 서치 알고리즘은, 활동이 존재하는지 여부 및 이후 활동이 어디에 존재하는지를 결정하기 위하여 그로스 바이너리 서치(gross binary search)를 통해서 분할된 영역에서 그 방식으로 작동한다. 활동을 발견한 때, 비활동의 영역을 제외시켜서 서치 패턴(search pattern)을 계속하고, 실제 활동의 레벨에만 그 자신을 변형시키고, 서치의 나머지를 종료(exit)한다. 이것은 네트워크 오버헤드, CPU 소모를 제한하고, 서치 시간 및 전송 시간을 향상시킨다. 게다가, 콘트라스트, 컬러, 다른 메트릭스(metrics)의 연속성(contiguity)과 관련된 메트릭스와 같은 복수의 특성들을 위한 서치가 수행될 수 있다는 점에서, 이 증폭 서치 패턴은 재사용가능하다. 일 실시 예에서, 복수의 특성들을 추적하기 위한 파라미터들은 기술이 동일하게 존속하는 동안 조정가능(tunable)하다.
도 5는 히트 엔진(Heat Engine)(3.4)의 기능을 설명한다. 상세하게, 히트 엔진은, 스캔 엔진(Scan Engine)(3.2)에 의해 갱신된 시간-기반 어레이(3.3)에서의 변화를 추적, 수집 및 분석하고, 시간-기반 버켓(time-based buckets)으로 변화를 그룹짓도록, 어레이 순회 필터(array traversal filter)(5.1)와 같은, 필터를 이용한다. 분석은 시간의 단일 미분계수(single derivative of time), 또는 경향 특징(trending traits)을 확립하기 위한 다중 유도(multiple derivations)일 수 있다. 그룹핑은 충분한 레벨(휴리스틱 알고리즘에 의해 결정된 "충분한(sufficient)")에 대한 변화로 터널되도록 신호 증폭 알고리즘(signal amplification algorithm)(5.2)으로 보내지고, 히트(heat)의 특성 및 픽셀 상세 레벨이 히트 결정 함수(heat determination function)(5.3)를 이용해서 확립된다. 이 분석은 히트 엔진(3.4)에 의해 식별된 각 히트 영역을 위해 증폭 프로세스(5.4)를 통해 루프된다. 부가적인 루핑(5.4)이, 분석이 완료될 때까지, 칼라/콘트라스트, 활동성 등을 포함하는, 히트의 다른 속성을 위해 야기될 수 있다. 히트 엔진(3.4)으로부터의 분석의 결과는 변화 영역 데이터베이스(areas-of-change database)(3.5)와 같은, 저장소에 유지되고, 콘텍스트 엔진(3.6)과 로직 엔진(3.7) 양쪽에 대해 넘겨진다. 1실시예에 있어서, 히트 엔진(3.4)으로부터의 출력은 콘텍스트 엔진(3.6)으로 공급된다.
도 3b로 되돌아가 참조하면, 콘텍스트 엔진(3.6)은 히트 엔진(3.5)의 출력을 수집하고, 활동성의 연속적인 영역을 식별하고 경계 또는 지역의 어떠한 다른 식별 특징을 식별하도록 바라본다. 콘텍스트 엔진의 기능은 이하 도 6을 참조하여 설명된다. 콘텍스트 엔진은 연속적인 영역이 활동성 및 콘트라스트 양쪽에 의해 식별되고 특정 조건을 갖는 프레임으로서 취급될 수 있으면 결정에 대한 히트 엔진 출력을 평가하기 위한 로직을 포함한다. 1실시예에 있어서, 콘텍스트 엔진(3.6)은 통합 알고리즘(unification algorithms)(6.1)을 이용하고 다중가변 데이터 세트(multivariable data set) 사이에서 메타 패턴(meta patterns)을 찾도록 콘텍스트 엔진(3.6)에 대해 이용가능한 문법적 규칙 라이브러리에서 이용가능한 기하학적 원리, 컬러 콘트라스트, 및 시간(6.2)을 기초로 하는 소유자 크래프티드 문법적 규칙(proprietary crafted grammatical rules)을 이용한다. 1실시예에 있어서, 대역 외 처리 또는 다른 기술을 위한 선택을 만들도록 다른 변수들 사이에서 최상 대역폭, 최상 경험(티어링 없음(no tearing)), 및 최상 CPU 성능(단일 통합 압축 셋업/분해(singular unified compression setup/teardown))을 전체 경계 전개 밸런싱(full boundary discovery balancing)하는 것이 바람직하다. 1실시예에 있어서, 콘텍스트 엔진(3.6)은 더 작은 프레임 상에서 분석을 수행하고, 연속적인 엔티티로서 처리되도록 함께 더 작은 프레임을 스티칭하는 것에 의해 더 큰 프레임을 어셈블하도록 구성된다.
콘텍스트 엔진(3.6)은 활동성에 인접하는 영역의 콘트라스트 차이를 고려한다. 콘텍스트 엔진(3.6)은 또한 지속성의 가능성을 결정하고 다른 기술에 따라 활동성을 취급하는 값을 확립하도록 시간에 걸쳐 활동성의 레벨에서 본다. 콘텍스트 엔진의 출력은 콘텍스트 어레이(6.3)에 유지된다.
도 3b로 돌아가 참조하면, 로직 엔진(3.7)은 다양한 소스로부터의 출력을 분석하고, 프레임버퍼에서의 데이터의 압축 및 전송을 위해 채택되는 어느 기술을 결정한다.
로직 엔진(3.7)은, 히트 엔진으로부터의 공급(feed)(3.8), 콘텍스트 엔진(3.9)으로부터의 공급, 초기 핸드세이크(3.14)로부터의 정보(클라이언트의 형태, 연결의 크기, 및 대항하는 콘트라스트 분석을 가중하는(weight) 비트 깊이(bit depth)), 및 백채널을 따르는 클라이언트로부터의 연결 공급(3.15)의 진행 중인 품질과 같은, 다양한 소스로부터의 공급을 취한다.
로직 엔진(3.7)의 기능은 도 7을 참조하여 설명된다. 로직 엔진(3.7)은 콘텍스트 엔진(7.2), 히트 엔진(7.3), 콘텍스트 엔진(7.4)으로부터의 출력을 취하고, 서버측 수행의 필요성, 클라이언트측 사용자 경험, 및 네트워크 소비 효율을 균형 맞추도록 분석 기능(7.1)을 이용해서 다중 변수 분석을 수행한다. 1실시예에 있어서, 로직 엔진은 프레임버퍼에서 데이터를 압축하기 위한 최적 기술을 선택하는데 이용가능한 압축 기술의 리스트에 의존한다
알고리즘은 데이터를 리플레싱/커버링(refreshing/recovering)하기 위한 효율적인 방법을 제공한다. 알고리즘에 의해 발생된 이미지 데이터 패킷은 가상 머신 디스플레이의 이미지의 특정 부분에 대해 상관되어지고 클라이언트에서 이미지의 특정 부분을 렌더링하도록 할당되어지는 데이터를 포함한다. 이전에 설명한 바와 같이, 각 이미지 데이터 패킷의 데이터는 가상 머신 디스플레이의 이미지의 특정 부분을 정의하는 비교적 간단한 그래머(grammar)로 이루어진다. 발생된 이미지 데이터 패킷의 간단화된 그래머에 기인하여, 정확하고 집중된 방법으로 분실 패킷(missing packets)을 재전송하는 것이 가능하다. 종래 기술에서, 클라이언트에서 디스플레이를 리플레싱하는 것은 그래픽 명령 및 이미지 데이터를 유지하는 패킷의 스트림을 전송하는 것을 요구한다. 복잡한 그래머에 따르면, 각 패킷에 보내진 이미지 데이터는 클라이언트에서의 디스플레이 드라이버가 이미지를 렌더링하도록 패킷을 디코드하는데 필요한 명령의 완전한 세트를 설명하기 위해 일련의 다른 패킷에 관련될 수 있다. 많은 경우에 있어서, 디스플레이 영역 또는 부분의 리플레싱은, 패킷이 디스플레이의 어떠한 특정 부분 또는 일부(예컨대, 특정 픽셀 또는 픽셀들)에 대해 미리-할당 또는 상관되지 않음에 따라, 전체 디스플레이를 갱신하도록 다중 패킷을 얻는 것을 요구한다.
따라서, 알고리즘은 클라이언트에서 렌더링된 이미지의 품질을 유지하는 동안 전송된 데이터의 양을 감소시키는 것에 의해 클라이언트에 대한 프레임버퍼 데이터의 전송/렌더링을 위한 시간 및 네트워크/컴퓨팅 리소스의 최적화를 가능하게 한다. 더욱 설명하면, 알고리즘은 리프레쉬 또는 갱신되어질 필요가 있는 디스플레이 스크린의 해당 영역에 상관되어지는 패킷 중 특정 패킷의 리플레싱 또는 재전송을 가능하게 한다. 전체 디스플레이가 주기적으로 갱신 또는 리프레쉬됨에도 불구하고, 전체 리프레쉬 또는 갱신이 요구되지 않을 때, 리프레쉬를 필요로 하지 않는 영역을 위한 패킷을 전송하지 않는 것에 의해 절약된 대역폭은 상당할 수 있다. 여기서 클라이언트는 알고리즘으로부터 수신된 이미지 데이터 패킷을 판독하고, 패키징 정보를 스트립하며(strip), 그 내에 포함된 데이터를 디코드하고, 클라이언트의 디스플레이 상의 적절한 부분에 대해 데이터를 맵핑하며, 디코드된 데이터의 맵핑을 기초로 클라이언트의 디스플레이 상의 적절한 부분을 렌더링하는 필요한 로직을 포함함을 주지해야만 한다. 1실시예에 있어서, 클라이언트의 로직은 그 프로그램된 경로를 통해 어떠한 데이터의 처리에 대해 클라이언트의 로컬 디스플레이 드라이버를 요구하는 것 없이 이미지 데이터 패킷의 모든 데이터를 처리하는 것이 가능하다. 다른 실시예에 있어서, 클라이언트 내의 로직은 하나 이상의 프로그램된 경로를 통해 몇몇 처리의 양을 제공하는 클라이언트의 로컬 디스플레이 드라이버에 따라 이미지 데이터 패킷의 데이터를 처리할 수 있다. 로컬 디스플레이 드라이버에 의해 요구된 처리의 부분은 클라이언트의 디스플레이 또는 컬러의 맵핑 등의 특정 부분에 대한 데이터의 맵핑을 포함할 수 있다.
왜 데이터의 서브세트(subset of data) 만이 전송되어질 필요가 있는가에 대한 몇 가지의 이유가 있을 수 있다. 이유의 몇몇은 열악한 연결에 기인하는 데이터의 손실, 특정 부분에서의 높은 활동성에 기인하는 데이터 리프레쉬, 활동성이 매우 낮거나 없는 것에 기인하는 주기적 리프레쉬 등을 포함할 수 있다. 알고리즘은 클라이언트에 대해 필요한 데이터를 제공하기 위해 프레임버퍼 데이터의 특정 부분의 활동성의 레벨을 식별하도록 히트 엔진 및 로직 엔진으로부터의 출력을 이용할 수 있다. 도 7의 (A)-(C)는 클라이언트에서 VM 디스플레이의 특정 부분을 리프레쉬하기 위해 특정 이미지 데이터 패킷이 전송되는 몇몇 예를 나타낸다. 여기서 초기에 VM 디스플레이의 이미지를 표현하는 프레임버퍼로부터의 모든 데이터는 렌더링을 위해 클라이언트에 대해 전송되어짐을 주지해야만 한다. VM 디스플레이의 이미지의 초기 렌더링 후, 데이터의 특정 부분 또는 모두는 주기적으로 리프레쉬/갱신되어질 수 있다. 도 7의 (A)에 도시된 1실시예에 있어서, VM 디스플레이의 특정 부분을 위한 데이터는 클라이언트에서 데이터를 리프레쉬하도록 주기적으로 전송된다. 이는 각 VM에서 프레임버퍼 데이터를 위해 기록된 활동성이 없다는 사실에 기인할 수 있다. 결과적으로, 클라이언트에 대해 전송을 위해 이용가능한 새로운 데이터는 없고, 오직 효력이 없는(stale), 용장 데이터(redundant data)가 클라이언트에서 이미 렌더링된 이미지의 특정 부분을 리플레싱하기 위해 재전송된다. 이는 먼저 가장 효력이 없는 데이터의 순서로 수행되게 된다. 도 7의 (B)에 있어서, 전송된 데이터는 몇몇 새로운 데이터 및 주로 효력이 없는, 용장 데이터를 포함할 수 있다. 예컨대, VM 이미지 디스플레이의 특정 부분을 위한 새로운 데이터는, 마이크로소프트 워드 서류( MicrosoftTM Word document)와 같은, 어풀리케이션 스크린 상의 깜박이는 커서와 관련될 수 있고, 용장 데이터는 디스플레이 이미지의 효력이 없는 부분과 관련된 데이터일 수 있다. 마찬가지로, 도 7의 (C)에 있어서, 이미지의 특정 부분을 위해 전송된 데이터는 주로 새로운 데이터 및 오직 몇몇 효력이 없는, 용장 데이터를 포함할 수 있다. 예컨대, 새로운 데이터는 어플리케이션 스크린 상의 타이머와 관련되어질 수 있고, 효력이 없는, 용장 데이터가 변경되지 않은 이미지의 나머지 부분의 부분으로 될 수 있다. 도 7의 (A)-(C)에서 각각 화살표의 크기는 클라이언트에 대해 전송된 각 데이터의 양을 나타낸다. 클라이언트에 대해 보내진 각 이미지 데이터 패킷의 상관된 특성에 기인하여, 오직 리프레쉬/리커버에 대한 관련 데이터만이 전체 이미지를 위해 데이터를 보내는 것 없이 보내질 수 있다. 이미지 데이터 패킷을 통해 보내진 VM의 디스플레이 이미지의 특정 부분에 대해 할당된 비트 맵 이미지는 리프레쉬되어지는 나머지 데이터를 요구하는 것 없이 데이터의 특정 부분을 리플레싱/리커버링할 수 있고, 따라서 대기시간(latency) 및 네트워크/컴퓨팅 리소스를 감소시킨다.
도 3b로 되돌아가 참조하면, 연결 백채널(3.15)의 품질은 지터(jitter) 상에서의 리포트 및 수신된 패킷의 패킷 헤더, 손실(loss), 및 패킷의 위배되는 정보를 감시하는 정보의 UDP 스트림이다. 더욱이, UDP 스트림은 대기시간의 중요한, 지속하는 조정, 대역폭과 손실, 및 로직 엔진(3.7)에 대한 리포트를 잘 감시한다. 1실시예에 있어서, 로직 엔진(3.7)은 클라이언트에 대해 프레임버퍼의 다양한 형태를 전달하도록 호출하는 소정의 로직/기능의 세트를 갖는다. 이들 기능은 다양한 공급으로부터 식별된 자극(stimuli)을 기초로 특정 조합에서 이용된 압축/전송 기술(3.10)의 조합이다. 1실시예에 있어서, 로직 엔진(3.7)은 다중 가변 분석을 매개로 연결 및 클라이언트와 관려된 다양한 파라미터 및 특징을 고려한다.
예를들어, 분석 단계 동안에, 로직 엔진은 다음을 고려한다. (a) 클라이언트의 유형이다. 일부 클라이언트는 대역외 멀티미디어를 취급하고, 다른 사람은 취급하지 않을 수 있음. 휴대 전화, 데스크탑과 OS에서 다른 방법으로 네트워크 동작을 처리하고 완화하는 능력에 영향을 미친다. 결과적으로 사용되는 기술은 네트워크 동작을 고려하고 이에 따라 프레임 버퍼 데이터를 내보내는 스트림을 포맷한다. 또한 압축 해제 알고리즘 중 일부는 특정 클라이언트에 대하여 너무 부담이 될 수 있고, 대체 기술을 채용해야 한다; (b) 연결 유형. 특정 네트워크는 고용해야 하는 기술의 특성을 변경할 수 있는 지터(jitter) 특성과 지연 시간 모두 가진다. (c) 활동 수준과 영역의 크기/범위. 압축 기술을 가진 블록 크기는 영역의 크기/범위를 수용하기 위해 서로 다른 조건 하에서 적용된다. 또한, 손실 대 무손실 압축의 선택은 서로 다른 조건 하에서 적용될 것이다; (d) 영역의 색상 분포. 논리 엔진은 컬러 필드의 복잡성을 식별하고 일관된 컬러 대 이미지 대 텍스트의 페이지에 대해 다른 압축 기술을 채용하기 위해 무작위 샘플을 사용할 수 있다. 로직 엔진은 또한 오류를 방지하기 위해 무작위 이론(singularities)과 영역을 식별하는 균형 에이젼트로 포이손(poisson) 분포 알고리즘을 이용할 것이다; (e) 인간의 시각적 인식 오차까지 일치하도록 하는 기술을 채택하기 위한 이미지 분석; (f) 일부기술은 반품이나 높은 비효율 수준(예 : 원래보다 큰 페이로드를 얻는 압축)과 충돌하거나 기술을 조정하는 시나리오; (g) 텍스트 엔진은 계층화된 알고리즘으로 처리할 수 있는 인접 영역을 식별할 수 있다. 스트리밍 또는 대역외 알고리즘은 프레임 버퍼 데이터의 특정 유형에 대하여 적용할 수 있다; (h) 로직 엔진은 다른 데이터 스트림 소스가 클라이언트로 직접 전송될 수 있기 때문에 데이터 스트림을 식별하기 위한 계층 식별 기술을 적용하도록 구성되어 있다.
로직 엔진에 의하여 적용될 수 있는 압축 또는 기술의 유형은 (그러나 이에 제한되지 않음); 픽셀 스캔닝; (또는 픽셀의 그룹), 비트맵 압축 (손실, JPEG와 같은); 비트맵 압축(무손실, PNG와 같은), 사각형(가변 크기), 직사각형 (가변 폭, 가변 높이), 압축되지 않은 비트맵, 색상 균일(constant), 오래된 리플렛쉬와 같은 손실 관리 기법. 압축 또는 고용 기술의 유형에 대한 앞서 언급한 목록은 바람직한 예이고 완전한 또는 제한된 것으로 여겨서는 안된다. 압축이나 기술의 다른 유형은 생태계에서 유지되는 압축 기능과 의도로 가능한 오래 사용할 수 있다.
압축/전송 기술을 사용하는 논리엔진 출력(3.10)은 연결엔진(3.13)에서 제공하는 위치규정에 기반하여 씬(thin) 클라이언트 위치로 패킷을 패키지 및 전송하는 출력엔진(3.11)로 보내진다. 도 9는 출력엔진 (1.11)의 기능을 나타낸 것이다. 출력 엔진은 최초로 요청받은 씬 클라이언트의 위치를 결정하기 위해 라우팅 목적지 로직(9.1)을 사용하여 연결 엔진 (9.2 또는 3.12)과 상호 작용하며, 클라이언트 유형 등. 패킷은 UDP 기술을 가진 네트워크에 진입하여 네트워크 UDP 버퍼를 처리하는 능력을 정의하는 컨텐츠 및 클라이언트 유형(3.18)을 기반으로 사용자 헤더와 패킷 크기(9.6)를 사이징(9.5)한다.
클라이언트는 패키지된 프레임 버퍼 데이터를 받고 헤더를 디코딩하며 받은 지시에 따라 스크린 프레임에 직접 정보(9.7)를 위치시킨다. 기본 원리는 매우 가볍고 낮은 전산 클라이언트가 가지는 것이다.
다시 도 3B 참조하여, 클라이언트는 연결 엔진(3.12)과 초기 핸드 셰이크(3.14) 동안에 수집한 연결 정보를 기반으로 OS 세션에 UDP 스트림을 통해 마우스 클릭과 키보드 스트로크(3.16)를 전송한다. 또한, 키보드 스트로크/마우스 클릭은 변화 가능성이 있는 영역에 효율적인 힌트를 제공하기 위해 스캔 및 히트 엔진(3.20)으로 전송된다.
도 10은 가상 환경 내에서 클라이언트와 VM에 대한 알고리즘사이의 앞뒤 상호 작용을 통해 캡쳐된 이미지를 미세조정/갱신하는 하나의 예를 보여준다. 특히, 변화의 가능성이 있는 영역을 식별하기 위한 마우스 클릭과 키보드 스트로크(10.3)는 클라이언트에서 스캔 엔진(3.2)과 히트 엔진(3.4)으로 전송된다. 하나의 실시 예에서, 스캔 엔진이 검출된 마우스 클릭과 키보드 스트로크를 기반으로 사용자 입력을 스캔하여 틈사이로 나오게 자극할 수 있고, 열 엔진은 사용자에 대하여 긍정적인 경험을 보장하기 위해 클릭/타이핑에 의하여 활성 영역에 인위적인 열을 추가하도록 선택할 수 있다. 그래서, 알고리즘은 클라이언트의 입력을 기반으로 변화의 가능성이 있는 영역을 식별하여 캡처된 이미지를 미세 조정하고, 이러한 영역에서의 활동을 모니터하며, 변화의 가속(델타)을 생성하고, 렌더링을 위한 클라이언트에게 미세 조정된 정보를 보낸다.
클라이언트는 클라이언트와 연결 엔진(3.12)사이에 교환된 라우팅 목적지(10.1)를 기반으로 패킷의 출력 엔진(3.11)으로부터 다시 지시받은 프레임 버퍼 데이터(10.7)를 수신하고, 초기 핸드 쉐이크(10.2) 동안에 획득한 연결 파라미터를 제공한다. 패킷은 압축되고, 클라이언트(10.9)에서 이용 가능한 디스플레이 함수를 사용하여 렌더링한다. 클라이언트는 이미 렌더링된 프레임 버퍼 데이터가 클라이언트와 연결된 스크린사이에 오버레이되고 클라이언트 OS에 직접 디코딩할 수 있는 OS(3.0)로부터 대역외 멀티미디어 스트리밍(10.10 또는 3.17)의 고음질오디오 기록방식(direct stream)을 수신한다.
하나의 실시 예에서, 클라이언트와 하나 이상의 모듈사이에 일반적인 상호작용을 부가하여, 클라이언트는 스캔 엔진과 열 엔진(10.6)으로 전달되는 백채널 핸드 셰이크를 통해 연결 품질과 관련된 정보를 교환하기 위해 로직 엔진(3.7)과 상호 작용한다. 또한, 백채널 통신은 클라이언트의 디스플레이 장치의 변경 사항을 포함하는 연결 파라미터에 대한 동적 변경 또는 클라이언트에서 하나 이상의 디스플레이 장치의 부가와 같은 연결 상태로 갱신을 전달하는 클라이언트에 의해 사용된다. 갱신을 스캔 엔진과 열 엔진에 전달하는 것 외에도 클라이언트는 VM에서 실행되는 어플리케이션에서 사용자 상호 작용을 보낸다. 사용자 상호 작용은 검색 엔진에 의해 수신되고 VM의 OS를 통해 해당 클라이언트에게 전달된다.
하나의 실시예에서, 양방향 멀티미디어 스트리밍 통신은 마우스/키보드와 스트리밍 기술과 동일한 메커니즘을 통해 생성할 수 있다. 비디오의 예는 계층(layering) 기법을 통해 클라이언트의 로컬 드라이버(사용자의 피드백)를 통해 로컬 디스플레이 될 수 있다. - 정확한 소스 계층에 첨부된 클라이언트와 상호 작용하는 것 - 및 소비와 처리를 위해 OS로 다시 스트리밍하는 것.
이러한 특징은 동일한 클라이언트에게 경험을 제공하는 여러 소스와 함께 연합의 원칙에 근거하여 설계되어진다. 이렇게 하기 위하여, 대역외 스트림은 상위(parent) 계층으로 다시 돌아갈 수 있도록 각 소스 스트림은 계층 인식을 해야 한다. 부가적으로 여러 소스가 클라이언트로부터 이동 수 있지만 클라이언트는 한 번에 전적으로 하나의 소스와 상호 작용하도록 선택할 수 있다. 그래서, 클라이언트는 제 시간에 어떤 지점(3.19)에서 소스의 원하는 상태를 통신할 수 있는 능력을 가지고 있어야 한다. 스캔 엔진 및 모든 다운 스트림 서비스 역시 우선순위가 없는 상태에서 프레임 버퍼의 스캔 작업을 중단함으로써 소스를 보존하도록 구성되어 있다.
또한, 안드로이드 모바일폰 OS와 같은 특정 새로운 모바일 클라이언트 OS는 스크린 활동을 분리 및 차단 시 살아있는 기본 통신 프로토콜을 지키기 위한 구조를 포함한다.
마찬가지로, 한 시나리오에서, 신호(3.19)는 스캔의 우선순위 없이 스캔 엔진으로 보낼 수 있고, 그래서 서버 측 및 대역폭 리소스 모두에 저장된다. 하나의 예로 클라이언트가 클라우드 기반 호스팅 데스크탑 서비스에 가입하고 있으면서, 동시에 별도의 클라우드에서 DVR 엔터테인먼트 서비스를 이용하는 것이다. 화면에 나타나는 내용에 따라, 서비스를 클라이언트에서 볼 수 없으면 각 클라우드 서비스는 각 프레임 버퍼를 처리할 수 없다. 도 2i, 앞서 설명하였듯이, 프레임 버퍼 정보의 선택적 디스플레이의 개념을 설명한다. 클라이언트는 계층 로직 기반으로 처리의 필요성을 통신한다. 또 다른 예는 스크린 상에 위치하는 광고기반 계층을 가진 클라이언트에게 전달되는 호스팅 데스크탑 서비스가 될 수 있고, 이는 데스크탑의 환경과 데스크탑의 광고 규칙엔진에 의존한다.
이상 자세히 설명한 알고리즘 동작과 함께, 다양한 프로세스 작업을 식별하는 프로세스 흐름이 도 13을 참조하여 기술될 것이다. 동작(1310)에 대한 설명으로, 프로세스는 클라이언트로부터 받은 특정 VM에 연결하기 위한 요청을 시작한다. 연결 요청은 VM에서 실행되는 가상 서비스를 액세스하고 제어하기 위한 것이고 클라이언트의 연결 요구 사항을 정의하는 복수의 연결 파라미터를 포함한다. 요청은 이미지 프로세서 알고리즘을 실행하는 비쥬얼 머신에 의하여 수신된다. 하나의 실시예로, 알고리즘을 가진 비쥬얼 머신은 하이퍼 바이저에서 실행되는 다른 VMs의 프레임 버퍼 데이터를 액세스하고 관리하는 서버 비쥬얼 머신 역할을 한다. 동작(1320)을 도시한 도면에서와 같이, 알고리즘은 서비스 및 위치 정보를 식별하기 위해 연결 요청을 조사(interrogates)한다. 조사를 바탕으로 하이퍼 바이저에서 실행하는 복수의 VMs 중에서 특정 VM을 식별하고 클라이언트가 요청한 서비스를 제공할 것이다. 프레임 버퍼는 VM과 연관된 가상 머신 디스플레이의 이미지를 나타내는 그래픽 출력으로 정의된다. 동작(1340)을 도시한 도면에서와 같이, 알고리즘은 복수의 VMs가 실행되고 있는 하이퍼 바이저를 통해 메모리에 미리 설정된 위치에 식별된 VM의 프레임 버퍼 정보를 직접 액세스한다. SVM에서 알고리즘은 이미지를 정의하는 프레임 버퍼 데이터를 읽고 알고리즘에 포함된 포맷 프로토콜을 사용하여 클라이언트로부터 초기 연결 요청과 함께 얻은 연결 파라미터를 기반으로 이미지 데이터 패킷으로 프레임 버퍼 데이터를 처리한다. 동작(1350)을 도시한 도면에서와 같이, 패키지화된 이미지 패킷은 전송 프로토콜을 준수하기 위해 추가로 패키지화되어 SVM의 네트워크 인터페이스 카드(NIC)로 전송하고, 클라이언트와 연결된 디스플레이 장치에 렌더링을 위해 클라이언트로 전송된다. 렌더링된 클라이언트 데이터는 식별된 VM과 연관된 가상 머신 디스플레이의 이미지로 정의된다. 클라이언트는 이미지 데이터 패킷을 디코딩/압축하고, 이미지 데이터 패킷에서 얻은 데이터를 어셈블하며, 클라이언트에서 어셈블된 데이터를 렌더링한다. 마우스 클릭과 키보드 스트로크와 같은 사용자 상호작용은, 렌더링된 그래픽 출력에서 VM의 제어 및 미세 튜닝을 위한 알고리즘에 캡처 및 반환될 수 있다.
앞서 알고리즘의 일반적인 설명을 통해, 알고리즘을 사용한 다양한 시나리오/어플리케이션의 더 자세한 설명이 지금 설명될 것이다. 알고리즘은 제한없이 다양한 세팅에 사용될 수 있으며, 몇 가지 이름을 지칭하면, 알고리즘 어플리케이션, 게임 어플리케이션, 소비자 전자기기 어플리케이션, 모바일 어플리케이션이 있다. 어플리케이션의 상기 목록은 바람직한 예이며 제한적으로 해석되어서는 안된다. 알고리즘을 사용할 수 있는 다른 어플리케이션/시나리오가 가능하다. 그것은 다양한 구성요소를 가진 알고리즘의 전반적인 기능과 상호 작용이 모든 시나리오/어플리케이션 아래에서 동일하게 유지되는 것으로 이해해야 한다. 알고리즘을 접근하고 이용하는 유일한 방법이 달라짐은 후술될 섹션에서 기술될 것이다.
데스크탑 응용
데스크탑 서비스는 같은 개인용 컴퓨터(PC), 데스크탑, 랩탑 등 컴퓨팅 장치를 통해 제공된다. 응용의 실시 예로 예를들어 인터넷과 같은 네트워크 연결을 사용하여 데스크탑을 통해 서버 VM(SVM)에 구현된 알고리즘을 사용한다. 그것은 알고리즘이 SVM에 구현되어야하는 것으로 이해되지만, '서버'의 의미는 알고리즘이 구현된 VSM에서 클라이언트에 의하여 요청된 서비스를 제공함에 의하여 컴퓨팅되는 클라이언트 서버에서 서버처럼 동작한다는 것을 말한다. SVM은 서버의 역할을 맡을 수 있는 다른 VMS에서 정보를 찾는 클라이언트로 동작할 수 있다. 알고리즘은 가상 인프라구조에서 사용할 수 있는 모든 VM에서 구현될 수 있다. 도 12A에 도시된 하나의 실시 예에서 클라이언트는 PC 또는 랩탑과 같은 데스크탑이다. 시작하기 위하여, 인터넷 등 네트워크에 연결된 데스크탑은 VC 내에서 이용할 수 있는 가상 서비스와 액세스를 위하여 가상 센터(VC)에 연결요청을 전송한다. 연결 요청은 다른 연결 파라미터와 함께 데스크탑의 ID(identity)를 포함한다. 데스크탑은 먼저 가상 서비스에 대한 액세스를 제공하기 전에 연결 요청에 제공된 기타 인증 정보와 ID를 사용하여 인증한다. 하나의 실시예에서, 데스크탑은 연결요청으로부터 획득한 데스크탑의 식별 정보를 사용하여 인터넷에 가상 센터 및 제공과 관련된 가상 인프라(VI) 집단(cloud)에 액세스할 수 있는 권한이 부여된 장치의 목록을 유지 관리하는 웹사이트를 통해 인증을 받는다. 데스크탑의 ID를 식별하는 상기 과정은 인증을 수립하기 위한 하나의 방법이고, 인증을 설정하는 다른 방법이 사용될 수 있다. 인증 후, 데스크탑으로부터 연결 요청이 VI의 다른 VMs와 함께 실행되는 SVM으로 전송된다. SVM에 탑재된 이미지 프로세서 알고리즘은 데스크탑의 종류, 데스크탑과 관련된 디스플레이 장치, 요구되는 가상 서비스의 ID, 서비스를 제공하는 VM을 실행하는 OS(operating system), VM의 OS와 상호 작용하는데 사용되는 프로토콜 및 데스크탑의 다른 연결 요구 및 데스크탑의 ID를 획득하기 위하여 연결 파라미터를 조사한다. 그래서, 연결 파라미터는 클라이언트와 관련된 연결 및 다른 환경 관련정보를 제공하고, 데스크탑의 종류, 클라이언트의 발신 인터넷 프로토콜(IP) 주소, 가상 서비스에 대한 목적지 IP 주소, 클라이언트 유형, 클라이언트 식별 정보, 클라이언트와 연결된 디스플레이 장치의 유형, 가상 서비스를 제공하는 VM에서 실행되는 OS, VM OS의 상호작용에 사용되는 프로토콜, 사용 가능한 대역폭의 양, 대기 시간 측면에서 장치의 위치, 연결의 품질 등을 포함한다.
알고리즘은 데스크탑으로부터 연결요구를 서비스할 수 있는 VM을 식별하여 적절한 VM에 데스크탑을 연결하는 과정을 수행하고, 식별된 VM과 관련된 프레임 버퍼 데이터에 액세스 권한을 얻기 위하여 실행되는 VI의 복수 VM 상의 하이퍼 바이저와 함께 적당히 상호작용하기 위하여 OS는 식별된 VM 등에서 프레임 버퍼 데이터를 리프렛쉬할 스캔속도를 결정한다. 하이퍼 바이저는 하이퍼 바이저를 통해 액세스할 가상 메모리에 미리 설정된 위치에 식별된 VM을 위한 프레임 버퍼 데이터를 쓰는 VM의 그래픽 드라이버와 상호 작용하는 가상 그래픽 카드를 포함한다.
SVM의 알고리즘은 직접 하이퍼 바이저를 통해 가상 메모리에 미리 설정된 위치로부터 식별된 VM을 위한 프레임 버퍼 데이터를 액세스하고 읽는다. 알고리즘은 프레임 버퍼 데이터를 액세스할 때 하이퍼 바이저와 상호작용하기 위하여 적절한 어플리케이션 인터페이스(API)를 사용한다. API는 특정한 하이퍼 바이저에 해당하고, 알고리즘은 연결 파라메타를 기반으로 특정 하이퍼 바이저를 위해 사용할 적절한 API를 결정하는 지능을 가지고 있다. 알고리즘은 스캔 엔진, 히터 엔진, 텍스트 엔진 및 로직엔진을 사용하여 프레임 버퍼 데이터를 읽고 분석하고, 연결 파라미터를 기반으로한 하나 이상의 테크닉을 사용하여 데스크탑에 특정되고 적절한 패킷 크기를 가진 이미지데이터 패킷을 생성하며, UDP와 같은 단순하고 일반적인 전송 프로토콜을 사용하여 클라이언트로 패킷들을 전송한다. 이미지 데이터 패킷은 메시지 유형을 포함하고, 알고리즘 요건 및 전송 프로토콜 요건 모두를 준수하는 패키징 정보를 포함한다.
데스크탑은 패킷을 수신하고 메시지 유형을 읽고 데스크탑에서 디스플레이 장치의 프레임 버퍼 데이터를 읽고 렌더링하기 위해 적절한 압축 기법을 사용한다. 렌더링되는 데이터는 그래픽 요소, 아이콘, 디스플레이, 프로그램, 링크, 사진, 동영상 및 VM에서 실행되거나 렌더링되어지는 사용자 인터페이스 조작 또는 미조작을 보여주는 식별된 VM의 가상 머신 디스플레이 이미지의 부분을 나타낸다. 렌더링된 프레임 버퍼에서 사용자 상호 작용 및 자동 피드백은 SVM에서 알고리즘의 클라이언트측 로직에 의해 받고, 패킷화하여 전송된다. 사용자 상호 작용은 프레임 버퍼 데이터의 업테이트와 미세 조정을 활성화하는 프레임 버퍼 데이터와 연결 파라미터에 대한 변경/갱신을 포함시킬 수 있다. 사용자 상호 작용은 일상적인 문제 해결 또는 유지 보수 동안에 VM과 연결된 콘솔에서 관리자에 의해 수행되는 상호 작용과 비슷하다. 자동 피드백 연결 정보와 연결 요청에 대한 응답으로 서비스를 제공하는 VM에서 실행하는 하나 이상의 어플리케이션을 직접 전달하여 데이터와 연결정보의 품질을 가진 SVM의 알고리즘을 제공한다. 사용자 상호 작용 및 자동 피드백 정보는 백채널(backchannel)에 의해 통신을 통해서 알고리즘에 다시 전송된다. 하이퍼 바이저와 알고리즘을 통한 VM과 클라이언트사이의 상호 작용은 사용자가 VM에서 하나 이상의 서비스를 제어할 수 있다.
또 다른 실시예에서, 랩탑(laptop)이 가상 환경에서 VM에 연결을 요청하는 클라이언트 역할을 한다. 랩탑이 VM에 대한 연결 설정되는 과정은 데스크탑 어플리케이션에 대한 참조로 앞서 기술한 실시 예와 유사하다. 본 실시예에서 프레임 버퍼 데이터는 알고리즘으로 클라이언트의 초기 핸드 셰이크 중에 설정되는 연결 파라미터를 기반으로 랩탑과 연결된 디스플레이 장치를 위해서 구성되고 설정된다.
본 발명 하나의 실시예에서, 이미지 프로세서 알고리즘은 사용자의 컴퓨팅 프로파일에 액세스하도록 구성된다. 본 어플리케이션에서 사용되는 컴퓨팅 프로파일은 특정 어플리케이션과 하드웨어가 실행/사용할 수 있는 특정 사용자를 위하여 환경이 설정된 컴퓨터 시스템을 의미한다. 따라서 사용자의 컴퓨팅 프로파일은 사용자가 특정 하드웨어 장치와 소프트웨어 어플리케이션으로 구성된 맞춤형 데스크탑이 포함될 수 있다. 본 실시예에서, 연결 요청은 사용자가 네트워크를 통해 클라이언트를 거쳐서 하드웨어/소프트웨어를 제어할 수 있도록 사용자의 컴퓨팅 프로파일에 액세스하는데 사용된다. 본 실시예에서, 클라이언트는 모바일 장치 또는 데스크탑 PC 또는 랩탑 중 공동 위치해 있거나 네트워크에 연결되어 원격 또는 함께 위치한 데스크탑 또는 랩탑 컴퓨터와 같은 임의의 다른 컴퓨팅 장치 또는 모바일 장치가 될 수 있다. 클라이언트가 연결 요청을 시작하면 클라이언트가 먼저 사용자 인증 서비스에 의해 인증을 수행한다. 인증되면, 클라이언트는 가상 센터 및 가상 센터 내에서 VM에서 실행되는 알고리즘에 대한 액세스를 허용한다. 알고리즘은 사용자의 컴퓨팅 프로파일의 이미지를 나타내는 프레임 버퍼 데이터에 대한 액세스를 제공함으로써 서비스에 대한 액세스가 제공된다.
본 발명의 다른 실시예에서, 알고리즘은 특정 VM의 특정 세션에 대한 사용자 액세스를 제공한다. 본 실시예에서 특정 세션에 대한 액세스는 이미지 프로세서 알고리즘과 하이퍼 바이저를 사용하여 특정 VM을 위한 프레임 버퍼 데이터에 액세스하도록 제공된다. 하나의 실시예로, VM을 가진 세션을 확립하므로 사용자의 컴퓨팅 프로파일이나 데스크탑에 액세스할 수 있다. 프로파일은 사용자의 데스크탑, 폴더, 데이터, 어플리케이션 및 사용자 프로파일을 통해 액세스할 서비스의 뷰어로 정의할 수 있다. 세션 동안에 사용자는 사용자가 자신의 데스크탑이나 컴퓨터에서 로컬처럼 프로파일의 모든 인터페이스를 액세스하고 활용할 수 있다. 세션 동안에 사용자는 본 발명에 설명된 백채널을 사용한 모든 I/O 입력(예, 키보드 입력, 마우스 항목, 사용자 인터페이스 항목 등)을 통해 의사 소통을 할 수 있을 것이다. 세션 동안에 사용자는 계속 자신의 컴퓨터(즉, 프로파일)를 켜고 끄기, 어플리케이션 또는 윈도우를 열어 두거나 닫을 수 있으며, 세션을 떠나고 세션을 다시 연결할 수 있을 것이다.
본 발명의 다른 실시예에서, 알고리즘은 프레임 버퍼 데이터의 사이징을 다시 하거나 역동적인 리샘플링을 수용하고, 클라이언트와 관련된 렌더링 장치의 크기와 포맷의 변화를 수용하기 위해 서로 다른 크기의 프레임 버퍼에 연결을 허용한다. 따라서 랩탑과 연결된 디스플레이 장치는 서로 다른 크기, 다른 포맷을 포함하는 다른 유형에 대하여 동적으로 변화하고, SVM의 알고리즘은 갱신된 연결 파라미터를 인식하며, 변경된 디스플레이 장치의 요구 사항을 준수(충족)하는 읽기 프레임 버퍼 데이터에 적합한 이미지 데이터 패킷을 제공하여 식별된 VM의 읽기 프레임 버퍼 데이터를 처리한다.
다른 실시예에서, 알고리즘은 클라이언트 장치의 다른 구성을 위한 이미지 데이터 패킷의 다수 세트를 생성할 수 있는 능력을 가지며, 그래서 클라이언트의 부팅 파라미터의 질의(interrogation)에 기초하여 다른 크기, 방향(orientation), 비트 깊이 등 이미지 데이터 패킷을 제어하고 제공할 수 있다. 본 실시예에서의 알고리즘의 로직은 클라이언트 연결 파라미터의 질의를 바탕으로 클라이언트와 연결된 디스플레이 장치에 맞는 크기, 포맷, 방향, 비트 깊이 등으로 이미지 데이터 패킷의 정확한 세트를 식별하는 표준 스위치를 포함할 수 있다. 클라이언트가 새로운 표시 장치에 연결을 끊거나 다시 연결할 때마다, 알고리즘은 새로운 핸드세이크를 기반으로 프레임 버퍼 데이터에 변경된 기준을 인식하고 변경된 기준에 맞는 비트 깊이, 크기, 방향 등을 가진 프레임 버퍼 데이터를 나타내는 이미지 데이터 패킷의 적절한 세트를 동적으로 생성한다. 리사이징에 대한 고려 기준 중 일부는 몇 명칭을 지칭하는 비트 깊이, 크기, 방향, 포맷이 포함될 수 있다. 때로 알고리즘은 더 나은 상호 작용을 이용하기 위해 다른 프레임 버퍼에 연결된다. 그래서 알고리즘은 클라이언트에서 변화하는 요구 사항에 따라 프레임 버퍼 데이터의 동적인 리사이징과 리포맷팅(re-formating)을 수용할 수 있다.
또 다른 실시예에서, 알고리즘은 클라이언트와 연결된 다수 디스플레이 장치에 동시에 서로 다른 크기의 프레임 버퍼 데이터의 렌더링을 허락한다. 클라이언트가 랩탑이며 렌더링을 위한 랩탑 자체 화면과 함께 데스크탑의 디스플레이 장치를 사용하는 경우라며, 알고리즘은 랩탑 디스플레이 장치와 랩탑 화면에서 프레임 버퍼 데이터의 적절한 크기의 렌더링을 동시에 가능하게 한다. 이미지 데이터 패킷을 포맷하기 위한 압축 기법은 무손실 압축 또는 손실 압축을 사용할 수 있다. 데이터 리플렛쉬가 이루어지고 있는 동안에 알고리즘이 프레임 버퍼의 데이터를 추출하지 않는지를 식별하기 위하여 동기화-플래그는 알고리즘이 OS가 실행 완료된 후 프레임 버퍼 데이터의 리플렛쉬 후에만 데이터를 수신하는지 식별하는데 사용할 수 있다.
하나의 실시예에서, 랩탑은 도 12의 (A)-1에서, 가상 센터에서 가상 서비스로 연결되는 네트워크를 설정하기 위하여 도킹 스테이션을 사용할 수 있다. 랩탑은 도킹 스테이션을 통해 네트워크에 연결된다. 알고리즘이 탑재된 서버 VM은 랩탑으로부터 연결 요청을 받을 때 연결 파라미터를 기반으로 랩탑을 인증하기 위해 활성화된다. SVM은 활성화된 알고리즘과 인터넷을 통해 액세스할 수 있는 VMS에서 실행되는 다양한 서비스 어플리케이션에 접근할 수 있는 가상 센터의 일부가 될 수 있다. 가상 센터는 VMS 내에서 실행되는 다양한 유형의 OS를 가진 하이퍼 바이저 상에서 수행되는 복수의 가상 메신, 하이퍼 바이저, 기본적인 물리적 하드웨어를 포함하는 가상 인프라를 구성하는 모든 구성 요소를 포함한다.
알고리즘은 클라이언트로부터 하나 이상의 연결 파라미터에 대한 역동적인 변화를 감지하고 적절하게 프레임 버퍼 데이터의 프리젠테이션을 동적으로 조정한다. 알고리즘은 데스크탑이나 랩탑 같은 클라이언트가 사용하는 연결 정보의 품질을 교환하고, 연결 품질을 가진 라인에 있어야 하는 하이퍼 바이저와의 상호 작용에 의해 프레임 버퍼 데이터를 백채널(backchannel) 및 미세 조정을 통해 교환한다. 또 다른 실시예에서, 소프트웨어 클라이언트는 도 12의 (B)에서와 같이 플렛쉬 드라이브 같은 컴퓨터 판독 가능 매체에 제공할 수 있다. 소프트웨어 클라이언트가 가진 플렛쉬 드라이브는 데스크탑 컴퓨팅 장치 또는 랩탑 컴퓨팅 장치와 같은 컴퓨팅장치의 USB(범용 직렬 버스)포트로 연결할 수 있고, 랩탑/데스크탑 PC를 통해 액세스할 수 있다. 소프트웨어 클라이언트는 소프트웨어 클라이언드가 플렛쉬 드라이브를 연결한(plugged) 데스크탑 PC 또는 랩탑을 인증하는 인증 메커니즘을 제공한다. 플렛쉬 드라이브가 연결되어 있는 데스크탑 또는 랩탑이 인증되면, 기본 공유 리소스에 액세스하는 하이퍼 바이저에서 실행되는 복수의 VMS와 함께 가상 인프라를 포함하는 가상 센터에 트러스트된 연결이 제공된다. 인증된 데스크탑 PC는 서비스에 연결 요청을 발생사켜 SVM을 활성화하고 특정 VM에서 프레임 버퍼 데이터를 얻기 위해 SVM과 상호 작용할 수 있다.
도 12 (C)에 도시된 다른 실시예에서, 데스크탑 PC는 데스크탑 PC에 사용할 와이파이(Wi-Fi) 기술과 같은 고속 연결을 사용하여 가상 센터와 연결할 수 있다. 본 실시예에서, 데스크탑 PC가 제공하는 가상 서비스에 대한 연결 요청은 데스크탑 PC의 ID를 포함한다. SVM에서 실행되는 알고리즘은 연결 요청을 받으면 데스크탑 PC를 식별하는 연결 요청과 함께 제공된 연결 파라미터를 질의(interrogates)하고, 연결 요청에서 요청한 서비스에 대한 액세스를 제공할 수 있는 VM을 식별하고, 비트 깊이, 허용 스캔 속도, 방향 등 데스크탑의 연결 요구 사항을 질의한다. 알고리즘은 먼저 데스크탑 PC를 인증하고, 인증 시 하이퍼 바이저를 통해 식별된 VM의 프레임 버퍼 정보를 직접 액세스하고, 프레임 버퍼 데이터를 패키지하며 와이파이 연결을 이용한 데스크탑 PC에 VM의 가상 머신 디스플레이의 이미지를 나타내는 패키지된 프레임 버퍼 데이터를 전송한다. 도 12의 (A)-(C)기초하여 기술된 실시 예는 VM에서 실행된 클라이언트가 요청한 서비스를 액세스하고 제어하는 몇 가지 바람직한 방법을 나타낸다. 서비스는 클라이언트에서 실행하도록 설계되어진 어플리케이션이 실행되는 VM의 디스플레이 일 수 있다.
도 11에 도시된 다른 실시예에서, 알고리즘은 단일 클라이언트가 원격으로 사용하여 다른 레이어에서 제공되는 다수 서비스에 액세스할 수 있는 간단하고 효과적인 도구를 제공한다. 클라이언트는 "씬(thin)"클라이언트 또는 "팻(fat)"클라이언트가 될 수 있다. 본 실시예에서, 가상 인프라는 복수의 서비스 "집단(cloud)"를 포함한다. 예를 들어, 복수의 데스크탑 어플리케이션에 접근이 제공되는 복수의 데스크탑 어플리케이션 서비스 집단(1110)일 수 있고, 복수의 온라인 게임을 가진 게임서비스 집단(1120)일 수 있으며, 멀티미디어 콘텐츠의 온라인 스트림을 얻기 위한 NetFlixTM에서 제공하는 것과 같은 PVR/DVR/DVD 서비스 집단(1130)과 다른 유형의 게임/어플리케이션 서비스 집단(1140)일 수 있다. 이러한 집단의 각각은 액세스하고 제어할 수 있는 클라이언트에 대한 서비스의 특정 유형을 제공한다. 서비스 집단의 상기 목록은 바람직한 예이며, 여기에 제한되어서는 안된다. 서비스 집단의 다른 유형은 발명의 실시 예로 사용할 수 있다. 집단의 각각은 하이퍼 바이저 상에서 수행되고 기본 하드웨어에 액세스하는 복수의 VMs와 함께 자신의 가상 센터를 가진다. 이미지 프로세서 알고리즘(IPA)은 적어도 VM에서 집단 각각에 제공된다. 다른 실시예에서, IPA는 별도의 서버 VM(SVM)에서 제공된다. 또 다른 실시예에서, IPA는 각 서비스 계층 내에서 몇 개의 VMS에서 제공된다. IPA는 다른 실시예에서, 각 서비스 계층 내의 모든 VMS에서 사용할 수 있다.
하나의 실시예에서, 이러한 데스크탑에서 클라이언트는 적절한 IPA에 액세스하여 집단 각각의 어플리케이션/서비스에 액세스할 수 있다. 프로세스는 연결 요청을 생성하는 클라이언트로 시작한다. 연결 요청은 클라이언트와 관련된 환경과 연결 기준을 정의하는 복수의 연결 파라미터를 포함한다. 연결 파라메타에 포함된 것은 클라이언트가 액세스하려고 시도하는 특정 서비스와 서비스계층을 정의하는 서비스 계층 식별 정보이다. 알고리즘은 요청한 서비스와 요청한 서비스를 제공하는 특정 VM에 관련된 특정 서비스 계층을 식별하는 연결 파라미터를 질의한다. 예를 들어, 요청된 서비스는 데스크탑 어플리케이션 서비스 집단 내의 어플리케이션이 될 수 있다. 요청한 서비스 층(layer)과 VM이 식별되면 알고리즘은 하이퍼 바이저를 통해 식별된 계층에서 식별된 VM에서 요청한 서비스에 대한 프레임 버퍼 데이터를 직접 액세스하고, 프레임 버퍼 데이터를 분석하며, 클라이언트에 의해 지정된 포맷으로 이미지 데이터 패킷을 생성한다. 생성된 패킷은 포맷 알고리즘 및 네트워크 요구에 따라 패킷화되고, 디코딩, 프로세싱, 어셈블링 및 렌더링을 위해 클라이언트에 전송된다. 알고리즘은 렌더링되는 프레임 버퍼를 통해 클라이언트가 서비스를 관리하도록 허용된다.
클라이언트가 동일한 집단내에서 다른 서비스를 액세스하고자 할 때, 클라이언트는 단지 기존 연결을 종료하고 새 연결 요청을 생성한다. 알고리즘은 새로운 연결 요청을 감지하고 새로운 연결 요청을 질의하며, 예를 들어 같은 데스크탑 어플리케이션 서비스가 클라우드(1110)에 새로운 서비스를 식별하고, 데스크탑 어플리케이션 서비스 클라우드의 VI 내에서 동일한 VM 또는 다른 VM 일 수 있는 VM에서 요청된 서비스에 대한 이미지 데이터 패킷의 형태로 프레임 버퍼 데이터를 제공한다. 이미지 데이터 패킷은 클라이언트에 특정 포맷으로 제공된다.
비슷한 라인을 따라서, 클라이언트가 같은 게임 서비스 클라우드와 다른 클라우드에서 다른 서비스에 액세스하기를 원하면, 기존의 연결을 종료하고, 예를들어 데스크탑 어플리케이션 서비스 클라우드(1110)와 같이 게임 서비스 클라우드내의 온라인 게임 어플리케이션에서와 같이 새로운 서비스에 연결요청를 설정하며, 이는 연결 파라미터에서 제공한다. 알고리즘은 새로운 연결 요청을 감지하고, 새로운 연결 파라미터를 얻기 위하여 요청에 대하여 질의하며, 새로운 연결 파라미터를 사용하여 게임 어플리케이션 클라우드(1120) 내에서 새로운 게임 어플리케이션에 연결을 설정하고, 게임 어플리케이션 클라우드(1120)에서 하이퍼 바이저를 사용하여 새로운 게임 어플리케이션을 위한 프레임 버퍼 데이터를 얻으며, 연결 파라미터를 기반으로 클라이언트의 요구 사항을 준수(충족)하는 패킷으로 프레임버퍼 데이터를 패킷화하고, 렌더링을 위하여 클라이언트에게 패킷화된 프레임 버퍼 데이터를 전송한다. 앞서 기술한 바와같이, 다른 디스플레이 요구 사항을 가진 프레임 버퍼 데이터의 다중 포맷은 요구에 의하여 동일한 프레임 버퍼 데이터에 대하여 동적으로 생성하고 클라이언트에게 제공되며, 필요한 경우에 제공된다. 그래서, 알고리즘은 독점적인 프로토콜/소프트웨어 또는 다른 클라이언트가 참여하지 않고 하나의 어플리케이션 서비스 클라우드에 있는 서비스의 한 유형에서 다른 어플리케이션 서비스 클라우드에 있는 서비스의 또 다른 유형으로 전환할 수 있는 방법을 제공한다.
앞서 기술한 실시 예는 특정 계층에서 서비스를 접근하는 자세한 사항을 제공하고, 주어진 시간에 클라이언트에서 서비스와 관련된 정보를 렌더링하는 것으로 인식해야 한다. 그러나 실시 예들은 주어진 시간에 단지 하나의 서비스에 대한 액세스를 제공하는 것으로 제한하는 것은 아니며, 주어진 시간에 여러 계층에서 다수 서비스를 제공하도록 확장할 수 있다. 따라서 알고리즘은 연결 파라미터를 사용하여 여러 계층으로부터 다수 서비스에서 프레임 버퍼 정보의 액세스를 허용하고 동시에 클라이언트의 디스플레이 장치에서 프레임 버퍼 데이터를 렌더링할 수 있다. 다수 서비스로부터의 프레임 버퍼 데이터는 해당 서비스에서 이미지 데이터를 렌더링한 이미지 구조의 일부와 도 2i 에 기초하여 논의된 것과 유사한 방식으로 렌더링된다.
앞서 기술된 실시 예들은 VMs에서 실행 중인 임의의 OS와 상호 작용하지 않고 VM을 제어하는 클라이언트를 가능하게 하는 효율적이고 유연한 도구에 대하여 기술한 것이다. 알고리즘은 디스플레이 장치에 렌더링을 위하여 요청된 프레임 버퍼 데이터이고 VM의 가상 모니터에 표시되며 재현을 위한 OS(운영 체제)에서 실제 데이터가 아니기 때문에, 데이터 해석 따르는 어떠한 독점적인 프로토콜이 필요하지 않다. 또한, 알고리즘에서 받은 데이터는 이미 텍스트가 분석되어 알고리즘에 의해 클라이언트로 전송된 이미지 데이터 패킷에 포함되어 있는 적절한 텍스트 정보가 이미 분석되어 있다. 결과적으로, 클라이언트는 이미지 데이터를 해석할 필요가 없고, 그래서 클라이언트는 큰 CPU를 피할 수 있다. 더 나아가, 클라이언트와 VM 간의 모든 상호 작용은 하이퍼 바이저를 통해서 이루어지며, VM의 OS와 직접 이루어지지 않는다. 알고리즘과 가상 비디오 드라이버는 간단하고 쉬운 클라이언트에 프레임 버퍼 데이터의 해석을 위해 지정된 포맷의 모든 VMs로부터 프레임 버퍼 데이터를 받아서 검증한다. 이것은 VMs를 액세스하고 제어하기 위한 매우 유연한 도구 세트를 만들기에 적절한 압축 해제(de-compression) 방법을 사용하여 프레임 버퍼 데이터에 액세스할 수 있는 매우 씬(thin) 클라이언트일 수 있다. 또한, 알고리즘은 장거리 프레임 버퍼 데이터의 전송을 가능하게 하는, 사용자 데이터 그램 프로토콜 (UDP) 등과 같은 매우 포괄적이고 단순 전송 프로토콜을 사용한다. 지정된 포맷과 간단한 전송 프로토콜의 결합은 알고리즘 지연 감지 및 손실 감지 특성을 가지고 빠르고 쉬운 방법으로 재전송이 가능하다. 현재 발명의 실시 예는 원격으로 이러한 어플리케이션에 액세스하고 제어하는 도구를 제공하면서 VI "클라우드"에서 실행을 계속하도록 하는 어플리케이션을 허용하는 방법을 제공하는 것임을 인지해야 한다. 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 현재 실시예의 이러한 이점 및 다른 이점을 쉽게 알 수 있다.
모바일 어플리케이션
데스크탑 어플리케이션에 부가하여, 현재의 기술은 모바일 장치 위하여 설계된 어플리케이션/서비스에 액세스하는 모바일 디바이스와 함께 사용할 수 있다. 모바일 장치는 씬(thin) 클라이언트로 이해하고 터치 입력 디스플레이 장치 또는 미니 키보드를 가진 디스플레이 장치 및 매우 제한된 컴퓨팅 자원을 가진 포켓 사이즈 컴퓨팅 장치로 생각할 수 있다. 모바일 장치는 예를 들어 몇 가지 이름을 지칭하면 PDA, 스마트폰, 태블릿 PC 등 넓은 범위의 가전제품을 포함한다. 모바일 장치는 상기 목록이 바람직한 예이며, 여기에 제한되지는 않는다.
현재의 모바일 디바이스는 넓은 범위의 어플리케이션, 즉 전자 메일, 인스턴트 메시징, 텍스트 메시징, 웹 브라우징 등의 가상 환경에 활용 가능한 다중 기능 장치이다. 그러나, 풍부한(rich) 클라이언트 형태로 이러한 어플리케이션에 액세스는 데이터를 제공하는 VM과 데이터에 대한 액세스를 제공하기 위한 독점적 어플리케이션 데이터의 압축해제를 위한 큰 프로세서를 필요로 하는 모바일 장치를 초래했다. 모바일 장치 내의 프로세서의 대형 컴퓨터-인텐시브(computer-intensive) 요구 사항은 고가이므로 설계와 균형 효율을 위한 모바일 장치 제조 업체에 대한 지속적인 도전을 제공하는 것이다. 점점 더 많은 어플리케이션이 모바일 장치에 사용되고, 프로세서에 대한 요구는 점점 커지며, 컴퓨팅 리소스에 대한 어플리케이션의 균형을 만드는 것은 매우 섬세하고 어려운 작업이다.
효율적인 설계 구조에 대한 더 많은 어플리케이션을 위한 큰 프로세서를 선택하므로 발생하는 충돌을 방지하기 위해 이미지 프로세서 알고리즘은 VMs에서 실행되는 씬 모바일 장치와 서비스/어플리케이션사이의 인터페이스를 제공하는데 사용할 수 있다. 알고리즘은 가상 센터내에서 복수의 VMs들이 실행되는 많은 수의 어플리케이션/서비스를 액세스하고 제어할 수 있는 기능을 제공하면서 씬 모바일 장치의 제한된 자원을 유리하게 활용할 수 있다. 알고리즘의 일반적인 기능은 앞서 도 2a에 기초하여 자세히 기술하였다. 모바일 장치의 기능은 도 12의 (A)-2를 참조하여 기술되어질 것이다.
하나의 실시예에서, 모바일 장치는 인터넷을 통해서 네트워크에 연결하여 VM의 서비스/리소스를 액세스한다. 또 다른 실시예에서, PDA와 같은 모바일 디바이스 , 네트워크를 통해 사용 가능한 가상 센터(VC) 내의 가상 머신(VM)에서 실행되는 서비스에 액세스하는 개인용 컴퓨터(PC)에서 리소스를 가능하게 한다. PC는 인터넷 카페에서 이용 가능하며 Wi-Fi 네트워크의 일부 혹은 광역 네트워크 연결(WAN)을 통해 VC에 접근할 수 있는 데스크탑 PC가 될 수 있다. PC는 예를 들어 바코드 또는 무선 주파수 식별(RFID) 태그와 같은 식별 태그 또는 정보가 포함되어 있다. 모바일 장치는 장치를 식별한 후 무선 네트워크를 통해 PC 장치를 인증한다. PC의 ID가 인증되면, PC는 기본 공유 리소스에 액세스하는 하이퍼 바이저상에서 실행되는 복수의 VMs와 가상 인프라를 포함하는 가상 센터(VI)에 트러스트된 연결이 제공된다. 인증된 PC는 VC의 VMs에서 제공하는 어플리케이션/서비스에 액세스하기 위한 VC"클라우드"에 세션을 설정하도록 지시한다. 데스크탑 어플리케이션과 관련하여 앞서 언급했듯이, PC는 가상 서비스/이미지 프로세서 알고리즘을 사용하여 다른 계층(layers)에서 사용할 수 있는 가상 서비스 어플리케이션의 여러 유형에 액세스할 수 있다. 그래서 액세스 지점으로 PC를 사용하면 사용자는 VMs에서 이용할 수 있는 복수의 서비스/어플리케이션을 액세스하고 제어할 수 있는 이득을 얻을 수 있다.
마찬가지로, 다른 실시예에서, 모바일 장치는 직접 키보드, 모니터와 마우스를 가진 도킹 스테이션에 연결하면, 가상 환경에서 VM에 연결을 요청하는 독자적 실행형 클라이언트로써 역할을 한다. 모바일 장치에서 VM에 연결 설정하는 과정은 도킹 스테이션을 사용하여 랩탑과 데스크탑을 참조하여 앞서 기술한 실시 예와 유사하다. 모바일 클라이언트는 네트워크 연결을 설정하기 위하여 Wi-Fi 네트워크를 사용하고, 도킹 스테이션은 일정 요금을 공급할 수 있다. 본 실시예에서, 프레임 버퍼 데이터는 알고리즘으로 클라이언트의 초기 핸드 셰이크 중에 설정된 연결 파라미터를 기반으로 모바일 장치와 연결된 디스플레이 장치에 대한 구성이다.
모바일 장치 세션은 앞서 도 2d 에 기초하여 기술된 데스크탑 PC 또는 도 2a를 파악하기 위해 참조로 설명된 랩탑에 의해 설정되는 것의 범위와 유사하다. 알고리즘은 원격 서비스/어플리케이션에 액세스하는 방법을 제공한다. 알고리즘은 VM에서 얻은 특정 서비스를 위한 프레임 버퍼에서 스캔하고 볼 수 있는 논리를 가지며, 각 활동 영역에서 활동량과 활동영역을 결정하고, 비활도 영역을 무시하는 동안에 해당 할당 영역에 집중하는 로직을 가진다. 이것은 변화된 데이터가 전송되어지는 네트워크 리소스와 대역폭을 보존할 수 있다. 또한 알고리즘은 프레임이나 대역외 멀티미디어 콘텐츠를 결정하기 위한 로직을 가지며, 대역외 멀티미디어 스트림에서 그러한 데이터를 추출하고 전송하기 위한 특수 기법을 사용하는 논리를 가지고 있다. 대역외의 스트림이 모바일 장치에 수신되면, 스트림 처리 및 모바일 장치에 의해 이해되는 포맷으로 모바일 장치와 연결된 화면에 오버레이된다.
알고리즘은 모바일 장치에서 제공하는 이외의 디스플레이 장치를 수용하기 위해 모바일 장치로 렌더링을 위한 프레임 버퍼 데이터의 추가 포맷을 제공한다. 알고리즘은 클라이언트와 알고리즘사이의 초기 핸드 셰이크 중에 연결 정보를 사용하고 렌더링을 위해 적절하게 포맷된 프레임 버퍼 데이터를 제공한다. 그래서 모바일 장치는 모니터/디스플레이 장치에 액세스하기 위해 도킹 스테이션을 사용하는 경우, 알고리즘은 모바일 장치와 관련된 디스플레이 장치의 요구사항을 얻고, 해당 디스플레이 장치의 디스플레이 요구 사항에 맞는 포맷된 프레임버퍼 데이터를 요청한다. 앞에서 언급한 적절하게 포맷된 프레임 버퍼 데이터는 동적으로 생성하거나 프레임 버퍼 데이터를 위해 이미 만들어진 복수의 포맷으로부터 특정 포맷을 알고리즘으로 전송하기 위해 선택한다. 모바일 장치에서 사용자 상호 작용과 다른 피드백은 미세 튜닝과 갱신을 위하여 기록되고 알고리즘에 전달된다.
현재 실시 예들은 네트워크 연결을 사용하여 원격으로 VC 클라우드에서 사용할 수 있도록 다양한 서비스/어플리케이션을 액세스하고 제어하기 위하여 공동 위치해 있거나 비 공동 위치에서 매우 씬(thin) 클라이언트에 대한 기능을 제공한다. 알고리즘은 예측 가능한 프레임 버퍼 데이터를 제공하고, 그러한 이유로 압축/압축 해제를 위한 독자적인 프로토콜이 필요하지 않다. 모든 서비스는 VMs에서 유지되고 실행되며, 복잡한 처리와 포맷은 VM이 계층에서 사용 가능한 리소스를 사용하여 VC내의 VM 계층에서 알고리즘을 실행하는 VM에 의해 국부적으로 이루어진다. 클라이언트 측면에서 더 수용하고 효과적인 솔루션을 만드는 복잡한 처리가 필요하지 않다. 다른 장점은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 명백하게 이해할 것이다.
게임 어플리케이션
데스크탑 어플리케이션 및 모바일 어플리케이션에 부가하여, 알고리즘은 게임 어플리케이션/서비스를 제어하기 위한 보다 유연하고 효과적인 도구를 제공하는 게임 어플리케이션에 사용할 수 있다. 본 발명의 실시 예는 게임 서비스 클라우드에서 사용 가능한 게임 어플리케이션/서비스의 제어를 제공하기 위한 알고리즘의 기능적 측면을 사용한다.
이번 실시예에서, 클라이언트는 임의의 다른 서비스를 위하여 사용되어지는 임의의 클라이언트로, 그것은 PC, 씬 클라이언트 혹은 도킹 모바일 장치, 또는 시장에서 이용할 수 있는 게임 콘솔과 같은 임의의 다른 종단장치이다. 당업계 잘 알려진 게임 콘솔은 디스플레이장치와 연결되어 상호작용하는 컴퓨터 시스템이며, 예를 들어 디스플레이 장치는 텔레비젼 스크린, 컴퓨터 모니터 및 비디오 게임을 디스플레이하기 위한 디스플레이장치와 함께 비디오 디스플레이 신호를 생성하는 장치이다. 하나의 실시예에서, 게임 콘솔은 낮은 CPU 성능과 낮은 메모리를 가지는 넷탑(nettop) 컴퓨터로 대체되고, 예를들면 서비스 클라우드에서 이용할 수 있는 이미지 프로세서 알고리즘을 사용하는 게임 클라우드와 같은 서비스 클라우드의 가상 센터와 연결되는 넷탑(nettop) 컴퓨터의 리소스를 사용한다. 당업계 잘 알려져 있는 바와 같이 넷탑(nettop) 컴퓨터는 예를 들어 인터넷, 웹 기반 어플리케이션과 같은 기본 동작을 수행하도록 설계된 매우 작고, 저렴하며, 저전력 컴퓨터이다. 연결 요청은 게임 클라우드에서 서비스/어플리케이션을 위한 넷탑(nettop) 컴퓨터의 동작을 시작하게 한다. 연결 요청은 복수의 넷탑(nettop)의 요구사항과 함께 알고리즘을 제공하는 복수의 연결 파라미터를 포함한다. 알고리즘은 넷탑(nettop)이 요청한 서비스/어플리케이션을 제공하는 VM을 식별하기 위한 연결 파라미터를 사용하고, 하이퍼 바이저를 통해 적절한 프레임 버퍼 데이터에 직접 액세스하며, 알고리즘에 의해 정의된 해당 포맷으로 이미지 데이터 패킷을 생성한다. 알고리즘은 서비스 요청에 대한 응답으로 넷탑으로 연결 파라미터에 의해 유도되는 적절한 패키지에 이미지 데이터 패킷을 전달한다. 게임 넷탑에서 사용자 상호 작용은 예를들면 마우스 클릭과 키보드 스트로크와 같은 백채널을 통해서 미세조정 및 갱신을 위한 알고리즘을 캡처하고 전달한다. 또한 알고리즘은 설정된 백채널을 통해서 서비스의 품질에 관해서 넷탑으로부터 주기적인 갱신을 받게된다. 알고리즘은 프레임 버퍼 데이터를 적절하게 패키지하고 전송하기 위하여 서비스 품질을 사용하고 넷탑의 프레임 버퍼 데이터를 주기적으로 갱신한다. 다른 장점은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 명백히 이해할 것이다.
앞서 기술한 실시 예를 염두에 두고, 본 발명은 컴퓨터 시스템에 저장된 데이터를 포함한 다양한 컴퓨터 구현 작업에 적용할 수 있음으로 이해해야 한다. 이러한 작업은 물리적 수량의 물리적 조작을 필요로 하는 것들이다. 통상적으로, 반드시 필요한 것은 아니지만 이러한 수량은 저장하고, 전송하며, 결합하고, 비교하며, 다른 조작을 할 수 있는 전기 또는 자기 신호의 형태를 취한다. 또한, 수행된 조작은 종종 생산, 식별, 결정, 또는 비교와 같은 조건에서 언급하고 있다.
여기에 기술된 동작들 중 발명의 양태 부분은 유용한 머신 동작이다. 또한 본 발명은 이러한 동작을 수행하기 위한 장치(device) 또는 장비(apparatus)에 관한 것이다. 장비는 특별히 필요한 용도로 제작되거나 그것은 컴퓨터에 저장되어 있는 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 구성되는 범용 컴퓨터가 될 수 있다. 특히, 다양한 범용 머신은 여기에 개시된 구성에 따라 작성된 컴퓨터 프로그램과 함께 사용할 수도 있고, 필요한 동작을 수행하기 위해 보다 전문적인 장비들을 제작하는 것이 더 편리할 수 있다.
본 발명 역시 컴퓨터 판독 가능 매체에서 컴퓨터 판독 가능한 코드로 구현할 수 있다. 컴퓨터 판독 가능 매체는 이후 컴퓨터 시스템에서 데이터를 저장하고 읽을 수 있는 데이터 저장 장치이다. 컴퓨터 판독 가능 매체의 예로는 하드 드라이브, 네트워크 부착형 스토리지(NAS), 읽기 전용 메모리, 랜덤 액세스 메모리, CD-ROMs, CD-Rs, CD-RWs, 마그네틱 테이프, 기타 광학 및 비 광학 데이터 저장 장치를 포함한다. 컴퓨터 판독 가능 매체는 컴퓨터 시스템과 결합하여 네트워크를 통해 배포할 수 있으며, 그래서 컴퓨터가 읽을 수 있는 코드가 분산 방식으로 저장되고 실행된다.
그러나, 본 발명은 이러한 구체적인 세부 사항의 일부 또는 전부 없이 이 기술분야에 통상의 지식을 가진 자라면 실행할 수 있음은 분명한 것이다. 다른 경우에 잘 알려진 프로세스 동작은 본 발명을 불필요하게 흐르게 하지 않기 위하여 자세히 기술하지 않았다.
본 발명은 명확한 이해를 목적으로 일부 자세히 설명이 되어 있지만, 그것의 임의의 변경 및 변형은 본 발명의 보호범위 내에서 실시되어질 수 있다는 것이 명백하다. 따라서 본 발명의 실시 예는 설명에 의한 제한되지 않는 것으로 간주되어야 하며, 본 발명은 주어진 세부 사항에 한정되는 것이 아니라, 본 발명의 범위 내에서 변형될 수 있다.

Claims (52)

  1. 특정 가상 머신 상에서 이용가능한 가상화 컴퓨터 서비스를 제어하기 위해 클라이언트로부터, 클라이언트의 연결 요구를 정의하는 다수의 연결 파라미터를 포함하고, 이미지 프로세서 알고리즘을 실행하는 가상 머신에서 수신되는, 연결 요청을 수신하고;
    클라이언트로부터 요청을 만족하는 가상화 컴퓨터 서비스를 제공하는 특정 가상 머신을 식별하도록 이미지 프로세서 알고리즘을 이용해서 연결 파라미터를 질의하고;
    하이퍼바이저를 통해 가상 메모리의 소정 위치로부터 특정 가상 머신을 위한, 가상 메모리의 소정 위치로부터 판독된, 특정 가상 머신의 가상 머신 디스플레이와 관련된 이미지를 나타내는 그래픽 출력을 정의하는, 프레임버퍼 데이터를 액세스하고;
    다수의 연결 파라미터를 기초로 이미지 프로세서 알고리즘을 이용해서 다수의 이미지 데이터 패킷으로 프레임버퍼 데이터를 처리하고;
    클라이언트와 관련된 디스플레이 장치 상에 제공하기 위해 클라이언트에 대해, 클라이언트를 위해 특정되고 가상 머신 디스플레이의 이미지를 나타내는, 이미지 데이터 패킷을 전송하는 것;을 갖추어 이루어진 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 방법.
  2. 제1항에 있어서,
    이미지 데이터 패킷이 이미지 프로세서 알고리즘에 관한 패키징 정보와 네트워킹에 관한 패키징 정보를 포함하는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 방법.
  3. 제1항에 있어서,
    프레임버퍼 데이터를 처리하는 것이,
    콘텍스트를 결정하도록 특정 가상 머신의 프레임버퍼 데이터를 분석하고;
    분석을 기초로 특정 가상 머신의 프레임버퍼 데이터에 대해 적절한 맥락성 정보를 관련지우고;
    맥락성 정보에 따라 특정 가상 머신의 프레임버퍼 데이터를 저장하는 것을 더 포함하는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 방법.
  4. 제3항에 있어서,
    주기적으로 특정 가상 머신의 프레임버퍼 데이터를 스캐닝하고;
    특정 가상 머신을 위해 저장된 프레임버퍼 데이터에 대항하여 스캔된 프레임버퍼 데이터 데이터를 비교하는 것에 의해 변화의 영역을 결정하고;
    분석 및 전송을 위한 특정 가상 머신과 관련된 시간-기반 저장 어레이에서의 변화의 영역을 저장하되, 변화의 영역의 저장이 변화의 영역과 관련된 맥락성 정보의 저장을 포함하는 것;을 더 포함하는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 방법.
  5. 제4항에 있어서,
    프레임버퍼 데이터를 스캐닝하는 것이,
    특정 가상 머신의 프레임버퍼 데이터와 관련된, 특정 가상 머신의 프레임버퍼 데이터의 리프레쉬의 상태를 식별하는, 동기-신호를 질의하고;
    동기-신호의 질의를 기초로 특정 가상 머신의 프레임버퍼 데이터의 스캐닝을 수행하는 것;을 더 포함하는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 방법.
  6. 제5항에 있어서,
    특정 가상 머신을 위한 프레임버퍼 데이터의 리프레쉬 이전에 동기-신호를 설정하고;
    특정 가상 머신을 위한 프레임버퍼 데이터의 리프레쉬의 완료에 따라 동기-신호를 재-설정하는 것;을 더 포함하는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 방법.
  7. 제5항에 있어서,
    가상 머신에서 프레임버퍼 데이터의 주기적 스캐닝은 가상 머신에서의 프레임버퍼 데이터의 리프레쉬 주파수 또는 클라이언트와 관련된 연결 파라미터에 의해 구동된 주파수 중 하나에서 수행되는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 방법.
  8. 제5항에 있어서,
    가상 머신에서 프레임버퍼 데이터의 스캐닝이,
    특정 가상 머신의 프레임버퍼 데이터에서 변경의, 특정 가상 머신과 관련된 그래픽 드라이버로부터 수신된, 통보 정보(notification information)를 수신하고;
    통보를 기초로 특정 가상 머신의 프레임버퍼 데이터를 스캐닝하는 것;을 더 포함하는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 방법.
  9. 제4항에 있어서,
    프레임버퍼 데이터 데이터를 처리하는 것이,
    프레임버퍼 데이터 내의 높은 활동성(high activity)의 영역을 결정하도록 시간-기반 저장 어레이를 분석하고;
    프레임버퍼 데이터의 높은 활동성의 영역 내에서 활동성의 연속적인 영역(contiguous areas)을 결정하고;
    시간-기반 저장 어레이 내에서 프레임버퍼 데이터의 그룹으로 활동성의 연속적인 영역 내에서 전송 기술 친화적 특징(transmission technique friendly traits)을 그룹지우고;
    클라이언트와 관련된 연결 파라미터를 기초로 클라이언트에 대해 시간-기반 프레임버퍼 데이터 스트림에서 시간-기반 저장 어레이로부터 활동성의 연속적인 영역의 그룹을 전송하되, 활동성의 연속적인 영역의 그룹의 전송이 프레임버퍼 데이터와 관련된 추출된 맥락성 정보를 포함하는 것;을 더 포함하는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 방법.
  10. 제9항에 있어서,
    이미지 데이터 패킷의 전송이,
    연결 파라미터를 기초로 클라이언트와 관련된 디스플레이 장치와 호환할 수 있는 포맷을 결정하고;
    프레임버퍼 데이터와 관련된 콘텍스트를 기초로, 클라이언트와 관련된 디스플레이 장치와 호환가능한 포맷으로 프레임버퍼 데이터를 변환하는데 이용되는, 하나 이상의 변환 기술을 식별하고;
    프레임버퍼 데이터를 하나 이상의 변환 기술을 이용해서 식별된 포맷에 준수하는, 프레임버퍼 데이터와 관련된 맥락성 정보를 포함하는, 이미지 데이터 패킷으로 변환하고;
    포맷된 이미지 데이터 패킷을 클라이언트의 디스플레이 장치에서 렌더링하기 위해 클라이언트에 대해 전송하는 것;을 더 포함하는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 방법.
  11. 제9항에 있어서,
    프레임버퍼 데이터의 변화의 영역과 관련된 하나 이상의 특징을 시험하고;
    식별된 변환 기술을 이용해서 하나 이상의 특징을 기초로 변화의 영역에 관한 프레임버퍼 데이터의 부분을 추출하고;
    프레임버퍼 데이터의 추출된 부분을 식별된 변환 기술을 이용해서, 프레임버퍼 데이터의 맥락성 정보를 포함하는, 대역 외 스트림(out-of-band stream)으로서 클라이언트에 대해 전송하는 것;을 더 포함하고,
    프레임버퍼 데이터의 추출된 부분이 비디오 클립인 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 방법.
  12. 제9항에 있어서,
    클라이언트와 관련된, 클라이언트와 관련된 디스플레이 장치에서의 변화를 식별하는, 연결 파라미터에 대한 변화를 동적으로 검출하고;
    클라이언트에서 검출된 연결 파라미터에 대한 변화를 기초로 적절한 이미지 데이터 패킷으로 특정 가상 머신의 프레임버퍼 데이터를, 클라이언트의 디스플레이 장치에서 프레임버퍼 데이터의 렌더링을 가능하게 하는, 동적으로 리샘플링 및 리사이징하는 것;을 더 포함하는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 방법.
  13. 제9항에 있어서,
    클라이언트와 관련된, 각각이 다른 형태(distinct type)인, 다수의 디스플레이 장치를 검출하고;
    클라이언트의 디스플레이 장치의 각 형태와 호환가능한 포맷을 결정하고;
    하나 이상의 변환 기술을 이용해서, 각 세트가 클라이언트와 관련된 디스플레이 장치의 특정 형태와 호환가능한 포맷을 이용해서 프레임버퍼 데이터를 변환하는 것에 의해 발생된, 이미지 데이터 패킷의 다중 세트를 발생시키되, 이미지 데이터 패킷의 각 세트가 프레임버퍼 데이터와 관련된 맥락성 정보를 포함하고;
    클라이언트의 각 디스플레이 장치에서 렌더링을 위해 클라이언트에 대해 이미지 데이터 패킷의 각 세트를 전송하는 것;을 더 포함하는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 방법.
  14. 제1항에 있어서,
    각 이미지 데이터 패킷이 클라이언트에서 가상 머신 디스플레이의 이미지의 특정 부분을 정의 및 렌더링하도록 할당되고, 이미지의 특정 부분이 적어도 하나의 픽셀에 의해 정의되는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 방법.
  15. 제1항에 있어서,
    프레임버퍼 데이터가 가상 머신의 오퍼레이팅 시스템에 의해 생성되고, 프레임버퍼 데이터에 대한 액세스가, 클라이언트와 가상 머신 사이에서 인터페이스를 제공하는, 하이퍼바이저에 의해 제공되는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 방법.
  16. 가상화 컴퓨터 서비스를 제어하기 위해 클라이언트로부터, 클라이언트의 연결 요구를 정의하는 다수의 연결 파라미터를 포함하고, 이미지 프로세서 알고리즘을 실행하는 가상 머신에서 수신되는, 연결 요청을 수신하고;
    클라이언트로부터 연결 요청을 만족하는 가상화 컴퓨터 서비스를 제공하기 위한 특정 서비스 계층 내의 특정 가상 머신과 요청된 서비스의 형태를 제공하는 특정 서비스 계층를 식별하도록 이미지 프로세서 알고리즘을 이용해서 연결 파라미터를 질의하되, 각 서비스 계층이 다른 형태의 서비스를 호스트하고;
    특정 가상화 컴퓨터 서비스를 제공하는 특정 서비스 계층에 대해 연결하고;
    특정 서비스 계층에서의 하이퍼바이저를 통해 가상 메모리의 소정 위치로부터 특정 가상 머신을 위한, 가상 메모리의 소정 위치로부터 판독된, 식별된 서비스 계층 내에서 특정 가상 머신의 가상 머신 디스플레이와 관련된 이미지를 나타내는 그래픽 출력을 정의하는, 프레임버퍼 데이터를 액세스하고;
    다수의 연결 파라미터를 기초로 이미지 프로세서 알고리즘을 이용해서 다수의 이미지 데이터 패킷으로 프레임버퍼 데이터를 처리하고;
    클라이언트와 관련된 디스플레이 장치 상에 제공하기 위해 클라이언트에 대해, 클라이언트를 위해 특정되고 가상 머신 디스플레이의 이미지를 나타내는, 이미지 데이터 패킷을 전송하는 것;을 갖추어 이루어진 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 방법.
  17. 제16항에 있어서,
    각 이미지 데이터 패킷이 클라이언트에서 가상 머신 디스플레이의 이미지의 특정 부분을 정의 및 렌더링하도록 할당된 데이터를 포함하고, 이미지의 특정 부분이 적어도 하나의 픽셀에 의해 정의되는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 방법.
  18. 제16항에 있어서,
    클라이언트에서, 클라이언트에 의해 요청된 새로운 가상화 컴퓨터 서비스를 정의하는, 연결 파라미터의 변화를 검출하고,;
    식별된 가상 머신에 대한 연결을 분리하고;
    클라이언트에 의해 요청된 새로운 가상화 컴퓨터 서비스를 제공하는 새로운 특정 가상 머신을 식별하도록 이미지 프로세서 알고리즘을 이용해서 변경된 연결 파라미터를 질의하고;
    변경된 연결 파라미터의 질의를 기초로, 새로운 특정 가상 머신과 관련된 가상 메모리의 소정 위치에서 새로운 특정 가상 머신을 위한 프레임버퍼 데이터에 대한 액세스를 가능하게 하는, 새로운 특정 가상 머신에 대한 연결을 확립하고;
    새로운 특정 가상 머신과 관련된 가상 메모리의 소정 위치로부터 새로운 특정 가상 머신을 위한 프레임버퍼 데이터를 액세스하되, 액세스된 프레임버퍼 데이터가 특정 가상 머신을 위한 가상 메모리의 소정 위치로부터 판독되고 클라이언트의 디스플레이 장치 상의 표현 및 이미지 프로세서 알고리즘을 이용해서 전송을 위해 다수의 이미지 데이터 패킷으로 처리되며, 이미지 데이터 패킷이 클라이언트를 위해 특정되고 새로운 가상화 컴퓨터 서비스가 실행되는 새로운 가상 머신과 관련된 새로운 특정 가상 디스플레이의 이미지를 표현하는 것;을 더 포함하는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 방법.
  19. 제18항에 있어서,
    연결을 분리하는 것이 식별된 서비스 계층로부터의 분리를 포함하는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 방법.
  20. 적어도 하나의, 다수의 가상 머신이 실행되는 하이퍼바이저 상에서 실행되는 이미지 프로세서 알고리즘을 구비하는, 가상 머신 상에 이미지 프로세서 알고리즘을 제공하고;
    적어도 하나의 가상 머신의 이미지 프로세서 알고리즘에서 연결 요청을 처리하되, 연결 요청은 클라이언트로부터 수신되고, 연결 요청의 처리는 연결 요청을 만족할 수 있는 가상화 컴퓨터 서비스를 갖춘 특정 가상 머신과 클라이언트와 관련된 연결 요구를 정의하는 다수의 연결 파라미터를 식별하고;
    하이퍼바이저를 통해 가상 메모리의 소정 위치로부터 특정 가상 머신을 위한, 가상 메모리의 소정 위치로부터 판독되고, 특정 가상 머신의 가상 머신 디스플레이와 관련된 이미지를 나타내는 그래픽 출력을 정의하는, 프레임버퍼 데이터를 액세스하고;
    다수의 연결 파라미터를 기초로 이미지 프로세서 알고리즘을 이용해서 다수의 이미지 데이터 패킷으로 프레임버퍼 데이터를 처리하되, 다수의 이미지 데이터 패킷이 판독된 프레임버퍼 데이터와 관련된 맥락성 정보를 포함하고;
    맥락성 정보를 갖는, 클라이언트를 위해 특정되고 VM 디스플레이의 이미지를 나타내는, 이미지 데이터 패킷을 클라이언트와 관련된 디스플레이 장치 상에 나타내기 위해 클라이언트에 대해 전송하는 것;을 갖추어 이루어진 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 방법.
  21. 제20항에 있어서,
    다수의 가상 머신에 독립적으로 이미지 프로세서 알고리즘을 제공하는 것을 더 포함하고, 이미지 프로세서 알고리즘을 구비하는 각 가상 머신이 다른 가상 머신의 대응하는 프레임버퍼 데이터를 액세스 및 판독하도록 구성된 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 방법.
  22. 제20항에 있어서,
    하이퍼바이저 상에서 실행되는 각 다수의 가상 머신에 독립적으로 이미지 프로세서 알고리즘을 제공하는 것을 더 포함하고, 이미지 프로세서 알고리즘을 구비하는 각 가상 머신이 다른 가상 머신의 대응하는 프레임버퍼 데이터를 액세스 및 판독하도록 구성된 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 방법.
  23. 제20항에 있어서,
    판독된 프레임버퍼 데이터를 처리하는 것이,
    가상화 컴퓨터 서비스를 제공하는 특정 가상 머신의 프레임버퍼 데이터를 분석하고;
    분석을 기초로 프레임버퍼 데이터를 위한 콘텍스트를 결정하고;
    프레임버퍼 데이터를 위한 적절한 맥락성 정보를 관련지우고;
    프레임버퍼 데이터를 위한, 각각이 프레임버퍼 데이터의 적어도 일부 및 프레임버퍼 데이터의 부분을 위한 관련된 맥락성 정보를 포함하는, 다수의 이미지 데이터 패킷를 발생시키는 것;을 더 포함하는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 방법.
  24. 사용자를 위한 데스크탑, 적용에 대한 액세스를 제공하는 데스크탑, 및 사용자의 데이터를 정의하는, 컴퓨팅 프로파일에 대해 사용자 액세스를 제공하기 위한 방법으로,
    방법이,
    a) 클라이언트로부터 인터넷 연결을 통해 컴퓨팅 프로파일에 대한 연결을 요청하고;
    b) 요청된 연결에 응답하여 컴퓨팅 프로파일을 위한 가상 머신을 식별하고;
    c) 식별된 가상 머신을 위한 프레임버퍼 데이터를 식별하고;
    d) 프레임버퍼 데이터를 판독하고;
    e) 연결 요청이 이루어진 클라이언트의 특징을 기초로 프레임버퍼 데이터를, 이미지 데이터 패킷을 생산하는, 처리를 하고;
    f) 클라이언트에 대해, 클라이언트에서 처리되고 클라이언트의 디스플레이 상에 제공되는, 이미지 데이터 패킷을 전달하고;
    g) 클라이언트와 가상 머신 사이에서 백채널 통신을 교환하면서 세션 동안 (d) -(f)를 반복하는 것;을 갖추어 이루어진 것을 특징으로 하는 컴퓨팅 프로파일에 대해 사용자 액세스를 제공하기 위한 방법.
  25. 제24항에 있어서,
    각 이미지 데이터 패킷이 클라이언트에서 가상 머신 디스플레이의 이미지의 특정 부분을 정의 및 렌더링하도록 할당된 데이터를 포함하고, 이미지의 특정 부분이 적어도 하나의 픽셀에 의해 정의되는 것을 특징으로 하는 컴퓨팅 프로파일에 대해 사용자 액세스를 제공하기 위한 방법.
  26. 제24항에 있어서,
    프레임버퍼 데이터를 처리하는 것이,
    콘텍스트를 결정하도록 프레임버퍼 데이터를 분석하고;
    분석을 기초로 프레임버퍼 데이터에 대해 맥락성 정보를 관련지우고;
    하나 이상의 변환 기술을 이용해서 프레임버퍼 데이터를 위한, 클라이언트와 관련된 디스플레이 장치와 호환가능한, 이미지 데이터 패킷을 발생시키는 것;을 더 포함하는 것을 특징으로 하는 컴퓨팅 프로파일에 대해 사용자 액세스를 제공하기 위한 방법.
  27. 제24항에 있어서,
    클라이언트와 가상 머신 사이의 백채널 통신이 가상 머신 상에서 실행되는 하나 이상의 적용에 대한 데이터를 포함하는 것을 특징으로 하는 컴퓨팅 프로파일에 대해 사용자 액세스를 제공하기 위한 방법.
  28. 제24항에 있어서,
    클라이언트에서 이미지 데이터 패킷의 처리가,
    패키징 정보를 제거하고 클라이언트의 디스플레이의 특정 부분에 대해 데이터를 맵핑시키는 것을 더 포함하는 것을 특징으로 하는 컴퓨팅 프로파일에 대해 사용자 액세스를 제공하기 위한 방법.
  29. (a) VM의 세션에 대한 액세스를 얻고;
    (b) VM을 위한 프레임버퍼 데이터를 식별하고;
    (c) 프레임버퍼 데이터를 판독하고;
    (d) 이미지 데이터 패킷을 생산하도록 클라이언트의 특징으로 기초로 프레임버퍼 데이터를 처리하고;
    (e) 클라이언트에 대해, 클라이언트의 특징을 위해 생산된, 이미지 데이터 패킷을 전달하고;
    (f) 클라이언트와 가상 머신 사이에서 백채널 통신을 교환하면서 VM의 세션을 액세스할 때의 시간 동안 (c) -(e)를 반복하는 것;을 갖추어 이루어진 것을 특징으로 하는 가상 머신(VM)의 세션에 대한 액세스를 제공하기 위한 방법.
  30. 제29항에 있어서,
    각 이미지 데이터 패킷이 클라이언트에서 가상 머신 디스플레이의 이미지의 특정 부분을 정의 및 렌더링하도록 할당된 데이터를 포함하고, 이미지의 특정 부분이 적어도 하나의 픽셀에 의해 정의되는 것을 특징으로 하는 가상 머신(VM)의 세션에 대한 액세스를 제공하기 위한 방법.
  31. 제30항에 있어서,
    클라이언트의 특징이, 클라이언트의 장소, 연결에 대한 가상 서비스의 장소, 클라이언트의 형태, 디스플레이의 형태, 연결의 품질, 통신 연결 대역폭, 요청된 데이터의 형태, 해상도를 포함하는 클라이언트와 관련된 디스플레이의 구성, 비트 깊이, 리프레쉬 비율 중 어느 하나 이상을 포함하는 하나 이상의 연결 파라미터에 의해 정의되는 것을 특징으로 하는 가상 머신(VM)의 세션에 대한 액세스를 제공하기 위한 방법.
  32. 제30항에 있어서,
    세션에 대한 액세스를 얻는 것이, 하이퍼바이저 상에서 실행되는 VM 상에서 실행하는 이미지 프로세서 알고리즘과 서비스 브로커를 통하고, 서비스 브로커는 VM에 대해 클라이언트의 맵핑과 관련된 정보를 제공하고, 이미지 프로세서 알고리즘은 VM과 관련된 프레임버퍼 데이터를 액세스하도록 API를 제공하는 것을 특징으로 하는 가상 머신(VM)의 세션에 대한 액세스를 제공하기 위한 방법.
  33. 제32항에 있어서,
    이미지 프로세서 알고리즘이, 세션을 실행시키는 동일한 VM의 어느 하나 상 또는 세션을 실행시키는 VM과는 다른 VM 상에서 독립적으로 실행되는 것을 특징으로 하는 가상 머신(VM)의 세션에 대한 액세스를 제공하기 위한 방법.
  34. 제32항에 있어서,
    클라이언트에서의 이미지 데이터 패킷이 패키징 정보를 제거하고 클라이언트의 디스플레이의 특정 부분에 대해 이미지 데이터 패킷에서의 데이터를 맵핑하도록 처리되는 것을 특징으로 하는 가상 머신(VM)의 세션에 대한 액세스를 제공하기 위한 방법.
  35. (a) 하이퍼바이저 상에서 실행되도록 구성된 하나 이상의 가상 머신으로, 적어도 하나의 가상 머신이 이미지 프로세서 알고리즘을 실행하고, 이미지 프로세서 알고리즘이,
    (i) 특정 가상 머신에서 이용가능한 가상화 컴퓨터 서비스를 제어하기 위해 클라이언트로부터 연결 요청을 검출하고;
    (ii) 연결 요청을 질의하는 것에 의해 가상화 컴퓨터 서비스를 제공하는 특정 가상 머신를 식별하고;
    (iii) 하이퍼바이저를 통해 가상 메모리의 소정 위치로부터 특정 가상 머신의, 특정 가상 머신의 가상 머신 디스플레이와 관련된 이미지를 나타내는 그래픽 출력을 정의하는, 프레임버퍼 데이터를 액세스 및 판독하고;
    (iv) 프레임버퍼 데이터와 관련된 맥락성 정보를 포함하는 이미지 데이터 패킷으로 판독된 프레임버퍼 데이터를 처리하고;
    (v) 클라이언트와 관련된 디스플레이 장치 상에 표현하기 위해 클라이언트에 대해 특정 가상 머신의 이미지 데이터 패킷을 전송하기 위한;
    로직을 포함하고;
    이미지 데이터 패킷이 클라이언트를 위해 특정되고 가상 머신 디스플레이의 이미지를 표현하는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 시스템.
  36. 제35항에 있어서,
    a) 하나 이상의 가상 머신에 대해 클라이언트의 맵핑을 제공하고 연결 요청과 관련된 정보를 인증하기 위한 디렉토리 서비스와;
    b) 활동성의 영역의 그룹과 시간에 걸친 활동성의 영역의 그룹에 대한 소정 변화를 저장하는 시간-기반 저장 어레이 서비스; 및
    c) 프레임버퍼 데이터를 패키징하기 위한, 맥락성 압축을 제공하는데 이용되는, 압축/전송 기술을 제공하기 위한 압축 기술 서비스;를 더 포함하는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 시스템.
  37. a) 하이퍼바이저 상에서 실행되도록 구성된 하나 이상의 가상 머신을 구비하여 구성되고, 적어도 하나의 가상 머신이 다른 가상 머신과 함께 이미지 프로세서 알고리즘을 실행하며, 이미지 프로세서 알고리즘이,
    (i) (ia) 특정 가상 머신 상에서 이용가능한 가상화 컴퓨터 서비스를 제어하기 위해 클라이언트로부터, 클라이언트의 연결 요구를 정의하는 다수의 연결 파라미터를 식별하는, 연결 요청을 검출하고;
    (ib) 가상화 컴퓨터 서비스를 제공하는 특정 가상 머신을 식별하도록 연결 파라미터를 질의하고;
    (ic) 특정 가상 머신의 프레임버퍼 데이터를 직접적으로 액세스하도록 하이퍼바이저와 상호작용하고;
    (id) 특정 가상 머신의 프레임버퍼 데이터에서의 어떠한 변화를 포함하는 특정 가상 머신의 가상 머신 디스플레이의 이미지를 식별하고, 특정 가상 머신과 관련된 시간-기반 저장 어레이로 어떠한 변화를 포함하는 프레임버퍼 데이터를 처리하도록 특정 가상 머신의 프레임버퍼 데이터를 스캔하기 위해;
    구성된 스캔 엔진과;
    (ii) (iia) 프레임버퍼 데이터와 관련된 특징으로 기초로 어떠한 연속적인 영역을 결정하고 프레임버퍼 데이터와 관련된 콘텍스트를 결정하도록;
    구성된 콘텍스트 엔진; 및
    (iii) (iiia) 프레임버퍼 데이터를 분석하고;
    (iiib) 결정된 콘텍스트를 기초로 프레임버퍼 데이터와 관련된 맥락성 정보를 통합하도록 프레임버퍼 데이터를 처리하며;
    (iiic) 클라이언트와 관련된 디스플레이 장치 상에 제공하기 위해 클라이언트에 대해 특정 가상 머신의 관련 맥락성 정보를 포함하는 처리된 프레임버퍼 데이터를 전송하기 위해;
    구성된 로직 엔진을 포함하고,
    처리된 프레임버퍼 데이터가 클라이언트를 위해 특정되고 가상 머신 디스플레이의 이미지를 표현하는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 시스템.
  38. 제37항에 있어서,
    이미지 프로세서 알고리즘이, 프레임버퍼 데이터 내의 어떠한 활동성을 위한 검색에 대해 시간-기반 저장 어레이와 상호작용하고, 검색을 기초로 프레임버퍼 데이터 내의 활동성의 레벨과 활동성의 영역을 식별하며, 비-활동성의 영역을 무시하도록 구성된 검색 알고리즘을 구비하는 히트 엔진을 더 포함하는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 시스템.
  39. 제37항에 있어서,
    스캔 및 히트 엔진이 백채널을 통한 사용자 상호작용을 수신하도록 더 구성되고, 사용자 상호작용은 특정 가상 머신의 프레임버퍼 데이터 내의 가능한 변화의 영역을 정의하는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 시스템.
  40. 제39항에 있어서,
    디렉토리 서비스와 정책 및 인증 서비스를 더 포함하고, 디렉토리 서비스는 하나 이상의 가상 머신에 대해 다수의 클라이언트의 맵핑의 저장소이고, 정책 및 인증 서비스는 클라이언트로부터 연결 요청을 인증하기 위한 정책을 확인(asertain)하도록 구성되는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 시스템.
  41. 제40항에 있어서,
    이미지 프로세서 알고리즘이,
    연결 파라미터를 얻고 클라이언트와 관련된 연결의 진행 중인 품질을 결정하도록 클라이언트와 상호작용하고;
    클라이언트로부터 수신된 연결 파라미터를 인증하고 연결 요청을 다루기 위한 하나 이상의 정책을 결정하도록 정책 및 인증 서비스와 상호작용하고;
    연결의 진행 중인 품질과 관련된 최신(up-to-date)의 연결 파라미터를 제공하도록 로직 엔진과 상호작용하고;
    클라이언트에 대해 요청된 가상화 컴퓨터 서비스를 제공할 수 있는 특정 가상 머신을 식별하도록 디렉토리 서비스와 상호작용하고;
    특정 가상 머신을 위한 적절한 프레임버퍼 데이터에 대해 스캔 엔진을 향하도록 스캔 엔진과 상호작용하도록; 구성된 연결 엔진을 더 포함하는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 시스템.
  42. 제41항에 있어서,
    이미지 프로세서 알고리즘이, 요청에 응답하여 제공하기 위한 클라이언트에 대해 효과적 전송을 위해 최적으로 사이즈화된 이미지 데이터 패킷으로서 처리된 프레임버퍼 데이터를 전송하는 출력 엔진을 더 포함하고, 이미지 데이터 패킷의 크기가 연결 파라미터를 기초로 하는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 시스템.
  43. 제37항에 있어서,
    이미지 프로세서 알고리즘이 하이퍼바이저 상에서 실행되는 다수의 가상 머신의 하나 이상 상에서 독립적으로 실행가능하고, 이미지 프로세서 알고리즘이 하이퍼바이저 상에서 실행되는 다른 가상 머신의 대응하는 프레임버퍼 데이터를 액세스 및 판독하기 위해 이용되는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 시스템.
  44. 제37항에 있어서,
    이미지 프로세서 알고리즘이 하이퍼바이저 상에서 실행되는 가상 머신의 각 하나 상에서 독립적으로 실행가능하고, 각 가상 머신의 이미지 프로세서 알고리즘이 하이퍼바이저 상에서 실행되는 다른 가상 머신의 대응하는 프레임버퍼 데이터를 액세스 및 판독하기 위해 이용되는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 시스템.
  45. 제37항에 있어서,
    다수의 서비스 계층을 더 포함하고, 각 다수의 서비스 계층이 클라이언트에 의해 요청된 서비스의 특정 형태를 제공하고, 각 다수의 서비스 계층이 하나 이상의 가상 머신을 포함하며, 가상 머신 상에서 실행되는 이미지 프로세서 알고리즘이 각 다수의 서비스 계층에서의 가상 머신의 프레임버퍼 데이터를 액세스하도록 구성된 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 시스템.
  46. 제45항에 있어서,
    각 다수의 서비스 계층에서의 가상 머신의 적어도 하나가 이미지 프로세서 알고리즘을 독립적으로 실행하는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 시스템.
  47. 제37항에 있어서,
    클라이언트가 이미지 프로세서 알고리즘을 실행하는 가상 머신으로부터 수신된 이미지 데이터 패킷을 처리하도록 구성되고, 이미지 데이터 패킷의 처리가,
    이미지 데이터 패킷으로부터 패키징 정보를 제거하고;
    클라이언트의 디스플레이의 특정 부분에 대해 데이터를 맵핑하는 것;을 포함하는 것을 특징으로 하는 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하기 위한 시스템.
  48. 컴퓨터 판독가능 매체 상에 매립된 이미지 프로세서 알고리즘으로, 가상 센터 내의 가상 머신의 프로세서 상에서 실행될 때 이미지 프로세서 알고리즘이 네트워크를 거쳐 클라이언트에 대해 서비스를 제공하도록 구성되고, 이미지 프로세서 알고리즘이,
    서비스를 요청하는 이미지 프로세서 알고리즘을 실행하는 가상 머신에서 클라이언트로부터, 클라이언트의 연결 요구를 정의하는 다수의 연결 파라미터를 포함하는, 연결 요청을 수신하기 위한 프로그래밍 로직과;
    클라이언트로부터의 요청을 만족하는 서비스를 제공하는 특정 가상 머신을 식별하도록 연결 파라미터를 질의하기 위한 프로그래밍 로직과;
    특정 가상 머신과 관련된 하이퍼바이저를 통해 가상 메모리의 소정 위치로부터 특정 가상 머신을 위한, 가상 메모리의 소정 위치로부터 판독되고, 특정 가상 머신의 가상 머신 디스플레이와 관련된 이미지를 표현하는 그래픽 출력을 정의하는, 프레임버퍼 데이터를 액세스하기 위한 프로그래밍 로직과;
    다수의 연결 파라미터를 기초로 이미지 프로세서 알고리즘을 이용해서 다수의 이미지 데이터 패킷으로 판독된 프레임버퍼 데이터를 처리하기 위한 프로그래밍 명령; 및
    클라이언트와 관련된 디스플레이 장치 상에 제공하기 위해 클라이언트에 대해, 클라이언트를 위해 특정되고 가상 머신 디스플레이의 이미지를 표현하는, 이미지 데이터 패킷을 전송하기 위한 프로그래밍 로직을 구비하여 구성된 것을 특징으로 하는 이미지 프로세서 알고리즘.
  49. 제48항에 있어서,
    액세스된 프레임버퍼 데이터를 처리하기 위한 프로그래밍 로직이,
    콘텍스트를 결정하도록 식별된 가상 머신의 프레임버퍼 데이터를 분석하기 위한 프로그래밍 로직과;
    분석을 기초로 특정 가상 머신의 프레임버퍼 데이터에 대해 적절한 맥락성 정보를 관련지우기 위한 프로그래밍 로직을 더 포함하는 것을 특징으로 하는 이미지 프로세서 알고리즘.
  50. 제49항에 있어서,
    주기적으로 특정 가상 머신의 프레임버퍼 데이터를 스캐닝하기 위한 프로그래밍 로직과;
    특정 가상 머신을 위해 저장된 프레임버퍼 데이터에 대항하여 스캔된 프레임버퍼 데이터를 비교하는 것에 의해 변화의 영역을 결정하기 위한 프로그래밍 로직; 및
    변화의 영역의 저장이 변화의 영역과 관련된 맥락성 정보의 저장을 포함하는, 분석 및 전송을 위한 가상 머신과 관련된 시간-기반 저장 어레이에서의 변화의 영역을 저장하기 위한 프로그래밍 로직;을 더 포함하는 것을 특징으로 하는 이미지 프로세서 알고리즘.
  51. 제50항에 있어서,
    프레임버퍼 데이터를 스캐닝하기 위한 프로그래밍 로직이,
    특정 가상 머신의 프레임버퍼 데이터와 관련된, 특정 가상 머신의 프레임버퍼 데이터의 리프레쉬의 상태를 식별하는, 동기-신호를 질의하기 위한 프로그래밍 로직과;
    동기-신호의 질의를 기초로 특정 가상 머신의 프레임버퍼 데이터의 스캐닝을 수행하기 위한 프로그래밍 로직;을 더 포함하고,
    스캐닝이 가상 머신에서 프레임버퍼 데이터의 리프레쉬 주파수 또는 클라이언트와 관련된 연결 파라미터의 하나 이상에 의해 구동된 주파수에서 주기적으로 수행되는 것을 특징으로 하는 이미지 프로세서 알고리즘.
  52. 제51항에 있어서,
    특정 가상 머신을 위한 프레임버퍼 데이터의 리프레쉬 이전에 동기-신호를 설정하기 위한 프로그래밍 로직과;
    특정 가상 머신의 프레임버퍼 데이터의 리프레쉬의 완료에 따라 동기-신호를 재설정하기 위한 프로그래밍 로직;을 더 포함하는 것을 특징으로 하는 이미지 프로세서 알고리즘.
KR1020127016549A 2009-11-25 2010-11-24 라이트웨이트 클라이언트를 이용해서 네트워크를 거쳐 가상화 컴퓨팅 서비스와 인터페이스하기 위한 방법 KR101773638B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US26465409P 2009-11-25 2009-11-25
US61/264,654 2009-11-25
US12/784,468 US8392497B2 (en) 2009-11-25 2010-05-20 Systems and algorithm for interfacing with a virtualized computing service over a network using a lightweight client
US12/784,454 US8676949B2 (en) 2009-11-25 2010-05-20 Methods for interfacing with a virtualized computing service over a network using a lightweight client
US12/784,468 2010-05-20
US12/784,454 2010-05-20
PCT/US2010/058119 WO2011066472A1 (en) 2009-11-25 2010-11-24 Methods for interfacing with a virtualized computing service over a network using a lightweight client

Publications (2)

Publication Number Publication Date
KR20120106778A true KR20120106778A (ko) 2012-09-26
KR101773638B1 KR101773638B1 (ko) 2017-08-31

Family

ID=44063000

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127016549A KR101773638B1 (ko) 2009-11-25 2010-11-24 라이트웨이트 클라이언트를 이용해서 네트워크를 거쳐 가상화 컴퓨팅 서비스와 인터페이스하기 위한 방법

Country Status (6)

Country Link
US (5) US8676949B2 (ko)
EP (1) EP2504762A4 (ko)
JP (1) JP2013512512A (ko)
KR (1) KR101773638B1 (ko)
CN (1) CN102713848B (ko)
WO (1) WO2011066472A1 (ko)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140099185A (ko) * 2013-02-01 2014-08-11 삼성전자주식회사 그래픽 클라우드에서 멀티미디어 콘텐츠를 처리하는 방법 및 장치
KR20150086499A (ko) * 2012-11-16 2015-07-28 소니 컴퓨터 엔터테인먼트 아메리카 엘엘씨 원격으로 프로세싱되는 애플리케이션들의 스트리밍 비디오 프레임들 상의 컨텐츠의 클라우드 프로세싱 및 오버레잉을 위한 시스템들 및 방법들
KR20150144548A (ko) 2014-06-17 2015-12-28 주식회사 씨디에스 Usb 메모리 접근에 따른 클라우딩 시스템
KR20160067180A (ko) * 2013-10-11 2016-06-13 브이엠웨어, 인코포레이티드 가상 머신들을 관리하는 장치 및 방법
US9707485B2 (en) 2009-06-01 2017-07-18 Sony Interactive Entertainment America Llc Systems and methods for cloud processing and overlaying of content on streaming video frames of remotely processed applications
US10089133B2 (en) 2015-06-24 2018-10-02 Electronics And Telecommunications Research Institute Apparatus and method for virtual desktop service suitable for user terminal based on environmental parameter
KR102106155B1 (ko) * 2019-05-14 2020-04-29 아토리서치(주) 가상머신 토폴로지 상태 모니터링 방법 및 장치

Families Citing this family (166)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9727440B2 (en) * 2007-06-22 2017-08-08 Red Hat, Inc. Automatic simulation of virtual machine performance
US9678803B2 (en) 2007-06-22 2017-06-13 Red Hat, Inc. Migration of network entities to a cloud infrastructure
US9569330B2 (en) 2007-06-22 2017-02-14 Red Hat, Inc. Performing dependency analysis on nodes of a business application service group
US9354960B2 (en) 2010-12-27 2016-05-31 Red Hat, Inc. Assigning virtual machines to business application service groups based on ranking of the virtual machines
US9495152B2 (en) 2007-06-22 2016-11-15 Red Hat, Inc. Automatic baselining of business application service groups comprised of virtual machines
US8782637B2 (en) * 2007-11-03 2014-07-15 ATM Shafiqul Khalid Mini-cloud system for enabling user subscription to cloud service in residential environment
US8968087B1 (en) * 2009-06-01 2015-03-03 Sony Computer Entertainment America Llc Video game overlay
US8549093B2 (en) * 2008-09-23 2013-10-01 Strategic Technology Partners, LLC Updating a user session in a mach-derived system environment
US8506402B2 (en) * 2009-06-01 2013-08-13 Sony Computer Entertainment America Llc Game execution environments
US8676949B2 (en) * 2009-11-25 2014-03-18 Citrix Systems, Inc. Methods for interfacing with a virtualized computing service over a network using a lightweight client
US8233408B2 (en) * 2009-12-10 2012-07-31 Wei Lu Mobile cloud architecture based on open wireless architecture (OWA) platform
US8911295B2 (en) * 2010-02-12 2014-12-16 Comviva Technologies Limited Method and system for online mobile gaming
US8649595B2 (en) * 2010-03-09 2014-02-11 Dynamic Invention Llc Subpixel-based image down-sampling
US20110225513A1 (en) * 2010-03-09 2011-09-15 Avistar Communications Corporation Scalable high-performance interactive real-time media architectures for virtual desktop environments
US8712153B2 (en) * 2010-03-09 2014-04-29 Dynamic Invention Llc Subpixel-based image down-sampling
JP5241763B2 (ja) * 2010-03-24 2013-07-17 株式会社日立製作所 通信システムおよび通信システムの制御方法
CN102870392B (zh) * 2010-04-30 2016-07-13 交互数字专利控股公司 网络通信中的轻量协议和代理
EP2583225A4 (en) * 2010-06-21 2014-03-05 Hewlett Packard Development Co SYSTEM FOR TESTING AND CERTIFYING A VIRTUAL DEVICE ON A CLIENT COMPUTER SYSTEM
JP5609308B2 (ja) * 2010-06-24 2014-10-22 株式会社リコー 画像処理システム、画像処理装置、情報処理装置、及び画像処理方法
JP5320440B2 (ja) * 2010-06-29 2013-10-23 サムソン エスディーエス カンパニー リミテッド クライアントハイパーバイザー基盤の端末装置及びその動作方法
US8601129B2 (en) * 2010-06-30 2013-12-03 International Business Machines Corporation Hypervisor selection for hosting a virtual machine image
CN103038749B (zh) 2010-07-01 2017-09-15 纽戴纳公司 为了优化群集特定配置的使用而按进程类型在群集之间分割进程
US20120028712A1 (en) * 2010-07-30 2012-02-02 Britesmart Llc Distributed cloud gaming method and system where interactivity and resources are securely shared among multiple users and networks
US8918499B2 (en) * 2010-08-09 2014-12-23 International Business Machines Corporation Method and system for end-to-end quality of service in virtualized desktop systems
CN103140833A (zh) * 2010-10-13 2013-06-05 中兴通讯(美国)公司 用于多媒体多方对等操作(m2p2)的系统和方法
US10142218B2 (en) 2011-01-14 2018-11-27 International Business Machines Corporation Hypervisor routing between networks in a virtual networking environment
US20120182993A1 (en) * 2011-01-14 2012-07-19 International Business Machines Corporation Hypervisor application of service tags in a virtual networking environment
US8909761B2 (en) * 2011-02-08 2014-12-09 BlueStripe Software, Inc. Methods and computer program products for monitoring and reporting performance of network applications executing in operating-system-level virtualization containers
US20120233549A1 (en) * 2011-03-07 2012-09-13 Avaya Inc. Virtual desktop integration based on proximity and context
GB2502484B (en) * 2011-03-18 2020-04-08 Hewlett Packard Development Co Sharing internet capability of a mobile computing device with a client computing device using a virtual machine
US9130899B1 (en) 2011-04-27 2015-09-08 Cisco Technology, Inc. Integrated user interface for unified communications applications
US20120317184A1 (en) * 2011-06-07 2012-12-13 Syed Mohammad Amir Husain Zero Client Device With Integrated Global Position System Capability
US9191454B2 (en) * 2011-06-27 2015-11-17 Microsoft Technology Licensing, Llc Host enabled management channel
US8990292B2 (en) * 2011-07-05 2015-03-24 Cisco Technology, Inc. In-network middlebox compositor for distributed virtualized applications
US8745102B2 (en) * 2011-07-12 2014-06-03 PLAiR Media, Inc. Distributed storage method and system
US20130019179A1 (en) * 2011-07-14 2013-01-17 Digilink Software, Inc. Mobile application enhancements
US8924507B2 (en) * 2011-09-02 2014-12-30 Microsoft Corporation Cross-frame progressive spoiling support for reduced network bandwidth usage
CN102355501B (zh) * 2011-09-28 2017-06-13 华为技术有限公司 一种数据处理方法、接入审核设备及系统
US8776043B1 (en) 2011-09-29 2014-07-08 Amazon Technologies, Inc. Service image notifications
US9530156B2 (en) * 2011-09-29 2016-12-27 Amazon Technologies, Inc. Customizable uniform control user interface for hosted service images
US10147123B2 (en) 2011-09-29 2018-12-04 Amazon Technologies, Inc. Electronic marketplace for hosted service images
US9626700B1 (en) 2011-09-29 2017-04-18 Amazon Technologies, Inc. Aggregation of operational data for merchandizing of network accessible services
US20130093776A1 (en) * 2011-10-14 2013-04-18 Microsoft Corporation Delivering a Single End User Experience to a Client from Multiple Servers
US20130111404A1 (en) * 2011-11-02 2013-05-02 Microsoft Corporation User interface for saving documents using external storage services
US20130143657A1 (en) * 2011-11-14 2013-06-06 Amazon Technologies, Inc. Input Mapping Regions
US9348552B2 (en) * 2011-11-16 2016-05-24 Cisco Technology, Inc. Network appliance for transcoding or enriching virtual desktop infrastructure desktop images
US9679279B1 (en) 2012-02-27 2017-06-13 Amazon Technologies Inc Managing transfer of hosted service licenses
US9055139B1 (en) 2012-03-12 2015-06-09 Cisco Technology, Inc. Display protocol interception in the network for services and network-based multimedia support for VDI
US9345966B2 (en) 2012-03-13 2016-05-24 Sony Interactive Entertainment America Llc Sharing recorded gameplay to a social graph
US11406906B2 (en) * 2012-03-13 2022-08-09 Sony Interactive Entertainment LLC Network connected controller for direct to cloud gaming
US10913003B2 (en) * 2012-03-13 2021-02-09 Sony Interactive Entertainment LLC Mini-games accessed through a sharing interface
EP2642395B1 (de) * 2012-03-21 2018-12-19 ServiceTrace e.K. Verfahren und Vorrichtung zum Ausführen von Workflow-Skripten
US9397987B1 (en) 2012-03-23 2016-07-19 Amazon Technologies, Inc. Managing interaction with hosted services
US9258371B1 (en) 2012-03-23 2016-02-09 Amazon Technologies, Inc. Managing interaction with hosted services
US9043588B2 (en) * 2012-05-08 2015-05-26 Alcatel Lucent Method and apparatus for accelerating connections in a cloud network
US8676984B2 (en) * 2012-05-23 2014-03-18 International Business Machines Corporation Live directory of cloud tenants to enable inter-tenant interaction via cloud
US9710762B2 (en) * 2012-06-06 2017-07-18 Juniper Networks, Inc. Dynamic logging
CN102868910B (zh) * 2012-10-19 2015-04-08 上海大亚科技有限公司 基于云平台的视频点播系统及视频点播扩展控制的方法
US8862695B2 (en) * 2012-10-29 2014-10-14 Vmware, Inc. Performance enhancement in virtual desktop infrastructure (VDI)
JP6011247B2 (ja) * 2012-10-29 2016-10-19 ブラザー工業株式会社 画像処理システム,画像処理装置,および情報処理装置
US9015714B2 (en) * 2012-11-27 2015-04-21 Citrix Systems, Inc. Diagnostic virtual machine created to monitor cluster of hypervisors based on user requesting assistance from cluster administrator
US20140149559A1 (en) * 2012-11-29 2014-05-29 Inside Secure Virtual private network (vpn) system utilizing configuration message including vpn character configuration string
FR3000339A1 (fr) * 2012-12-20 2014-06-27 France Telecom Procede de traitement de requetes d'acces a des services de virtualisation informatique, passerelle de virtualisation et navigateur web
US8954546B2 (en) * 2013-01-25 2015-02-10 Concurix Corporation Tracing with a workload distributor
US8924941B2 (en) 2013-02-12 2014-12-30 Concurix Corporation Optimization analysis using similar frequencies
US8997063B2 (en) 2013-02-12 2015-03-31 Concurix Corporation Periodicity optimization in an automated tracing system
US20130283281A1 (en) 2013-02-12 2013-10-24 Concurix Corporation Deploying Trace Objectives using Cost Analyses
US9521188B1 (en) * 2013-03-07 2016-12-13 Amazon Technologies, Inc. Scheduled execution of instances
CN104052718B (zh) * 2013-03-14 2017-06-23 鸿富锦精密工业(深圳)有限公司 数据中心及其为客户端提供虚拟服务的方法
US9665474B2 (en) 2013-03-15 2017-05-30 Microsoft Technology Licensing, Llc Relationships derived from trace data
US9553787B1 (en) 2013-04-29 2017-01-24 Amazon Technologies, Inc. Monitoring hosted service usage
CN103414763A (zh) * 2013-07-24 2013-11-27 华为技术有限公司 控制管理设备的方法和相关设备
JP6048336B2 (ja) * 2013-07-25 2016-12-21 富士ゼロックス株式会社 情報処理システム、情報処理装置及びプログラム
JP6064822B2 (ja) * 2013-07-25 2017-01-25 富士ゼロックス株式会社 情報処理システム、情報処理装置及びプログラム
CA2920050C (en) * 2013-08-02 2019-04-02 Huawei Technologies Co., Ltd. Image display method and apparatus
US9292415B2 (en) 2013-09-04 2016-03-22 Microsoft Technology Licensing, Llc Module specific tracing in a shared module environment
CN105765534B (zh) * 2013-09-23 2020-10-09 Gopc有限公司 虚拟计算系统和方法
CN104516703B (zh) * 2013-09-30 2018-02-16 中国电信股份有限公司 在安卓终端上实现虚拟桌面屏幕分辨率自动适配的方法和系统
US9378391B2 (en) * 2013-10-11 2016-06-28 Centrify Corporation Method and apparatus for creating switchable desktops with separate authorizations
US9332046B2 (en) 2013-10-17 2016-05-03 Cisco Technology, Inc. Rate-adapted delivery of virtual desktop image elements by an edge server in a computer network environment
WO2015060831A1 (en) * 2013-10-22 2015-04-30 Citrix Systems Inc. Method and system for displaying graphics for a local virtual machine
US10127062B2 (en) 2013-10-22 2018-11-13 Citrix Systems, Inc. Displaying graphics for local virtual machine by allocating textual buffer
EP3066836B1 (en) * 2013-11-05 2021-09-01 UTC Fire & Security Americas Corporation, Inc. Drawing operation replay in memory
US9604139B2 (en) 2013-11-11 2017-03-28 Amazon Technologies, Inc. Service for generating graphics object data
US9582904B2 (en) 2013-11-11 2017-02-28 Amazon Technologies, Inc. Image composition based on remote object data
US9634942B2 (en) 2013-11-11 2017-04-25 Amazon Technologies, Inc. Adaptive scene complexity based on service quality
US9641592B2 (en) 2013-11-11 2017-05-02 Amazon Technologies, Inc. Location of actor resources
US9805479B2 (en) * 2013-11-11 2017-10-31 Amazon Technologies, Inc. Session idle optimization for streaming server
US9413830B2 (en) 2013-11-11 2016-08-09 Amazon Technologies, Inc. Application streaming service
EP3069241B1 (en) 2013-11-13 2018-08-15 Microsoft Technology Licensing, LLC Application execution path tracing with configurable origin definition
US9532103B2 (en) * 2013-12-16 2016-12-27 Vmware, Inc. Multi-user support for set top boxes and game consoles
CN103677964B (zh) * 2013-12-30 2017-02-15 杭州冰特科技有限公司 一种虚拟机控制系统
JP5878938B2 (ja) * 2014-01-29 2016-03-08 株式会社ソニー・コンピュータエンタテインメント 配信システム、配信方法、配信プログラム
EP3104560B1 (en) * 2014-02-06 2019-05-29 Nec Corporation Network system, network control method, and control device
WO2015117669A1 (en) * 2014-02-07 2015-08-13 Telefonaktiebolaget L M Ericsson (Publ) A technique for operating a system controller of a virtualized application cluster
WO2015140602A1 (en) * 2014-03-21 2015-09-24 Nokia Technologies Oy Method and apparatus for controlling smart objects with a collage user interface using normalized user interface descriptors
US9432286B2 (en) * 2014-03-27 2016-08-30 Telefonaktiebolaget L M Ericsson (Publ) Method and system for hitless upgrade of chassis in virtualized environment
KR102206351B1 (ko) * 2014-04-28 2021-01-22 삼성전자 주식회사 전자 장치 및 이의 작업 연계 방법
CN105224379B (zh) * 2014-05-26 2018-05-18 北京云巢动脉科技有限公司 一种基于虚拟机的多对一接入的图像处理方法
US20150355946A1 (en) * 2014-06-10 2015-12-10 Dan-Chyi Kang “Systems of System” and method for Virtualization and Cloud Computing System
KR102308782B1 (ko) 2014-08-19 2021-10-05 삼성전자주식회사 메모리 컨트롤러, 스토리지 디바이스, 서버 가상화 시스템 및 서버 가상화 시스템에서의 스토리지 디바이스 인식 방법
US10628186B2 (en) 2014-09-08 2020-04-21 Wirepath Home Systems, Llc Method for electronic device virtualization and management
CA2910341C (en) 2014-10-28 2022-07-26 Targus Group International, Inc. Power and data adapter, and related systems and methods
AU2015362706B2 (en) 2014-12-15 2020-05-21 Targus International Llc Power and data adapter
US20160198021A1 (en) * 2015-01-02 2016-07-07 Citrix Systems, Inc. Dynamic protocol switching
US10469313B2 (en) 2015-01-29 2019-11-05 Nec Corporation Data file registration management system, method, management apparatus, and recording medium
US20160234343A1 (en) 2015-02-11 2016-08-11 Dell Products L.P. Client side redirection
WO2016183544A1 (en) 2015-05-14 2016-11-17 Walleye Software, LLC System performance logging
US9558529B2 (en) 2015-05-22 2017-01-31 Dell Products, L.P. Rendering video data in an information handling system using a management controller
CN104915412B (zh) * 2015-06-05 2018-07-03 北京京东尚科信息技术有限公司 一种动态管理数据库连接的方法及系统
KR20160147449A (ko) * 2015-06-15 2016-12-23 한국전자통신연구원 적응형 가상 데스크탑 운영체제 서비스 제공장치 및 그 방법
US9996377B2 (en) 2015-06-30 2018-06-12 International Business Machines Corporation Virtual machine migration via a mobile device
CN106326002B (zh) * 2015-07-10 2020-10-20 阿里巴巴集团控股有限公司 资源调度方法、装置及设备
US9832791B2 (en) 2015-08-04 2017-11-28 Network Performance Research Group Llc Method and apparatus for use of simultaneous multiple channels in the dynamic frequency selection band in wireless networks
US10104665B2 (en) 2015-08-10 2018-10-16 Network Performance Research Group Llc Method and apparatus for providing dynamic frequency selection spectrum access in peer-to-peer wireless networks
US9439197B1 (en) 2015-08-10 2016-09-06 Planetary Network Technologies, Inc. Method and apparatus for directed adaptive control of dynamic channel selection in wireless networks
US9807625B2 (en) * 2015-08-10 2017-10-31 Network Performance Research Group Llc Method and apparatus for using time shifted analysis based on gathering non-encrypted information from packets
KR20170047747A (ko) * 2015-10-23 2017-05-08 한국전자통신연구원 화면 압축 서비스 방법 및 그 방법을 수행하는 가상 네트워크 장치
US20180309851A1 (en) * 2015-10-28 2018-10-25 Nec Corporation Server terminal device, client terminal device, thin client system, control method, and program recording medium
US10368247B2 (en) 2015-11-25 2019-07-30 Network Performance Research Group Llc Cloud DFS super master detector location systems and methods
CN106817386B (zh) * 2015-11-27 2020-03-10 华为技术有限公司 一种多会话下远程服务的数据处理方法和系统
US10324745B2 (en) * 2016-02-01 2019-06-18 Airwatch, Llc Thin client with managed profile-specific remote virtual machines
US10339205B2 (en) * 2016-02-22 2019-07-02 International Business Machines Corporation Efficient handling of bi-directional data
KR101742258B1 (ko) * 2016-02-29 2017-05-31 경희대학교 산학협력단 웹 기반 가상 데스크탑 프로토콜을 이용한 컨텐츠 제공 방법 및 장치
CN105786519B (zh) * 2016-03-17 2021-04-09 瑞芯微电子股份有限公司 安卓设备程序管理方法和安卓设备
EP3443500B1 (en) * 2016-05-16 2022-04-27 Nokia Technologies Oy Security in virtualized networks
US10152386B1 (en) 2016-07-29 2018-12-11 Nutanix, Inc. Efficient disaster rollback across heterogeneous storage systems
US11423144B2 (en) 2016-08-16 2022-08-23 British Telecommunications Public Limited Company Mitigating security attacks in virtualized computing environments
WO2018033350A1 (en) 2016-08-16 2018-02-22 British Telecommunications Public Limited Company Reconfigured virtual machine to mitigate attack
GB2553597A (en) * 2016-09-07 2018-03-14 Cisco Tech Inc Multimedia processing in IP networks
US10705566B2 (en) 2016-09-09 2020-07-07 Targus International Llc Systems, methods and devices for native and virtualized video in a hybrid docking station
US10785311B2 (en) 2016-11-08 2020-09-22 Pearson Education, Inc. Secure cloud-managed content delivery computer ecosystem
US10623460B2 (en) * 2016-11-18 2020-04-14 Google Llc Streaming application environment with remote device input synchronization
US10783046B2 (en) 2016-11-22 2020-09-22 Nutanix, Inc. Executing resource management operations in distributed computing systems
US10200249B1 (en) * 2016-12-09 2019-02-05 Amazon Technologies, Inc. Network traffic management for virtualized graphics devices
EP3355188B1 (en) 2017-01-31 2021-08-25 OpenSynergy GmbH Instrument display on a car dashboard by checking frames of a gui by a realtime os
US10360059B2 (en) * 2017-02-12 2019-07-23 Guardicore Ltd. Correlation of network connections and processes in a virtualized computing environment
US20180239628A1 (en) * 2017-02-22 2018-08-23 Nutanix, Inc. Hypervisor agnostic customization of virtual machines
US10460415B2 (en) * 2017-04-10 2019-10-29 Intel Corporation Contextual configuration adjuster for graphics
US11216563B1 (en) * 2017-05-19 2022-01-04 Amazon Technologies, Inc. Security assessment of virtual computing environment using logical volume image
US11231448B2 (en) 2017-07-20 2022-01-25 Targus International Llc Systems, methods and devices for remote power management and discovery
US10663498B2 (en) 2017-07-20 2020-05-26 Targus International Llc Systems, methods and devices for remote power management and discovery
US10241965B1 (en) 2017-08-24 2019-03-26 Deephaven Data Labs Llc Computer data distribution architecture connecting an update propagation graph through multiple remote query processors
US20190082051A1 (en) * 2017-09-13 2019-03-14 Teleperformance Se Dynamic computing environment allocation for contact center interaction
US11477304B2 (en) * 2018-01-30 2022-10-18 Hewlett-Packard Development Company, L.P. Conversion to an internet protocol stream
CN108494871B (zh) * 2018-04-08 2022-02-22 上海微穹信息科技有限公司 云端虚拟机及其图像识别方法、系统和虚拟机瘦客户端
CN110389812B (zh) * 2018-04-20 2023-05-12 伊姆西Ip控股有限责任公司 用于管理虚拟机的方法、设备和计算机可读存储介质
US10673939B2 (en) * 2018-05-04 2020-06-02 Citrix Systems, Inc. WebRTC API redirection with window monitoring/overlay detection
US10874941B2 (en) 2018-06-01 2020-12-29 At&T Intellectual Property I, L.P. Virtualized gaming emulation as a network service
US10666565B2 (en) * 2018-06-08 2020-05-26 Citrix Systems, Inc. Method to measure relative QOS gains and to reduce the variance in QOS for similar connections for during bandwidth contention
CN109062671A (zh) * 2018-08-15 2018-12-21 无锡江南计算技术研究所 一种轻量级的高性能互连网络软件虚拟化方法
US10643569B1 (en) * 2018-10-16 2020-05-05 Red Hat Israel, Ltd. Adjusting virtual machine GPU refresh rate to remote desktop stream frame rate
WO2020101223A1 (ko) * 2018-11-15 2020-05-22 전자부품연구원 서버리스 클라우드 컴퓨팅에서 에이피아이 제공 방법
GB2594173B (en) 2018-12-19 2023-10-04 Targus International Llc Display and docking apparatus for a portable electronic device
BR112021011796A2 (pt) * 2018-12-21 2021-08-31 Ntt Docomo, Inc. Terminal de usuário e método de radiocomunicação para um terminal de usuário
US11017334B2 (en) 2019-01-04 2021-05-25 Targus International Llc Workspace management system utilizing smart docking station for monitoring power consumption, occupancy, and usage displayed via heat maps
US11360534B2 (en) 2019-01-04 2022-06-14 Targus Internatonal Llc Smart workspace management system
US10653966B1 (en) * 2019-02-07 2020-05-19 Skill, Inc Controlling peer-tournament client operation with segmentation of clients
WO2020167216A1 (en) * 2019-02-14 2020-08-20 Telefonaktiebolaget Lm Ericsson (Publ) Methods and apparatus for transmitting capability information
US11526587B2 (en) * 2019-02-26 2022-12-13 One Identity LLC Privileged access management for applications
CN110062161B (zh) * 2019-04-10 2021-06-25 Oppo广东移动通信有限公司 图像处理器、图像处理方法、拍摄装置和电子设备
KR20220044965A (ko) 2019-08-22 2022-04-12 타거스 인터내셔널 엘엘씨 참가자 제어된 화상 회의를 위한 시스템들 및 방법들
AU2020346791A1 (en) 2019-09-09 2022-03-24 Targus International Llc Systems and methods for docking stations removably attachable to display apparatuses and docking stand assemblies
CN113419801B (zh) * 2021-06-16 2022-12-27 中移(杭州)信息技术有限公司 表单渲染方法、终端、装置和计算机可读存储介质
US11665541B2 (en) * 2021-06-23 2023-05-30 EMC IP Holding Company LLC 5G zero client monitor
CN117170877B (zh) * 2023-10-26 2024-02-23 西安羚控电子科技有限公司 无人机虚拟化任务管理装置与方法

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH087715B2 (ja) * 1990-11-15 1996-01-29 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理装置及びアクセス制御方法
US6343313B1 (en) * 1996-03-26 2002-01-29 Pixion, Inc. Computer conferencing system with real-time multipoint, multi-speed, multi-stream scalability
EP1228453A4 (en) 1999-10-22 2007-12-19 Activesky Inc AN OBJECT-ORIENTED VIDEO SYSTEM
US7050835B2 (en) 2001-12-12 2006-05-23 Universal Display Corporation Intelligent multi-media display communication system
US20040031052A1 (en) 2002-08-12 2004-02-12 Liberate Technologies Information platform
US7477205B1 (en) * 2002-11-05 2009-01-13 Nvidia Corporation Method and apparatus for displaying data from multiple frame buffers on one or more display devices
US7644407B2 (en) * 2004-03-05 2010-01-05 Intel Corporation Method, apparatus and system for seamlessly sharing a graphics device amongst virtual machines
US7747086B1 (en) 2005-07-28 2010-06-29 Teradici Corporation Methods and apparatus for encoding a shared drawing memory
US20060089992A1 (en) * 2004-10-26 2006-04-27 Blaho Bruce E Remote computing systems and methods for supporting multiple sessions
US8274518B2 (en) * 2004-12-30 2012-09-25 Microsoft Corporation Systems and methods for virtualizing graphics subsystems
US8200796B1 (en) * 2005-05-05 2012-06-12 Digital Display Innovations, Llc Graphics display system for multiple remote terminals
US7200576B2 (en) 2005-06-20 2007-04-03 Microsoft Corporation Secure online transactions using a captcha image as a watermark
US20070174429A1 (en) 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
US20100306773A1 (en) * 2006-11-06 2010-12-02 Lee Mark M Instant on Platform
US20080209223A1 (en) 2007-02-27 2008-08-28 Ebay Inc. Transactional visual challenge image for user verification
JP5010492B2 (ja) * 2008-01-31 2012-08-29 株式会社東芝 通信装置、方法及びプログラム
JP4810548B2 (ja) * 2008-02-07 2011-11-09 株式会社東芝 サーバ装置、更新画像検出方法およびプログラム
US7856440B2 (en) * 2008-02-29 2010-12-21 International Business Machines Corporation Method and system for separating content identifiers from content reconstitution information in virtual machine images
US9459928B2 (en) * 2008-08-22 2016-10-04 Hewlett Packard Enterprise Development Lp Remote graphics console and virtual media access to virtual machine guests
US8073990B1 (en) * 2008-09-23 2011-12-06 Teradici Corporation System and method for transferring updates from virtual frame buffers
US8224885B1 (en) * 2009-01-26 2012-07-17 Teradici Corporation Method and system for remote computing session management
US20100268762A1 (en) 2009-04-15 2010-10-21 Wyse Technology Inc. System and method for scrolling a remote application
US8441494B2 (en) * 2009-04-23 2013-05-14 Vmware, Inc. Method and system for copying a framebuffer for transmission to a remote display
US8392596B2 (en) * 2009-05-26 2013-03-05 Red Hat Israel, Ltd. Methods for detecting and handling video and video-like content in remote display system
US8473958B2 (en) * 2009-05-31 2013-06-25 Red Hat Israel, Ltd. Adjusting client display devices based on settings included in a notification from remote virtual machine host prior to connection establishment
US8676949B2 (en) * 2009-11-25 2014-03-18 Citrix Systems, Inc. Methods for interfacing with a virtualized computing service over a network using a lightweight client

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9707485B2 (en) 2009-06-01 2017-07-18 Sony Interactive Entertainment America Llc Systems and methods for cloud processing and overlaying of content on streaming video frames of remotely processed applications
KR20150086499A (ko) * 2012-11-16 2015-07-28 소니 컴퓨터 엔터테인먼트 아메리카 엘엘씨 원격으로 프로세싱되는 애플리케이션들의 스트리밍 비디오 프레임들 상의 컨텐츠의 클라우드 프로세싱 및 오버레잉을 위한 시스템들 및 방법들
KR20140099185A (ko) * 2013-02-01 2014-08-11 삼성전자주식회사 그래픽 클라우드에서 멀티미디어 콘텐츠를 처리하는 방법 및 장치
KR20160067180A (ko) * 2013-10-11 2016-06-13 브이엠웨어, 인코포레이티드 가상 머신들을 관리하는 장치 및 방법
KR20150144548A (ko) 2014-06-17 2015-12-28 주식회사 씨디에스 Usb 메모리 접근에 따른 클라우딩 시스템
US10089133B2 (en) 2015-06-24 2018-10-02 Electronics And Telecommunications Research Institute Apparatus and method for virtual desktop service suitable for user terminal based on environmental parameter
KR102106155B1 (ko) * 2019-05-14 2020-04-29 아토리서치(주) 가상머신 토폴로지 상태 모니터링 방법 및 장치

Also Published As

Publication number Publication date
US20150106814A1 (en) 2015-04-16
CN102713848B (zh) 2016-08-24
EP2504762A4 (en) 2014-06-04
US20110126110A1 (en) 2011-05-26
KR101773638B1 (ko) 2017-08-31
EP2504762A1 (en) 2012-10-03
US20110126198A1 (en) 2011-05-26
US8676949B2 (en) 2014-03-18
WO2011066472A1 (en) 2011-06-03
US9183025B2 (en) 2015-11-10
US20130268580A1 (en) 2013-10-10
US8918455B2 (en) 2014-12-23
JP2013512512A (ja) 2013-04-11
US8392497B2 (en) 2013-03-05
US20130346479A1 (en) 2013-12-26
US8918456B2 (en) 2014-12-23
CN102713848A (zh) 2012-10-03

Similar Documents

Publication Publication Date Title
KR101773638B1 (ko) 라이트웨이트 클라이언트를 이용해서 네트워크를 거쳐 가상화 컴퓨팅 서비스와 인터페이스하기 위한 방법
US10397627B2 (en) Desktop-cloud-based media control method and device
US20210168194A1 (en) App remote control method and related devices
US9591081B2 (en) Virtual desktop access using wireless devices
JP2010508734A (ja) リモートインターラクションに応答してビデオコンテンツを配信するためのアーキテクチャー
EP2954401B1 (en) Transmitting hardware-rendered graphical data
US20170272545A1 (en) Method and system for transmitting remote screen
US10834164B2 (en) Virtualizing audio and video devices using synchronous A/V streaming
US10042521B1 (en) Emulation of control resources for use with converted content pages
US11599381B2 (en) Processing files via edge computing device
EP1821490A1 (en) Method for transmitting graphical data to a thin client
KR20170088232A (ko) 웹기반 브이디아이의 랜더링 성능 향상을 제공하는 그래픽 처리시스템
US11763493B2 (en) Method and apparatus for tree-based point cloud compression (PCC) media stream using moving picture experts group (MPEG)-dynamic adaptive streaming over HTTP (DASH)
Rodríguez-Silva et al. Towards Virtualization of Rich Applications for Distribution under a SaaS Model.

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant