KR20140027741A - 응용 서비스 제공 시스템 및 방법, 응용 서비스를 위한 서버 장치 및 클라이언트 장치 - Google Patents

응용 서비스 제공 시스템 및 방법, 응용 서비스를 위한 서버 장치 및 클라이언트 장치 Download PDF

Info

Publication number
KR20140027741A
KR20140027741A KR1020120093703A KR20120093703A KR20140027741A KR 20140027741 A KR20140027741 A KR 20140027741A KR 1020120093703 A KR1020120093703 A KR 1020120093703A KR 20120093703 A KR20120093703 A KR 20120093703A KR 20140027741 A KR20140027741 A KR 20140027741A
Authority
KR
South Korea
Prior art keywords
command
virtual
rendering
rendering object
window
Prior art date
Application number
KR1020120093703A
Other languages
English (en)
Inventor
김원영
최원혁
장수민
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020120093703A priority Critical patent/KR20140027741A/ko
Priority to US13/900,674 priority patent/US20140059114A1/en
Publication of KR20140027741A publication Critical patent/KR20140027741A/ko

Links

Images

Classifications

    • 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/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • 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/131Protocols for games, networked simulations or virtual reality
    • 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]
    • 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

Abstract

본 발명에 따른 응용 서비스 제공 시스템은, 응용프로그램의 화면 출력을 위한 정보를 가상 렌더링 객체로 생성하고 상기 가상 렌더링 객체를 매개변수로 하는 명령을 클라이언트 장치로 전달하는 서버 장치; 및 상기 명령을 수신하고 상기 가상 렌더링 객체에 대응하는 실제 렌더링 객체를 생성하며, 상기 실제 렌더링 객체를 이용하여 상기 명령을 실행하는 클라이언트 장치를 포함하는 것을 특징으로 한다.

Description

응용 서비스 제공 시스템 및 방법, 응용 서비스를 위한 서버 장치 및 클라이언트 장치{Application service providing system and method, server apparatus and client apparatus for application service}
본 발명은 서버 기반의 컴퓨팅 환경에서 응용 서비스를 제공하는 기술에 관한 것으로, 보다 상세하게는 서버에서 응용프로그램을 실행하여 결과 화면을 클라이언트에 제공하되 서버에서 렌더링을 수행하지 않고 클라이언트에서 렌더링을 수행하기 위한 응용 서비스 제공 시스템 및 방법과, 응용 서비스를 위한 서버 장치 및 클라이언트 장치에 관한 것이다.
최근 중앙처리장치(CPU) 및 메모리 등의 하드웨어 제작 기술의 발전으로 인하여 저가의 고성능 컴퓨터가 급속도로 보급되고 있고, 데스크탑 컴퓨터의 소프트웨어들은 점점 더 화려한 사용자 인터페이스와 그래픽 집중적인 작업을 수용할 수 있도록 요구되고 있다. 또한 그래픽 장치(GPU) 기술은 2D/3D, 멀티미디어와 같은 기존의 그래픽 집중적인 작업에 적용될 뿐만 아니라 웹 브라우저 렌더링, 플래시, 윈도우 운영체제까지 확대되어 적용되고 있다.
한편, 서버 기반의 컴퓨팅 환경은 개인용 컴퓨터 기반의 컴퓨팅 환경에서 발생하는 데이터 보안, 컴퓨터의 구입/관리 비용 등의 문제를 해결하기 위한 방안이다. 서버 기반 컴퓨팅 환경을 지원하는 기술로는 Citrix의 XenDesktop, VMWare의 VDI 그리고 Microsoft의 RDP(Remote Desktop Protocol)을 기반한 터미널 서비스 등이 있다.
그리고 의학, 생물 정보학, 복잡한 구조의 3D 모델과 같은 보안상 중요한 데이터에 대해 서버 기반 컴퓨팅 기법을 사용하고 있다. 하지만 이러한 서버 기반 컴퓨팅은, 서버에서 소프트웨어를 실행하고 클라이언트 컴퓨터는 단순히 터미널 역할만을 수행함으로써 클라이언트 수가 늘어날수록 서버의 부하가 커지며, 서버에서 실행되는 결과 이미지를 클라이언트에 전송하는 방식을 사용함으로써 렌더링 등 고성능 그래픽 작업을 처리하는 경우에는 한계점을 가진다. 따라서 고사양 클라이언트 컴퓨터 자원을 낭비할 수 있고, 서버 부하에 따른 서비스 한계를 가질 수 있다. 그리고 이는 막대한 서버 구입 비용을 발생시키고, 느린 서비스 성능이 나타나는 문제점이 있었다.
본 발명이 이루고자 하는 기술적 과제는 서버에서 응용프로그램을 실행하여 결과 화면을 클라이언트에 제공하되 서버에서 렌더링을 수행하지 않고 클라이언트에서 렌더링을 수행하기 위한 응용 서비스 제공 시스템 및 방법을 제공하는 데 있다.
또한 본 발명이 이루고자 하는 기술적 과제는 서버에서 응용프로그램을 실행하되 서버에서 렌더링을 수행하지 않고 클라이언트에서 렌더링을 수행하기 위한 서버 장치 및 클라이언트 장치를 제공하는 데 있다.
일반적으로 응용프로그램의 실행 화면은 기본 윈도우 화면을 포함하여 2D 렌더링 화면과 3D 렌더링 화면을 복합적으로 포함하고 있다. 따라서 응용 서비스 제공 시스템은 3D 렌더링 뿐만 아니라 실행 화면의 기반이 되는 기본적인 윈도우의 렌더링을 포함하는 2D 렌더링을 기본적으로 지원해야 한다.
일반적으로 운영체제의 데스크탑 환경은 어떤 작업 시간 동안에 한 명의 사용자가 독점하여 사용하기 때문에, 서버의 데스크탑 환경은 동시에 둘 이상의 사용자가 다른 응용프로그램으로 작업할 수 있도록 설계되지 않았다. 한 서버에 둘 이상의 사용자가 접속하여 각자 응용프로그램을 실행하는 경우 한 사용자의 응용프로그램의 실행이 다른 사용자의 응용프로그램의 실행에 영향을 미치는 사이드 이펙트(side effect)가 발생한다. 예를 들어, 서버에서 전면 윈도우(foreground window)에서 실행되는 응용이 후면 윈도우(background window)에서 실행되는 응용 보다 높은 실행 우선 순위를 가진다든가, 한 응용의 윈도우 화면에 대한 focus gain/lost, draw/redraw, minimize/maximize, hide/restore 등의 작업이 같은 서버 상에서 실행되고 있는 다른 응용의 윈도우 화면에 영향을 미치게 된다. 따라서 응용 서비스 제공 시스템은 하나의 서버에서 다수의 사용자가 동시에 독립적으로 응용을 수행할 수 있도록 서버의 윈도우 관리 시스템을 가상화하는 등의 노력이 요구된다.
상기 기술적 과제를 해결하기 위하여 본 발명에 따른 응용 서비스 제공 시스템은, 응용프로그램의 화면 출력을 위한 관련 정보를 가상 렌더링 객체로 관리하고 상기 가상 렌더링 객체를 매개변수로 하는 렌더링 명령을 클라이언트 장치로 전달하는 서버 장치; 및 상기 명령을 수신하고 상기 가상 렌더링 객체에 대응하는 실제 렌더링 객체를 조회하며, 상기 실제 렌더링 객체를 이용하여 상기 명령을 실행하는 클라이언트 장치를 포함하는 것을 특징으로 한다.
여기서, 상기 명령은 2D 및 3D 렌더링 명령을 포함할 수 있다.
또한, 상기 명령은 윈도우 렌더링 명령을 포함할 수 있다.
상기 기술적 과제를 해결하기 위하여 본 발명에 따른 응용 서비스를 위한 서버 장치는, 응용프로그램의 렌더링을 위한 관련 정보를 가상 렌더링 객체로 관리하고, 상기 가상 렌더링 객체를 매개변수로 하는 렌더링 명령을 생성하는 가상 렌더링 객체 관리부; 및 상기 명령을 클라이언트 장치로 전송하는 데이터 송수신부를 포함하는 것을 특징으로 한다.
여기서, 상기 가상 렌더링 객체 관리부는 3D 및 2D 렌더링 명령 뿐만 아니라 윈도우 렌더링 명령과 관련된 가상 렌더링 객체를 관리함으로서 데스크탑 환경의 윈도우 관리 시스템과 독립적으로 상기 가상 윈도우 객체를 관리할 수 있다.
상기 기술적 과제를 해결하기 위하여 본 발명에 따른 응용 서비스를 위한 클라이언트 장치는, 상기 가상 렌더링 객체를 매개변수로 하는 응용프로그램의 렌더링 명령을 수신하는 데이터 송수신부; 및 상기 가상 렌더링 객체에 대응하는 실제 렌더링 객체를 관리하고, 상기 실제 렌더링 객체에 대하여 상기 명령을 실행하는 명령 처리부를 포함하는 것을 특징으로 한다.
상기 기술적 과제를 해결하기 위하여 본 발명에 따른 응용 서비스 제공 방법은, 서버에서 구동되는 응용프로그램이 그래픽 렌더링 관련 API를 호출하는 단계; 상기 그래픽 렌더링 관련 API에서 필요로 하는 렌더링 객체를 가상 렌더링 객체로 생성 및 관리하는 단계; 및 상기 가상 렌더링 객체를 매개변수로 하는 렌더링 명령을 클라이언트로 전송하는 단계를 포함하는 것을 특징으로 한다.
여기서, 상기 응용 서비스 제공 방법은, 상기 클라이언트에서 상기 명령을 수신하는 단계; 및 상기 가상 렌더링 객체에 대응하는 실제 렌더링 객체를 조회하여 상기 명령을 실행하는 단계를 포함한다.
또한, 상기 응용 서비스 제공 방법은, 상기 클라이언트에서 렌더링을 실행하는 과정에서 클라이언트가 아니라 서버에서 실제 렌더링 관련 명령을 수행해야 하는 콜백함수를 처리하는 단계를 포함한다. 상기 콜백 함수를 처리하기 위해서 상기 응용 서비스 제공 방법은, 클라이언트에서 가상 콜백함수를 호출하는 단계; 상기 가상 콜백함수에 대응하는 명령을 상기 서버로 전송하는 단계; 및 상기 서버에서 상기 가상 콜백함수에 대응하는 실제 콜백함수를 호출하여 명령을 실행하는 단계를 더 포함할 수 있다.
상술한 본 발명에 의하면 서버에서 그래픽 렌더링을 수행하지 않고 클라이언트에서 렌더링을 수행함으로써 하나의 서버의 물리적인 한계를 벗어나 빠른 성능으로 많은 수의 클라이언트에 그래픽 렌더링이 필요한 응용 서비스를 제공할 수 있다.
위의 문제점을 해결하기 위해 본 특허에서는 응용의 기본 윈도우 관리를 서버에서 직접 수행하지 않고 클라이언트의 윈도우 관리 시스템에서 수행되도록 가상화하고 있다. 즉, 서버에서 응용프로그램의 윈도우 관리 관련 정보를 가상 렌더링 객체로 관리하고 클라이언트에서 실질적으로 관리되도록 함으로서, SW서비스하는 서버의 윈도우 관리자의 한계를 벗어나 다수의 사용자가 동시에 다수의 응용을 독립적으로 실행할 수 있다.
도 1은 본 발명의 일 실시예에 따른 응용 서비스 제공 시스템의 블록도이다.
도 2는 본 발명의 일 실시예에 따른 응용 서비스 제공 시스템에서 서버 장치와 클라이언트 장치가 명령을 처리하는 방식의 일 예를 나타내는 개념도이다.
도 3은 본 발명의 일 실시예에 따른 응용 서비스 제공 방법의 흐름도이다.
도 4는 본 발명의 일 실시예에 따른 응용 서비스 제공 시스템에서 서버 장치와 클라이언트 장치가 명령을 처리하는 방식의 다른 예를 나타내는 개념도이다.
도 5는 도 4에 대응하는 응용 서비스 제공 방법 중 콜백함수를 처리하는 과정을 나타내는 흐름도이다.
이하에서는 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다. 이하 설명 및 첨부된 도면들에서 실질적으로 동일한 구성요소들은 각각 동일한 부호들로 나타냄으로써 중복 설명을 생략하기로 한다. 또한 본 발명을 설명함에 있어 관련된 공지기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그에 대한 상세한 설명은 생략하기로 한다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수도 있다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록 또는 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실시예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들 또는 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
본 발명의 일 실시예에 따르면, 서버에서 렌더링을 수행하지 않고 클라이언트에서 렌더링을 수행하기 위하여, 응용프로그램의 화면 출력을 위한 정보를 서버는 가상 렌더링 객체로 관리하고 클라이언트는 가상 렌더링 객체에 대응하는 실제 렌더링 객체로 관리한다. 또한 본 발명의 일 실시예에 따르면, 서버가 클라이언트로 렌더링 관련 명령을 전달할 때에, 서버가 관리하는 가상 렌더링 객체를 매개변수로 하는 명령을 클라이언트로 전달한다. 또한 본 발명의 일 실시예에 따르면, 클라이언트에서 렌더링 관련 명령을 처리하는 중에 서버에서의 처리가 필요한 경우, 클라이언트에서 가상 콜백 함수가 호출되고 클라이언트가 이 함수를 서버로 전달하면 서버가 그에 대응하는 실제 콜백 함수를 수행한다.
도 1은 본 발명의 일 실시예에 따른 응용 서비스 제공 시스템의 블록도를 나타낸다. 본 실시예에 따른 응용 서비스 제공 시스템은 클라이언트 장치(100)와 서버 장치(140)를 포함하여 이루어지고, 클라이언트 장치(100)와 서버 장치(140)는 유선 또는 무선 통신망을 통하여 서로 연결된다. 본 실시예에서 클라이언트 장치(100)는 편의상 하나인 것으로 도시되나, 서버 장치(140)와 다수의 클라이언트 장치(100)들이 유선 또는 무선 통신망을 통하여 연결될 수 있다.
본 발명의 실시예에서, 서버 장치(140)는 응용프로그램의 프로세스 실행을 담당하고, 클라이언트 장치(100)는 응용프로그램의 화면 출력을 위한 연산 중 적어도 일부(예컨대, 2D 또는 3D 렌더링) 및 실제 화면 출력을 담당한다. 이처럼 서버 장치(140)에서 동작하는 응용프로그램의 화면 출력을 위한 연산을 서버 장치(140)와 별도의 클라이언트 장치(100)가 수행하기 위해서는, 응용프로그램의 화면 출력과 관련된 다양한 정보가 서버 장치(140)와 클라이언트 장치(100) 양측에서 관리되어야 할 필요가 있다. 이러한 응용프로그램의 화면 출력을 위한 정보로는, 윈도우 정보, 버튼, 메뉴, 리스트 박스, 트리 콘트롤 등의 사용자 인터페이스 콘트롤 정보, 디바이스 컨텍스트 정보, OLE/COM 객체 정보, 비트맵 정보, 아이콘 정보, 메모리 영역에 대한 정보 등이 포함된다. 본 발명의 실시예에 의하면 이러한 정보들을 서버 장치(140)는 가상 렌더링 객체로 관리하고, 클라이언트 장치(100)는 서버 장치(140)가 관리하는 가상 렌더링 객체에 대응하는 실제 렌더링 객체로 관리한다. 그리고 서버 장치(140)가 응용프로그램을 실행할 때에는 서버 장치(140)가 관리하는 가상 렌더링 객체들을 API(application programming interface)의 입출력 매개변수(in-out parameter)로 사용하여 응용프로그램의 프로세스가 정상적으로 동작을 수행하도록 하고, 클라이언트 장치(100)는 서버(140)의 가상 렌더링 객체들에 대응하는 실제 렌더링 객체들을 API의 입출력 매개변수로 사용하여 2D 또는 3D 렌더링 등 화면 출력을 위한 연산을 실행하고 실제 화면 출력을 수행한다.
도 1을 참조하면, 서버 장치(140)는 적어도 하나의 응용프로그램(150), 응용프로그램 관리부(160), 가상 렌더링 객체 관리부(160), 데이터 송수신부(180)를 포함한다. 그리고 클라이언트 장치(100)는 디스플레이부(110), 명령 처리부(120), 데이터 송수신부(130)를 포함한다.
서버 장치(140)의 응용프로그램 관리부(160)는 응용프로그램(150)의 실행 및 종료를 관리하며, 클라이언트 장치(100)로부터의 응용프로그램 실행 요청 또는 응용프로그램 종료 요청에 따라 응용프로그램(150)을 실행시키거나 종료시킬 수 있다.
서버 장치(140)의 가상 렌더링 객체 관리부(170)는 응용프로그램(150)의 실행 중에 응용프로그램(150)의 화면 출력을 위한 정보를 가상 렌더링 객체로 관리한다. 예컨대 화면 출력을 위한 정보가 윈도우 정보에 해당하는 경우, 가상 렌더링 객체 관리부(170)는 가상 윈도우 객체를 생성하게 된다. 생성된 가상 렌더링 객체는 서버 장치(140)에 구비되는 메모리 상에 적재된다. 필요에 따라 가상 렌더링 객체 관리부(170)는 기 생성된 가상 렌더링 객체를 메모리에서 조회할 수도 있다. 또한 가상 렌더링 객체 관리부(170)는 클라이언트 장치(100)에 보내기 위한 명령으로서 상기 생성 또는 조회된 가상 렌더링 객체를 매개변수로 하는 명령을 생성한다. 이러한 명령에는 2D 렌더링 명령과 3D 렌더링 명령, 윈도우 렌더링 명령을 포함한다.
서버 장치(140)의 데이터 송수신부(180)는 가상 렌더링 객체 관리부(170)가 생성 또는 조회한 가상 렌더링 객체를 매개변수로 하는 명령을 클라이언트 장치(100)로 전달한다.
클라이언트 장치(100)의 데이터 송수신부(130)는 서버 장치(140)로부터 가상 렌더링 객체를 매개변수로 하는 명령을 수신한다.
클라이언트 장치(100)의 명령 처리부(120)는 서버 장치(140)로부터 수신된 명령에 포함된 가상 렌더링 객체에 대응하는 실제 렌더링 객체를 조회하고 실제 렌더링 객체에 대하여 해당 명령을 실행한다. 예컨대 가상 렌더링 객체가 가상 윈도우 객체에 해당하는 경우, 명령 처리부(120)는 가상 윈도우 객체에 대응하는 실제 윈도우 객체를 조회하게 된다. 실제 렌더링 객체는 클라이언트 장치(100)에 구비되는 메모리 상에 적재되어 있다. 또한 명령 처리부(120)는 서버 장치(140)로부터 수신된 명령이 렌더링 명령에 해당하는 경우 실제 렌더링 객체에 대한 렌더링 작업을 수행한다. 렌더링 명령에 의해 새로운 실제 렌더링 객체가 생성된 경우 명령 처리부(120)은 실제 렌더링 객체에 대한 가상 렌더링 객체를 생성하고 가상 렌더링 객체와 실제 렌더링 객체의 대응 관계를 기록한다.
클라이언트 장치(100)의 디스플레이부(110)는 명령 처리부(120)의 처리 결과를 화면을 통하여 표시한다. 따라서 클라이언트 장치(100)의 디스플레이부(110)를 통하여 서버 장치(140)의 응용프로그램(150)의 실행 화면이 출력된다.
도시하지는 않았으나 클라이언트 장치(100)는 사용자 입력을 받는 사용자 입력 수단(예컨대, 키보드 또는 마우스)을 더 포함할 수 있다. 사용자 입력 수단을 통한 사용자 명령이 클라이언트 장치(100)에 입력되면 해당 명령은 데이터 송수신부(130)를 통하여 서버 장치(140)로 전달된다. 경우에 따라 클라이언트 장치(100)가 서버 장치(140)로부터 수신한 명령을 처리하는 중에 서버 장치(140)에서 처리되어야 하는 작업이 발생하는 경우가 있는데, 이러한 경우 역시 해당 명령이 데이터 송수신부(130)를 통하여 서버 장치(140)로 전달된다.
본 발명의 실시 예에서, 서버 장치(140)와 클라이언트 장치(100)가 주고받는 명령의 기본 단위는 API가 된다. 예컨대 렌더링 명령은 그래픽 관련 API에 대응된다. 전술한 바와 같이, 특정 명령이 서버 장치(140)에서 클라이언트 장치(100)로 전달되어 처리되거나, 혹은 클라이언트 장치(100)에서 서버 장치(140)로 전달되어 처리되며, 필요한 경우 처리 결과가 반환된다. 서버 장치(140)와 클라이언트 장치(100)가 주고받는 명령은 가능한 한도에서 하나의 메시지 형태로 전달될 수 있다.
또한, 서버 장치(140)와 클라이언트 장치(100)에서 관리되는 가상 렌더링 객체와 실제 렌더링 객체는 모두 실제로 메모리 상에 존재하는 객체이기 때문에, 가상 렌더링 객체와 실제 렌더링 객체를 매핑할 때에 객체의 실제 값을 매핑하는 경우 객체의 검색에 오버헤드가 발생할 수 있다. 따라서 본 발명의 실시 예에서는 이러한 문제점을 해소하고 객체 간의 효과적인 매핑을 위해 객체들을 서버 장치(140)와 클라이언트 장치(100) 간에 송수신이 가능한 코드로 변환하고, 이러한 코드를 통해 상대방의 객체를 쉽게 검색하도록 한다.
도 2는 전술한 응용 서비스 제공 시스템에서 서버 장치(140)와 클라이언트 장치(100)가 명령을 처리하는 방식의 일 예를 나타내는 개념도이고, 도 3은 도 2에 대응하는 응용 서비스 제공 방법의 흐름도이다.
도 2를 참조하면, 본 실시예에서 처리되는 명령은 렌더링 명령으로서, 이것은 그래픽 API인 XXX API에 대응된다. 응용 서비스를 위해 원래의 운영체제 시스템에서 제공하는 XXX API에 대응하는 XXX API가 서버 장치(140)에 구비되고, XXX API를 처리하기 위한 XXX API 핸들러(handler)가 클라이언트 장치(100)에 구비된다.
도 3을 참조하면, 310단계 내지 355단계는 서버 장치(140)에서 처리되는 단계들에 해당하고, 410단계 내지 465단계는 클라이언트 장치(100)에서 처리되는 단계들에 해당한다.
응용프로그램(150)은 그 실행 중에 필요에 따라 또는 클라이언트 장치(100)로부터의 사용자 명령에 응답하여 XXX API를 호출한다(310단계).
가상 렌더링 객체 관리부(170)는, XXX API의 입력 매개변수에 가상 렌더링 객체가 포함되는 경우(315단계), 가상 렌더링 객체를 조회하고 가상 렌더링 객체를 포함하는 명령 메시지 부분을 작성한다(320단계). 예컨대 XXX API가 윈도우를 이동시키는 API라면, 가상 렌더링 객체 관리부(170)는 해당 가상 윈도우 객체를 메모리에서 조회하고 가상 윈도우 객체를 포함하는 명령 메시지 부분을 작성한다. 그리고 가상 렌더링 객체 관리부(170)는 전체 명령 메시지를 작성한다(325단계). XXX API의 입력 매개변수에 가상 렌더링 객체가 포함되지 않는 경우(315단계), 가상 렌더링 객체 관리부(170)는 320단계를 거치지 않고 명령 메시지를 작성한다(325단계).
가상 렌더링 객체 관리부(170)는 명령 메시지를 데이터 송수신부(180)로 전달하고, 데이터 송수신부(180)는 명령 메시지를 클라이언트 장치(100)로 전송한다(330단계).
클라이언트 장치(100)의 데이터 송수신부(130)는 서버 장치(140)로부터의 명령 메시지를 수신하고, 명령 처리부(120)는 수신된 명령 메시지를 해석한다(410단계).
명령 처리부(120)는 XXX API를 처리하기 위한 XXX API 핸들러를 검색하고, XXX API를 호출한다(415단계). 그리고 명령 처리부(120)는, 명령 메시지에 가상 렌더링 객체가 포함된 경우(420단계), 가상 렌더링 객체에 대응하는 실제 렌더링 객체를 조회한다(425단계). 예컨대 수신된 명령이 윈도우 이동 명령인 경우, 가상 윈도우 객체에 대응하는 실제 윈도우 객체는 이미 생성되어 있는 것이므로, 명령 처리부(120)는 가상 윈도우 객체에 대응하는 실제 윈도우 객체를 메모리에서 조회한다. 그리고 명령 처리부(120)는 XXX API 핸들러를 이용하여 XXX API를 호출하고 실제 렌더링 객체에 대하여 명령을 실행한다(430단계). 명령 메시지에 가상 렌더링 객체가 포함되지 않은 경우(420단계), 명령 처리부(120)는 425단계를 거치지 않고 XXX API 핸들러를 이용하여 XXX API를 호출하고 명령을 실행한다(430단계). 예컨대 수신된 명령이 윈도우 생성 명령인 경우, 명령 처리부(120)는 실제 윈도우 객체를 생성하고 윈도우를 디스플레이부(110)를 통하여 표시한다. 예컨대 수신된 명령이 윈도우 이동 명령인 경우 명령 처리부(120)는 디스플레이부(110)에 표시되어 있는 해당 윈도우를 이동시키고 해당 윈도우에 대한 실제 윈도우 객체의 위치값을 변화시킨다.
명령 처리부(120)는, XXX API의 출력 매개변수에 실제 렌더링 객체가 포함되는 경우(435단계), 실제 렌더링 객체에 대응하는 가상 렌더링 객체를 조회한다(440단계). 실제 렌더링 객체에 대응하는 가상 렌더링 객체가 존재하는 경우(445단계), 명령 처리부(120)는 그 가상 렌더링 객체를 포함하는 결과 메시지 부분을 작성한다(455단계). 실제 렌더링 객체에 대응하는 가상 렌더링 객체가 존재하지 않는 경우(445단계), 즉 XXX API의 실행으로 인해 새로운 렌더링 객체가 생성된 경우, 명령 처리부(120)는 실제 렌더링 객체에 대응하는 가상 렌더링 객체를 생성하고 가상 렌더링 객체를 실제 렌더링 객체와 매핑하여 등록한다. 그리고 명령 처리부(120)는 생성된 가상 렌더링 객체를 포함하는 결과 메시지 부분을 작성한다(455단계). 그 다음 명령 처리부(120)는 전체 결과 메시지를 작성한다(460단계).
XXX API의 출력 매개변수에 실제 렌더링 객체가 포함되지 않는 경우 (435단계), 명령 처리부(120)는 440단계 내지 455단계를 거치지 않고 결과 메시지를 작성한다(460단계).
명령 처리부(120)는 결과 메시지를 데이터 송수신부(130)로 전달하고, 데이터 송수신부(130)는 결과 메시지를 결과 메시지를 서버 장치(140)로 전송한다(465단계). 다만 이러한 반환(return)은 명령에 따라 그 실행 결과를 서버 장치(140)에 반환할 필요가 있는 경우에 수행되며, 그렇지 않은 경우 생략될 수 있다.
서버 장치(140)의 데이터 송수신부(180)는 클라이언트 장치(100)로부터의 결과 메시지를 수신하고, 가상 렌더링 객체 관리부(170)는 수신된 결과 메시지를 해석한다(335단계). 그리고 가상 렌더링 객체 관리부(170)는 결과 메시지에 포함된 가상 렌더링 객체를 조회한다(340단계). 결과 메시지에 포함된 가상 렌더링 객체 중에서 서버 장치(140)에 등록되지 않은 새로운 가상 렌더링 객체가 존재하는 경우(345단계), 가상 렌더링 객체 관리부(170)는 그 새로운 가상 렌더링 객체를 서버 장치(140)에 등록한다(350단계). 그리고 가상 렌더링 객체 관리부(170)는 XXX API의 실행 결과를 응용프로그램(150)에게 반환한다(355단계).
도 4는 전술한 응용 서비스 제공 시스템에서 서버 장치(140)와 클라이언트 장치(100)가 명령을 처리하는 방식의 다른 예를 나타내는 개념도이다. 도 4는 렌더링 명령에 대응하는 그래픽 관련 API가 콜백함수(callback function)를 포함하는 경우의 처리 방식을 나타낸다. 주지되다시피 콜백함수는 어떤 이벤트가 발생하면 이를 처리하는 함수로서, 응용프로그램 개발자에 의해 작성되어 있다. 일반적으로 콜백함수는 서버에 등록되어 있기 때문에 클라이언트에서 바로 처리될 수 없으며, 클라이언트에서 발생하더라도 서버로 보내져서 처리된다. 다만 콜백함수가 클라이언트에서 처리하는 이벤트로 등록되어 있는 경우라면 콜백함수는 클라이언트에서 처리될 수 있다.
그래픽 관련 API인 AAA API를 처리하는 중에 특정 이벤트가 발생하여 콜백함수 RealCallBackA()가 처리되어야 하는 응용이 있다고 가정한다. 도 4를 참조하면, 응용 서비스를 위해 원래의 운영체제 시스템에서 제공하는 AAA API에 대응하는 AAA API와 AAA API에 포함된 콜백함수 RealCallBackA()가 서버 장치(140)에 구비된다. 이에 대응하여 클라이언트 장치(100)는 AAA API를 처리하기 위한 AAA API 핸들러와 콜백함수 RealCallBackA()에 대응하는 가상 콜백함수 VirtualCallBackA()를 구비한다. 한편, 서버 장치(140)에는 VirtualCallBackA()를 처리하기 위한 핸들러인 VirtualCallBackA_Handler()가 구비된다.
도 5는 도 4에 대응하는 응용 서비스 제공 방법 중 콜백함수를 처리하는 과정을 나타내는 흐름도이다. 도 5를 참조하면, 510단계 내지 540단계는 클라이언트 장치(100)에서 처리되는 단계들에 해당하고, 610단계 내지 650단계는 서버 장치(140)에서 처리되는 단계들에 해당한다.
AAA API의 실행 중에 특정 이벤트가 발생하면(510단계), 클라이언트 장치(140)는 VirtualCallBackA()를 호출한다(520단계).
그리고 클라이언트 장치(140)는 명령 메시지를 작성한다(530단계). 명령 메시지 작성 과정은 도 3의 315단계 내지 325단계와 동일한 과정을 포함할 수 있다.
클라이언트 장치(140)는 명령 메시지를 서버 장치(140)로 전송한다(540단계).
서버 장치(140)는 클라이언트 장치(100)로부터의 명령 메시지를 수신하고, 이를 해석한다(610단계).
명령 메시지의 해석에 따라 서버 장치(140)는 VirtualCallBackA()를 처리하기 위한 VirtualCallBackA_Handler()를 호출한다(620단계).
그리고 서버 장치(140)는 VirtualCallBackA_Handler()를 이용하여 RealCallBackA()를 호출하고 명령을 실행한다(620단계). RealCallBackA() 호출 및 명령 실행 과정은 도 3의 420단계 내지 430단계와 동일한 과정을 포함할 수 있다.
명령 실행 결과, 서버 장치(140)는 결과 메시지를 작성한다(630단계). 결과 메시지 작성 과정은 도 3의 435단계 내지 460단계와 동일한 과정을 포함할 수 있다.
서버 장치(140)는 결과 메시지를 클라이언트 장치(100)로 전송한다(465단계). 다만 이러한 반환(return)은 콜백함수에 따라 그 실행결과를 클라이언트 장치(100)에 반환할 필요가 있는 경우에 수행되며, 그렇지 않은 경우 생략될 수 있다.
클라이언트 장치(100)나 서버 장치(140)에서 일반 함수나 콜백 함수를 처리하는 도중에 새로운 콜백 함수나 함수 호출이 발생할 수 있다. 이 경우 새로운 콜백 함수나 함수 호출을 도 5와 도 3에 따라 먼저 처리하게 된다. 즉, 모든 함수 호출은 중첩되어 처리된다.
상술한 본 발명의 실시예에 의하면, 3D 렌더링을 수행하는 등 그래픽 장치(GPU)를 많이 사용하는 응용프로그램을 제공하는 경우, 클라이언트의 그래픽 장치를 사용하여 렌더링을 수행하므로 통상적인 서버 기반 컴퓨팅 기법에 비하여 빠른 성능으로 많은 수의 클라이언트에 응용 서비스를 제공할 수 있다. 또한 2D 렌더링과 3D 렌더링을 모두 클라이언트에서 처리함으로써 2D 그래픽과 3D 그래픽의 자연스러운 동기화가 달성된다.
또한, 응용프로그램의 실행 화면이 갱신될 때마다 실행 화면 이미지를 클라이언트에 전송하는 방식과 달리 이미지보다 적은 용량을 가지는 렌더링 명령을 클라이언트에 전송하기 때문에, 클라이언트의 그래픽 장치를 최대한 이용하고 서버의 부하를 경감시켜 보다 많은 수의 클라이언트에 개선된 성능의 서비스를 제공할 수 있다.
또한, 서버에서 윈도우 시스템과 별도로 가상 윈도우 객체를 생성하고 관리함으로써, 응용프로그램의 윈도우를 데스크탑 환경의 윈도우 관리자에 종속되지 않고 독립적으로 관리할 수 있고, 따라서 윈도우 작업 시에 발생하는 윈도우 상호 간의 영향을 최소화하여 동일한 서버의 동일한 데스크탑 환경에서 둘 이상의 사용자가 동시에 다수의 응용프로그램을 원활하게 실행할 수 있다.
한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (18)

  1. 응용프로그램의 화면 출력을 위한 정보를 가상 렌더링 객체로 생성하고 상기 가상 렌더링 객체를 매개변수로 하는 명령을 클라이언트 장치로 전달하는 서버 장치; 및
    상기 명령을 수신하고 상기 가상 렌더링 객체에 대응하는 실제 렌더링 객체를 생성하며, 상기 실제 렌더링 객체를 이용하여 상기 명령을 실행하는 클라이언트 장치를 포함하는 것을 특징으로 하는 응용 서비스 제공 시스템.
  2. 제1항에 있어서,
    상기 명령은 렌더링 명령을 포함하는 것을 특징으로 하는 응용 서비스 제공 시스템.
  3. 제1항에 있어서,
    상기 화면 출력을 위한 정보는 윈도우 정보를 포함하는 것을 특징으로 하는 응용 서비스 제공 시스템.
  4. 제3항에 있어서,
    상기 가상 렌더링 객체는 가상 윈도우 객체를 포함하는 것을 특징으로 하는 응용 서비스 제공 시스템.
  5. 제4항에 있어서,
    상기 서버 장치는 데스크탑 환경의 윈도우 관리자에 대하여 독립적으로 상기 가상 윈도우 객체를 관리하는 것을 특징으로 하는 응용 서비스 제공 시스템.
  6. 응용프로그램의 화면 출력을 위한 정보를 가상 렌더링 객체로 생성하고, 상기 가상 렌더링 객체를 매개변수로 하는 명령을 생성하는 가상 렌더링 객체 관리부; 및
    상기 명령을 클라이언트 장치로 전송하는 데이터 송수신부를 포함하는 것을 특징으로 하는 응용 서비스를 위한 서버 장치.
  7. 제6항에 있어서,
    상기 명령은 렌더링 명령을 포함하는 것을 특징으로 하는 응용 서비스를 위한 서버 장치.
  8. 제6항에 있어서,
    상기 화면 출력을 위한 정보는 윈도우 정보를 포함하는 것을 특징으로 하는 응용 서비스를 위한 서버 장치.
  9. 제8항에 있어서,
    상기 가상 렌더링 객체는 가상 윈도우 객체를 포함하는 것을 특징으로 하는 응용 서비스를 위한 서버 장치.
  10. 응용프로그램의 화면 출력을 위한 정보를 가상 윈도우 객체로 생성하고, 상기 가상 윈도우 객체를 매개변수로 하는 명령을 생성하는 가상 렌더링 객체 관리부; 및
    상기 명령을 클라이언트 장치로 전송하는 데이터 송수신부를 포함하고,
    상기 가상 렌더링 객체 관리부는 데스크탑 환경의 윈도우 관리자에 대하여 독립적으로 상기 가상 윈도우 객체를 관리하는 것을 특징으로 하는 응용 서비스를 위한 서버 장치.
  11. 응용프로그램의 화면 출력을 위한 정보가 가상 렌더링 객체로 생성되어, 상기 가상 렌더링 객체를 매개변수로 하는 명령을 수신하는 데이터 송수신부; 및
    상기 가상 렌더링 객체에 대응하는 실제 렌더링 객체를 생성하고, 상기 실제 렌더링 객체에 대하여 상기 명령을 실행하는 명령 처리부를 포함하는 것을 특징으로 하는 응용 서비스를 위한 클라이언트 장치.
  12. 제11항에 있어서,
    상기 명령은 렌더링 명령을 포함하는 것을 특징으로 하는 응용 서비스를 위한 클라이언트 장치.
  13. 제11항에 있어서,
    상기 화면 출력을 위한 정보는 윈도우 정보를 포함하는 것을 특징으로 하는 응용 서비스를 위한 클라이언트 장치.
  14. 제13항에 있어서,
    상기 가상 렌더링 객체는 가상 윈도우 객체를 포함하는 것을 특징으로 하는 응용 서비스를 위한 클라이언트 장치.
  15. 서버에 구비되는 응용프로그램이 그래픽 관련 API를 호출하는 단계;
    상기 그래픽 관련 API에서 필요로 하는 객체를 가상 렌더링 객체로 생성하는 단계; 및
    상기 생성된 가상 렌더링 객체를 매개변수로 하는 명령을 클라이언트로 전송하는 단계를 포함하는 것을 특징으로 하는 응용 서비스 제공 방법.
  16. 제15항에 있어서,
    상기 가상 렌더링 객체는 가상 윈도우 객체를 포함하는 것을 특징으로 하는 응용 서비스제공 방법.
  17. 제15항에 있어서,
    상기 클라이언트에서 상기 명령을 수신하는 단계; 및
    상기 가상 렌더링 객체에 대응하는 실제 렌더링 객체를 생성하여 상기 명령을 실행하는 단계를 더 포함하는 것을 특징으로 하는 응용 서비스 제공 방법.
  18. 제17항에 있어서,
    상기 명령을 실행하는 과정에서 가상 콜백함수를 호출하는 단계;
    상기 가상 콜백함수에 대응하는 명령을 상기 서버로 전송하는 단계; 및
    상기 서버에서 상기 가상 콜백함수에 대응하는 실제 콜백함수를 호출하여 명령을 실행하는 단계를 더 포함하는 것을 특징으로 하는 응용 서비스 제공 방법.
KR1020120093703A 2012-08-27 2012-08-27 응용 서비스 제공 시스템 및 방법, 응용 서비스를 위한 서버 장치 및 클라이언트 장치 KR20140027741A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120093703A KR20140027741A (ko) 2012-08-27 2012-08-27 응용 서비스 제공 시스템 및 방법, 응용 서비스를 위한 서버 장치 및 클라이언트 장치
US13/900,674 US20140059114A1 (en) 2012-08-27 2013-05-23 Application service providing system and method and server apparatus and client apparatus for application service

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120093703A KR20140027741A (ko) 2012-08-27 2012-08-27 응용 서비스 제공 시스템 및 방법, 응용 서비스를 위한 서버 장치 및 클라이언트 장치

Publications (1)

Publication Number Publication Date
KR20140027741A true KR20140027741A (ko) 2014-03-07

Family

ID=50148996

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120093703A KR20140027741A (ko) 2012-08-27 2012-08-27 응용 서비스 제공 시스템 및 방법, 응용 서비스를 위한 서버 장치 및 클라이언트 장치

Country Status (2)

Country Link
US (1) US20140059114A1 (ko)
KR (1) KR20140027741A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170103224A (ko) * 2016-03-03 2017-09-13 한국전자통신연구원 영상 표시를 위한 클라이언트 장치, 서버 장치 및 영상 표시 방법
US11314835B2 (en) * 2019-02-04 2022-04-26 Cloudflare, Inc. Web browser remoting across a network using draw commands
US11675930B2 (en) 2019-02-04 2023-06-13 Cloudflare, Inc. Remoting application across a network using draw commands with an isolator application

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6808419B2 (ja) * 2016-09-26 2021-01-06 キヤノン株式会社 画像処理システム及びその制御方法
EP3693850A4 (en) * 2017-10-23 2020-10-21 Huawei Technologies Co., Ltd. GRAPHIC PROCESSING PROCESS AND ASSOCIATED DEVICE AND DEVICE
US11150920B2 (en) * 2018-05-25 2021-10-19 Vmware, Inc. 3D API redirection for virtual desktop infrastructure
US11429450B2 (en) * 2019-04-25 2022-08-30 Vmware, Inc. Aggregated virtualized compute accelerators for assignment of compute kernels

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007536634A (ja) * 2004-05-04 2007-12-13 フィッシャー−ローズマウント・システムズ・インコーポレーテッド プロセス制御システムのためのサービス指向型アーキテクチャ
US8253732B2 (en) * 2008-01-03 2012-08-28 International Business Machines Corporation Method and system for remote visualization client acceleration
US8701029B2 (en) * 2009-06-24 2014-04-15 Red Hat Israel, Ltd. Presenting a modal dialog box using an invisible panel underneath
US9311169B2 (en) * 2012-05-02 2016-04-12 Nvidia Corporation Server based graphics processing techniques

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170103224A (ko) * 2016-03-03 2017-09-13 한국전자통신연구원 영상 표시를 위한 클라이언트 장치, 서버 장치 및 영상 표시 방법
US11314835B2 (en) * 2019-02-04 2022-04-26 Cloudflare, Inc. Web browser remoting across a network using draw commands
US11675930B2 (en) 2019-02-04 2023-06-13 Cloudflare, Inc. Remoting application across a network using draw commands with an isolator application
US11687610B2 (en) 2019-02-04 2023-06-27 Cloudflare, Inc. Application remoting across a network using draw commands
US11741179B2 (en) 2019-02-04 2023-08-29 Cloudflare, Inc. Web browser remoting across a network using draw commands
US11880422B2 (en) 2019-02-04 2024-01-23 Cloudflare, Inc. Theft prevention for sensitive information

Also Published As

Publication number Publication date
US20140059114A1 (en) 2014-02-27

Similar Documents

Publication Publication Date Title
US11494010B2 (en) Touch support for remoted applications
US11164280B2 (en) Graphics layer processing in a multiple operating systems framework
EP2875425B1 (en) Providing access to a remote application via a web client
KR101740327B1 (ko) 소프트웨어 가상화를 이용하여 소프트웨어 서비스를 제공하기 위한 장치, 시스템 및 그 방법
US10417026B2 (en) Binary editing of applications executed by virtual machines
US20160378554A1 (en) Parallel and Distributed Computing Using Multiple Virtual Machines
EP2888662B1 (en) Specialized virtual machine to virtualize hardware resource for guest virtual machines
KR20140027741A (ko) 응용 서비스 제공 시스템 및 방법, 응용 서비스를 위한 서버 장치 및 클라이언트 장치
US20210224100A1 (en) Virtual machine migration using multiple, synchronized streams of state data
WO2012045073A2 (en) Integrated handset browser settings
JP2014135013A (ja) 画像転送方法、サーバ機器及びプログラム
JP2012079084A (ja) リモートデスクトップシステムおよび業務アプリケーション移行システム
US9058239B2 (en) Hypervisor subpartition as concurrent upgrade
CN108255547B (zh) 一种应用程序控制方法及装置
US9575773B2 (en) Monitoring multiple remote desktops on a wireless device
CN114860401B (zh) 异构云桌面调度系统、方法、服务系统、装置及介质
KR101430729B1 (ko) 소프트웨어 지원 서버 및 그 방법
KR101316677B1 (ko) 사용자 인터페이스 가상화에 의한 어플리케이션 서비스 시스템 및 방법
CN113986466A (zh) 一种面向云计算的gpu虚拟化系统和方法
CN114416270A (zh) 页面显示方法、装置、设备和介质
US11243650B2 (en) Accessing window of remote desktop application
US20140059538A1 (en) Virtual machine state tracking using object based storage
US11748123B2 (en) Transforming a remote desktop into a remote application
KR102419972B1 (ko) 영상 표시를 위한 클라이언트 장치, 서버 장치 및 영상 표시 방법
WO2015085035A1 (en) Systems and methods for sharing image data

Legal Events

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