KR101694295B1 - 소프트웨어 분할 실행을 위한 스레드 관리 장치 및 방법 - Google Patents

소프트웨어 분할 실행을 위한 스레드 관리 장치 및 방법 Download PDF

Info

Publication number
KR101694295B1
KR101694295B1 KR1020120138409A KR20120138409A KR101694295B1 KR 101694295 B1 KR101694295 B1 KR 101694295B1 KR 1020120138409 A KR1020120138409 A KR 1020120138409A KR 20120138409 A KR20120138409 A KR 20120138409A KR 101694295 B1 KR101694295 B1 KR 101694295B1
Authority
KR
South Korea
Prior art keywords
client
function
server
thread
management apparatus
Prior art date
Application number
KR1020120138409A
Other languages
English (en)
Other versions
KR20140070200A (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 한국전자통신연구원
Priority to KR1020120138409A priority Critical patent/KR101694295B1/ko
Priority to US14/047,457 priority patent/US20140156736A1/en
Publication of KR20140070200A publication Critical patent/KR20140070200A/ko
Application granted granted Critical
Publication of KR101694295B1 publication Critical patent/KR101694295B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Debugging And Monitoring (AREA)

Abstract

서버에서 소프트웨어를 실행한 실행 결과를 클라이언트로 제공하고, 클라이언트에서 수신한 실행 결과를 이용하여 그래픽 랜더링을 수행하도록 한 소프트웨어 분할 실행을 위한 스레드 관리 장치 및 방법이 제시된다. 제시된 소프트웨어 분할 실행을 위한 스레드 관리 방법은 서버측 스레드 관리 장치에서 실행된 소프트웨어 중에서 그래픽 작업 관련 함수 및 사운드 작업 관련 함수 중에 적어도 하나의 함수를 검출하여 스레드를 통해 클라이언트측 스레드 관리 장치에게로 전송하고, 전송한 함수를 전송받는 클라이언트측 스레드 관리 장치에서 스레드를 통해 전송된 함수를 수신하여 처리한다.

Description

소프트웨어 분할 실행을 위한 스레드 관리 장치 및 방법{APPARATUS AND METHOD FOR MANAGING THREADS FOR SOFTWARE OFFLOADING COMPUTING}
본 발명은 소프트웨어 분할 실행을 위한 스레드 관리 장치 및 방법에 관한 것으로, 더욱 상세하게는 서버 기반 소프트웨어 서비스에서 서버에서 소프트웨어를 실행한 결과를 클라이언트로 제공하고, 클라이언트에서 소프트웨어 실행 결과 화면을 렌더링하는 과정에서 스레드를 관리하는 소프트웨어 분할 실행을 위한 스레드 관리 장치 및 방법에 대한 것이다.
최근 CPU 및 메모리 등의 하드웨어 제작 기술의 발전으로 인해 저가의 고성능 개인용 컴퓨터(이하, PC)가 급속도로 보급되고 있으며, 현재 PC의 컴퓨팅 능력은 초기의 슈퍼컴퓨터 수준으로 향상되었다.
개인용 컴퓨터의 성능을 향상되면서, 개인용 컴퓨터에서 사용되는 소프트웨어들도 점점 더 화려한 사용자 인터페이스와 그래픽 집중적인 작업을 수용하도록 요구하고 있다.
또한, 그래픽 하드웨어 기술은 2D/3D, 멀티미디어와 같은 기존의 그래픽 집중적인 작업에 적용될 뿐만 아니라 웹 브라우저 렌더링, 플래시, 윈도우 운영체제까지 확대 적용되고 있다.
PC 기반의 컴퓨팅 환경에서 발생하는 데이터 보안, PC의 관리 비용 등의 문제를 해결하기 위해 서버 기반 소프트웨어 서비스(즉, 서버 기반의 컴퓨팅 환경)가 적용되고 있다. 서버 기반 소프트웨어 서비스를 지원하는 기술로는 Citrix의 XenDesktop, VMWare의 VDI 그리고 Microsoft의 RDP(Remote Desktop Protocol)을 기반한 터미널 서비스 등이 있다. 이와 관련된 선행 특허의 일례로, 한국공개특허 제10-2010-0062800호(명칭: 원격 쉐이딩 기반의 3D스트리밍 장치 및 방법, 이하, 선행기술)에서는 3D 및 가상현실 콘텐츠를 서비스하기 위해 3D 장면 및 관련 데이터를 서버로부터 원격지에 있는 클라이언트에 전송하고, 이를 사용자의 클라이언트에서 표현하는 기술을 언급하고 있습니다. 이때, 선행기술에서는 3D 및 가상현실 콘텐츠를 서비스하기 위해 3D가속이 필요한 버텍스 쉐이더 및 픽셀 쉐이더를 서버에서 수행하고, 이를 통해 생성된 3D 장면 및 관련 데이터를 사용자의 클라이언트로 전송하여, 사용자의 클라이언트에서 2D 래스터라이저를 통해 3D 스트리밍을 구현합니다.
이처럼, 종래의 서버 기반 소프트웨어 서비스에서는 서버에서 소프트웨어를 실행하고, 클라이언트 PC는 단순히 터미널 역할만을 수행하기 때문에, 클라이언트 수가 늘어날수록 서버의 부하가 커지는 문제점이 있다.
또한, 종래의 서버 기반 소프트웨어 서비스에서는 서버에서 실행되는 결과 이미지를 클라이언트에 전송하는 방식을 사용함으로써, 3D 렌더링과 같은 고성능 그래픽 작업을 처리하는데 한계점을 가진다. 따라서, 종래의 서버 기반 소프트웨어 서비스는 고사양 클라이언트 PC의 자원 낭비, 서버 부하에 따른 서비스 한계, 막대한 서버 구입 비용, 느린 서비스 성능 등의 문제점이 있다.
또한, 종래의 서버 기반 소프트웨어 서비스에서는 운영체제(OS)에 종속적인 세션 관리 기술이나 데스크 탑 서비스에서는 가상 머신을 통하여 하나의 서버에서 다수의 사용자를 지원한다. 이는, 서버 기반 소프트웨어 서비스를 제공하는 서버의 OS 종속성이나, 가상 머신의 부하로 인하여 서버의 도입 비용 및 관리의 제약 사항이 발생하는 문제점이 있다.
본 발명은 상기한 종래의 문제점을 해결하기 위해 제안된 것으로, 서버에서 소프트웨어를 실행한 실행 결과를 클라이언트로 제공하고, 클라이언트에서 수신한 실행 결과를 이용하여 그래픽 랜더링을 수행하도록 한 소프트웨어 분할 실행을 위한 스레드 관리 장치 및 방법을 제공하는 것을 목적으로 한다. 즉, 본 발명은 서버기반 소프트웨어 서비스의 분할 실행 기술에서 서버에서 소프트웨어의 실행 결과를 클라이언트로 제공하되, 서버에서 렌더링하지 않고 클라이언트에서 결과 화면을 렌더링하도록 한 소프트웨어 분할 실행을 위한 스레드 관리 장치 및 방법을 제공하는 것을 목적으로 한다.
또한, 본 발명은 3D 렌더링과 같은 그래픽 집중적인 작업들은 클라이언트에서 실행하고, 데이터 집중적인 작업들은 서버에서 처리하는 소프트웨어 분할 실행 방법을 통하여 서버에 집중되는 부하를 줄이고, 클라이언트에서 처리 및 관리되는 사용자 데이터에 대한 보안을 제공하도록 한 소프트웨어 분할 실행을 위한 스레드 관리 장치 및 방법을 제공하는 것을 목적으로 한다.
특히, 본 발명은 클라이언트에서 결과 화면을 렌더링하기 위해서는 서버에서 클라이언트로 분할실행 작업을 전송하고 결과값을 다시 받아야 하는데, 이때 네트워크 전송 때문에 생기는 지연을 최소화하고 스레드들의 동시 실행에 의해 발생할 수 있는 문제를 최소화하기 위해 서버와 클라이언트 사이의 스레드 관리를 제공하도록 한 소프트웨어 분할 실행을 위한 스레드 관리 장치 및 방법을 제공하는 것을 목적으로 한다.
상기한 목적을 달성하기 위하여 본 발명의 실시예에 따른 소프트웨어 분할 실행을 위한 스레드 관리 장치의 서버측 스레드 관리 장치는, 분할 실행되는 소프트웨어를 실행하고, 실행된 소프트웨어 중에서 그래픽 처리 및 사운드 처리 중에 적어도 하나의 함수를 처리하는 하나 이상의 스레드들을 생성하여 관리하는 서버 실행부; 소프트웨어 중에서 그래픽 작업 관련 함수 및 사운드 작업 관련 함수 중에 적어도 하나의 함수를 추출하는 서버 장치관리부; 및 서버 장치관리부에서 추출한 함수를 서버 실행부에서 생성된 스레드를 통해 클라이언트측 스레드 관리 장치로 전송하는 서버 연결관리부를 포함한다.
서버 실행부는, 실행된 소프트웨어 중에서 데이터 중심 처리에 해당하는 함수들을 처리하는 데이터 저장 스레드 및 데이터 연산 스레드를 생성한다.
서버 실행부는, 서버 장치관리부에서 추출한 그래픽 작업 관련 함수 및 사운드 작업 관련 함수 중에 적어도 하나의 함수를 처리하는 하나 이상의 스레드를 생성하고, 생성한 하나 이상의 스레드에 대응하는 스레드 생성을 클라이언트측 스레드 관리 장치에게로 요청하고, 클라이언트측 스레드 관리 장치로부터 수신되는 클라이언트 입력을 처리하는 복수의 스레드를 생성한다.
서버 장치관리부는, 실행된 소프트웨어 중에서 그래픽 작업 관련 함수를 추출하여 서버 연결관리부에게로 전송하는 그래픽 작업 추출모듈; 실행된 소프트웨어 중에서 사운드 작업 관련 함수를 추출하여 서버 연결관리부에게로 전송하는 사운드 작업 추출모듈; 및 서버 연결관리부로부터 전송받은 클라이언트 입력을 처리하는 클라이언트 입력 처리 모듈을 포함한다.
서버 연결관리부는, 서버 장치관리부로부터 전송받은 그래픽 작업 관련 함수를 서버 실행부에서 생성된 스레드를 통해 클라이언트측 스레드 관리 장치로 전송하는 그래픽 작업 송신 모듈; 서버 장치관리부로부터 전송받은 사운드 작업 관련 함수를 서버 실행부에서 생성된 스레드를 통해 클라이언트측 스레드 관리 장치로 전송하는 사운드 작업 송신 모듈; 및 서버 실행부에서 생성된 스레드를 통해 클라이언트측 스레드 관리 장치로부터 클라이언트 입력을 전송받아 서버 장치관리부로 전송하는 클라이언트 입력 수신모듈을 포함한다.
상기한 목적을 달성하기 위하여 본 발명의 실시예에 따른 소프트웨어 분할 실행을 위한 스레드 관리 장치의 클라이언트측 스레드 관리 장치는, 서버측 스레드 관리 장치에게로 소프트웨어 실행을 요청하고, 서버측 스레드 관리 장치의 요청에 따라 서버측 스레드 관리 장치에서 실행된 하나 이상의 스레드들에 대응되는 하나 이상의 스레드들을 생성하여 관리하는 클라이언트 실행부; 생성된 스레드들을 통해 서버측 스레드 관리 장치로부터 그래픽 작업 관련 함수 및 사운드 작업 관련 함수 중에 적어도 하나의 함수를 수신하는 클라이언트 연결관리부; 및 클라이언트 연결관리부로부터 전송되는 함수를 클라이언트 실행부에서 생성된 스레드들을 통해 처리하는 클라이언트 장치관리부를 포함한다.
클라이언트 실행부는, 클라이언트 입력을 처리하는 스레드를 생성하고, 서버측 스레드 관리 장치에게로 생성한 스레드에 대응되는 하나 이상의 스레드 생성을 요청한다.
클라이언트 장치 관리부는 클라이언트 입력을 입력받아 클라이언트 연결관리부로 전송하고, 클라이언트 연결관리부는 전송되는 클라이언트 입력을 생성된 스레드를 통해 서버측 스레드 관리 장치로 전송한다.
클라이언트 연결관리부는, 클라이언트 실행부에서 생성된 스레드를 통해 서버측 스레드 관리 장치로부터 전송받은 그래픽 작업 관련 함수를 클라이언트 장치관리부에게로 전송하는 그래픽 작업 수신모듈; 클라이언트 실행부에서 생성된 스레드를 통해 서버측 스레드 관리 장치로부터 전송받은 사운드 작업 관련 함수를 클라이언트 장치관리부에게로 전송하는 사운드 작업 수신모듈; 및 클라이언트 장치관리부로부터 전송받은 클라이언트 입력을 생성된 스레드를 통해 서버측 스레드 관리 장치에게로 전송하는 클라이언트 입력 송신모듈을 포함한다.
클라이언트 장치관리부는, 클라이언트 연결관리부로부터 수신한 그래픽 작업 관련 함수를 처리하는 그래픽 작업 처리모듈; 클라이언트 연결관리부로부터 수신한 사운드 작업 관련 함수를 처리하는 사운드 작업 처리모듈; 및 클라이언트 입력을 추출하여 클라이언트 연결관리부로 전송하는 클라이언트 입력 추출모듈을 포함한다.
상기한 목적을 달성하기 위하여 본 발명의 실시예에 따른 소프트웨어 분할 실행을 위한 스레드 관리 방법은, 서버측 스레드 관리 장치에 의해, 클라이언트측 스레드 관리 장치로부터의 소프트웨어 실행 요청을 수신하면 소프트웨어를 실행하는 단계; 서버측 스레드 관리 장치에 의해, 스레드를 통해 실행하는 단계에서 실행된 소프트웨어 중에서 그래픽 작업 관련 함수 및 사운드 작업 관련 함수 중에 적어도 하나의 함수를 검출하여 클라이언트측 스레드 관리 장치에게로 전송하는 단계; 및 전송한 함수를 전송받는 클라이언트측 스레드 관리 장치에 의해, 스레드를 통해 전송하는 단계에서 전송된 함수를 수신하여 처리하는 단계를 포함한다.
함수를 검출하여 전송하는 단계는, 서버측 스레드 관리 장치에 의해, 실행된 소프트웨어 중에서 그래픽 작업 관련 함수 및 사운드 작업 관련 함수 중에 적어도 하나의 함수를 처리하는 하나 이상의 스레드를 생성하여 실행하는 단계; 서버측 스레드 관리 장치에 의해, 실행된 스레드에 대응하는 스레드의 생성 요청을 클라이언트측 스레드 관리 장치에게로 요청하는 단계; 서버측 스레드 관리 장치에 의해, 실행된 소프트웨어로부터 그래픽 작업 관련 함수 및 사운드 작업 관련 함수 중에 적어도 하나의 함수를 추출하는 단계; 서버측 스레드 관리 장치에 의해, 추출하는 단계에서 추출한 함수를 저장하는 단계; 및 서버측 스레드 관리 장치에 의해, 저장하는 단계에서 저장된 함수를 검출하여 처리하는 단계를 포함한다.
저장하는 단계에서는, 서버측 스레드 관리 장치에 의해, 추출한 함수가 보이드 함수이면 동기/비동기 버퍼에 저장한다.
처리하는 단계는, 서버측 스레드 관리 장치에 의해, 함수들이 저장된 동기/비동기 버퍼가 풀 상태이면 동기/비동기 버퍼에 저장된 함수들을 검출하는 단계; 및 서버측 스레드 관리 장치에 의해, 검출하는 단계에서 검출한 함수들을 클라이언트측 스레드 관리 장치로 전송하는 단계를 포함한다.
처리하는 단계는, 서버측 스레드 관리 장치에 의해, 추출한 함수가 보이드 함수가 아니면 추출한 함수 및 동기/비동기 버퍼에 저장된 함수들을 클라이언트측 스레드 관리 장치로 전송하는 단계를 포함한다.
처리하는 단계는, 서버측 스레드 관리 장치에 의해, 전송된 함수들의 처리 결과를 클라이언트측 스레드 관리 장치로부터 수신하는 단계를 더 포함한다.
함수를 수신하여 처리하는 단계는, 클라이언트측 스레드 관리 장치에 의해, 서버측 스레드 관리 장치로부터 스레드 생성 요청을 수신하면 수신 전용 스레드 및 함수 처리 스레드를 생성하여 실행하는 단계; 클라이언트측 스레드 관리 장치에 의해, 수신 전용 스레드를 통해 함수가 수신되면 비동기 버퍼에 수신한 함수를 저장하는 단계; 및 클라이언트측 스레드 관리 장치에 의해, 함수 처리 스레드를 통해 수신되는 함수를 처리하는 단계를 포함한다.
함수 처리 스레드를 통해 수신되는 함수를 처리하는 단계는, 클라이언트측 스레드 관리 장치에 의해, 함수 처리 스레드를 통해 수신되는 함수가 다음 실행 대상 함수인지 판단하는 단계; 클라이언트측 스레드 관리 장치에 의해, 판단하는 단계에서 다음 실행 대상으로 판단하면 수신되는 함수를 동기 버퍼에 저장하는 단계; 및 클라이언트측 스레드 관리 장치에 의해, 동기 버퍼 및 비동기 버퍼로부터 다음 실행 대상인 함수를 추출하는 단계를 포함한다.
함수 처리 스레드를 통해 수신되는 함수를 처리하는 단계는, 클라이언트측 스레드 관리 장치에 의해, 판단하는 단계에서 다음 실행 대상으로 판단한 함수 또는 다음 실행 대상인 함수를 추출하는 단계에서 추출한 함수를 처리하는 단계를 더 포함한다.
함수 처리 스레드를 통해 수신되는 함수를 처리하는 단계는, 클라이언트측 스레드 관리 장치에 의해, 처리한 함수가 보이드 함수가 아니면 서버측 스레드 관리 장치로 처리한 함수의 처리 결과를 서버측 스레드 관리 장치로 전송하는 단계를 더 포함한다.
본 발명에 의하면, 소프트웨어 분할 실행을 위한 스레드 관리 장치 및 방법은 서버에서 소프트웨어를 실행한 실행 결과를 클라이언트로 제공하고, 클라이언트에서 수신한 실행 결과를 이용하여 그래픽 랜더링을 수행함으로써, 그래픽 및 사운드 처리로 인한 서버의 CPU 부하를 최소화할 수 있는 효과가 있다.
또한, 소프트웨어 분할 실행을 위한 스레드 관리 장치 및 방법은 그래픽 및 사운드 처리로 인한 서버의 CPU 부하를 최소화함으로써, 서버의 CPU 활용률이 높아져 여려 대의 서버를 추가로 설치한 경우와 동일한 성능을 구현할 수 있고, 가상화에 의한 비용 삭감 및 소프트웨어 라이선스 비용을 최소화할 수 있는 효과가 있다.
또한, 클라이언트에서 결과 화면을 렌더링하기 위해서는 서버에서 클라이언트로 분할실행 명령을 전송하고 함수에 따라 결과값을 다시 받아야 한다. 이때, 소프트웨어 분할 실행을 위한 스레드 관리 장치 및 방법은 분할실행 소프트웨어의 종류에 따라 서버와 클라이언트 사이에 함수를 추출하여 전송하고 수신받아 처리하는 스레드 묶음을 한 개 이상 생성하고, 한 스레드 묶음의 스레드들은 서버와 클라이언트 사이에서 독립적인 연결 및 송수신 버퍼를 가진다. 이러한 방법으로 스레드들의 동시 실행에 의해 발생할 수 있는 문제를 최소화하고, 네트워크 전송 부하에 의한 지연을 최소화할 수 있는 효과가 있다.
또한, 소프트웨어 분할 실행을 위한 스레드 관리 장치 및 방법은 전송해야 하는 함수가 결과값을 반환해야 하는지 결과값이 없는 보이드 함수인지에 따라 수신하는 클라이언트에서는 함수처리 스레드와 수신 전용 스레드로 나누어 처리하고, 스레드들은 버퍼를 따로 가지고 있어 전송에 의한 지연을 최소화할 수 있는 효과가 있다.
도 1은 본 발명의 실시예에 따른 소프트웨어 분할 실행을 위한 스레드 관리 장치를 설명하기 위한 도면.
도 2는 도 1의 서버측 스레드 관리 장치를 설명하기 위한 도면.
도 3은 도 1의 클라이언트측 스레드 관리 장치를 설명하기 위한 도면.
도 4 및 도 5는 본 발명의 실시예에 따른 소프트웨어 분할 실행을 위한 스레드 관리 장치에서 소프트웨어의 분할 처리를 위한 스레드 구조 및 동작을 설명하기 위한 도면.
도 6은 본 발명의 실시예에 따른 소프트웨어 분할 실행을 위한 스레드 관리 방법을 설명하기 위한 흐름도.
도 7은 도 6의 서버측 스레드 관리 단계를 설명하기 위한 흐름도.
도 8은 도 6의 클라이언트측 스레드 관리 단계를 설명하기 위한 흐름도.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부 도면을 참조하여 설명하기로 한다. 우선 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
이하, 본 발명의 실시예에 따른 소프트웨어 분할 실행을 위한 스레드 관리 장치를 첨부된 도면을 참조하여 상세하게 설명하면 아래와 같다. 도 1은 본 발명의 실시예에 따른 소프트웨어 분할 실행을 위한 스레드 관리 장치를 설명하기 위한 도면이다. 도 2는 도 1의 서버측 스레드 관리 장치를 설명하기 위한 도면이고, 도 3은 도 1의 클라이언트측 스레드 관리 장치를 설명하기 위한 도면이다.
도 1에 도시된 바와 같이, 소프트웨어 분할 실행을 위한 스레드 관리 장치는 서버 기반 소프트웨어 서비스 시스템에서 실행되는 소프트웨어 중에서 데이터 중심 작업을 수행하는 서버측 스레드 관리 장치(100)와 그래픽 및 사운드 작업을 수행하는 클라이언트측 스레드 관리 장치(200)로 구성된다. 여기서, 도 1에서는 본 발명의 실시예를 용이하게 설명하기 위해 서버측 스레드 관리 장치(100) 및 클라이언트측 스레드 관리 장치(200)를 별도의 장치로 도시하였으나, 이에 한정되지 않고 서버 및 클라이언트에 모듈 형태로 내장될 수 있다.
소프트웨어는 서버에서 실행되지만 실행 결과 및 사용자 인터페이스는 클라이언트측 스레드 관리 장치(200)에 의해 클라이언트에 표시된다. 따라서, 서버측 스레드 관리 장치(100)는 클라이언트에 의해 처리되어야 할 그래픽 작업 및 사운드 작업을 추출하여 클라이언트측 스레드 관리 장치(200)로 전송한다. 클라이언트측 스레드 관리 장치(200)는 클라이언트에서 사용자의 키보드, 마우스 등의 입력 정보(즉, 클라이언트 입력)를 추출하여 서버측 스레드 관리 장치(100)에게로 전송한다.
서버측 스레드 관리 장치(100)는 서버 기반 소프트웨어 서비스 시스템의 서버측에 설치되며, 클라이언트의 요청에 따라 소프트웨어 중에서 데이터 중심 작업을 실행한다. 즉, 서버측 스레드 관리 장치(100)는 클라이언트측 스레드 관리 장치(200)로부터 소프트웨어 실행 요청을 수신하면 소프트웨어를 실행한다. 이때, 서버측 스레드 관리 장치(100)는 소프트웨어의 데이터 중심 작업을 처리한다. 서버측 스레드 관리 장치(100)는 소프트웨어의 분할 실행을 위해서 소프트웨어 중에서 그래픽 및 사운드 처리에 관련된 함수를 클라이언트측 스레드 관리 장치(200)에게로 전송한다. 여기서, 서버측 스레드 관리 장치(100)는 그래픽 및 사운드 처리에 관련된 함수의 처리를 위해 스레드를 생성한다. 서버측 스레드 관리 장치(100)는 생성한 스레드에 연결되는 복수의 스레드 생성을 클라이언트측 스레드 관리 장치(200)에게로 요청한다. 서버측 스레드 관리 장치(100)는 서버측 및 클라이언트측의 스레드 생성이 완료되면 그래픽 및 사운드 처리에 관련된 함수를 클라이언트측 스레드 관리 장치(200)에게로 전송한다. 서버측 스레드 관리 장치(100)는 생성된 스레드를 통해 클라이언트 입력을 클라이언트측 스레드 관리 장치(200)로부터 수신한다. 서버측 스레드 관리 장치(100)는 수신한 클라이언트 입력에 해당하는 데이터 처리를 수행한다. 서버측 스레드 관리 장치(100)는 수행한 테이터 처리 결과를 스레드를 통해 클라이언트측 스레드 관리 장치(200)에게로 전송한다.
이를 위해, 서버측 스레드 관리 장치(100)는 서버 실행부(120), 서버 장치관리부(140), 서버 연결관리부(160)를 포함하여 구성된다.
서버 실행부(120)는 클라이언트측 스레드 관리 장치(200)로부터 소프트웨어 실행 요청을 수신하면 해당 소프트웨어를 실행한다. 이때, 서버 실행부(120)는 소프트웨어에 포함된 복수의 함수들 중에서 데이터 중심 처리에 해당하는 함수들만 수행한다. 이를 위해, 서버 실행부(120)는 사용자 데이터를 저장하는 데이터 저장 스레드 및 데이터 저장 스레드에 저장된 사용자 데이터를 이용하여 연산을 수행하는 데이터 연산 스레드를 생성한다.
서버 실행부(120)는 서버 장치관리부(140)에서 추출한 그래픽 작업 및 사운드 작업을 클라이언트측 스레드 관리 장치(200)로 전송하도록 서버 연결관리부(160)를 제어한다. 즉, 서버 실행부(120)는 서버 장치관리부(140)에서 그래픽 작업 관련 함수 및 사운드 작업 관련 함수의 추출이 완료되면, 그래픽 작업 관련 함수 및 사운드 작업 관련 함수의 전송을 위한 복수의 스레드들을 생성한다.
서버 실행부(120)는 클라이언트측 스레드 관리 장치(200)에게로 스레드 생성 요청을 전송한다. 이때, 서버 실행부(120)는 기생성한 복수의 스레드들 각각에 대응되는 스레드를 생성하도록 요청하는 스레드 생성 요청을 클라이언트측 스레드 관리 장치(200)에게로 전송한다. 서버 실행부(120)는 클라이언트측 스레드 관리 장치(200)로부터의 스레드 생성 요청에 따라 클라이언트 입력을 처리하기 위한 하나 이상의 스레드를 생성한다.
서버 실행부(120)는 서버 장치관리부(140)에서 추출한 그래픽 작업 및 사운드 작업을 기생성한 복수의 스레드들을 통해 클라이언트측 스레드 관리 장치(200)로 전송하도록 서버 장치관리부(140) 및 서버 연결관리부(160)를 제어한다.
서버 장치관리부(140)는 서버 실행부(120)에 의해 실행된 소프트웨어 중에서 그래픽 작업 관련 함수 및 사운드 작업 관련 함수를 추출한다. 서버 장치관리부(140) 서버 실행부(120)의 제어에 따라 추출한 그래픽 작업 관련 함수 및 사운드 작업 관련 함수를 서버 연결관리부(160)에게로 전송한다. 서버 장치관리부(140)는 클라이언트측 스레드 관리 장치(200)로부터 수신되는 클라이언트 입력에 대한 처리를 수행한다.
이를 위해, 도 2에 도시된 바와 같이, 서버 장치관리부(140)는 소프트웨어의 그래픽 작업 관련 함수를 추출하는 그래픽 작업 추출모듈(142), 소프트웨어의 사운드 작업 관련 함수를 추출하는 사운드 작업 추출모듈(144), 서버 연결관리부(160)를 통해 수신되는 클라이언트 입력을 처리하는 클라이언트 입력 처리모듈(146)을 포함하여 구성된다.
서버 연결관리부(160)는 서버 실행부(120)의 제어에 따라 서버 장치관리부(140)로부터 수신한 그래픽 작업 관련 함수 및 사운드 작업 관련 함수를 클라이언트측 스레드 관리 장치(200)에게로 전송한다. 즉, 서버 연결관리부(160)는 그래픽 작업 추출모듈(142)로부터 그래픽 작업 관련 함수를 수신한다. 서버 연결관리부(160)는 사운드 작업 추출모듈(144)로부터 사운드 작업 관련 함수를 수신한다. 서버 연결관리부(160)는 서버 실행부(120)에서 생성된 스레드들을 통해 기수신한 그래픽 작업 관련 함수 및 사운드 작업 관련 함수를 클라이언트측 스레드 관리 장치(200)에게로 전송한다.
서버 연결관리부(160)는 클라이언트측 스레드 관리 장치(200)로부터 클라이언트 입력을 수신한다. 서버 연결관리부(160)는 수신한 클라이언트 입력을 서버 장치관리부(140; 즉, 클라이언트 입력 처리모듈(146))에게로 전송한다.
이를 위해, 도 2에 도시된 바와 같이, 서버 연결관리부(160)는 그래픽 작업 추출모듈(142)로부터 수신한 그래픽 작업 관련 함수를 스레드를 통해 클라이언트측 스레드 관리 장치(200)로 전송하는 그래픽 작업 송신모듈(162), 사운드 작업 추출모듈(144)로부터 수신한 사운드 작업 관련 함수를 스레드를 통해 클라이언트측 스레드 관리 장치(200)로 전송하는 사운드 작업 송신모듈(164), 클라이언트측 스레드 관리 장치(200)로부터 클라이언트 입력을 수신하여 서버 장치관리부(140; 즉, 클라이언트 입력 처리모듈(146))에게로 전송하는 클라이언트 입력 수신모듈(166)을 포함하여 구성된다.
클라이언트측 스레드 관리 장치(200)는 서버 기반 소프트웨어 서비스 시스템의 클라이언트측에 설치되며, 서버측 스레드 관리 장치(100)로부터 소프트웨어의 그래픽 및 사운드 작업을 수신하여 실행한다. 즉, 클라이언트측 스레드 관리 장치(200)는 서버측 스레드 관리 장치(100)로부터 서버에서 데이터 중심 작업이 완료된 그래픽 및 사운드 처리에 관련된 함수를 수신한다. 클라이언트측 스레드 관리 장치(200)는 수신한 함수들을 수행하여, 소프트웨어의 그래픽 렌더링, 사운드 출력 등의 작업을 수행한다. 클라이언트측 스레드 관리 장치(200)는 사용자로부터 입력되는 클라이언트 입력을 서버측 스레드 관리 장치(100)에게로 전송한다.
이를 위해, 클라이언트측 스레드 관리 장치(200)는 클라이언트 실행부(220), 클라이언트 장치관리부(240), 클라이언트 연결관리부(260)를 포함하여 구성된다.
클라이언트 실행부(220)는 사용자의 요청에 따라 소프트웨어 실행 요청을 서버측 스레드 관리 장치(100)에게로 전송한다. 이때, 클라이언트 실행부(220)는 서버측 스레드 관리 장치(100)의 요청(즉, 스레드 생성 요청)에 따라 그래픽 작업 관련 함수의 수신 및 처리를 위한 스레드와, 사운드 작업 관련 함수의 수신 및 처리를 위한 스레드를 생성한다.
클라이언트 실행부(220)는 사용자로부터의 클라이언트 입력을 처리하기 위한 스레드를 생성한다. 클라이언트 실행부(220)는 서버측 스레드 관리 장치(100)에게로 스레드 생성 요청을 전송한다. 이때, 클라이언트 실행부(220)는 기생성한 스레드에 대응되는 하나 이상의 스레드를 생성하도록 요청하는 스레드 생성 요청을 서버측 스레드 관리 장치(100)에게로 전송한다.
클라이언트 실행부(220)는 서버측 스레드 관리 장치(100)로부터 수신되는 그래픽 작업 관련 함수 및 사운드 작업 관련 함수를 처리하도록 클라이언트 장치관리부(240) 및 클라이언트 연결관리부(260)를 제어한다. 클라이언트 실행부(220)는 사용자의 입력을 추출하여 서버측 스레드 관리 장치(100)에게로 전송하도록 클라이언트 장치관리부(240) 및 클라이언트 연결관리부(260)를 제어한다.
클라이언트 장치관리부(240)는 클라이언트 실행부(220)의 제어에 따라 그래픽 작업 관련 함수 및 사운드 작업 관련 함수를 처리한다. 즉, 클라이언트 장치관리부(240)는 클라이언트 연결관리부(260)로부터 그래픽 작업 관련 함수 및 사운드 작업 관련 함수를 수신한다. 클라이언트 장치관리부(240)는 수신한 그래픽 작업 관련 함수 및 사운드 작업 관련 함수를 처리한다.
클라이언트 장치관리부(240)는 사용자의 입력으로부터 클라이언트 입력을 추출한다. 즉, 클라이언트 장치관리부(240)는 키보드, 마우스 등의 클라이언트 입력을 추출한다. 클라이언트 장치관리부(240)는 추출한 클라이언트 입력을 클라이언트 연결관리부(260)에게로 전송한다.
이를 위해, 도 3에 도시된 바와 같이, 클라이언트 장치관리부(240)는 클라이언트 연결관리부(260)로부터 수신한 그래픽 작업 관련 함수를 처리하는 그래픽 작업 처리모듈(242), 클라이언트 연결관리부(260)로부터 수신한 사운드 작업 관련 함수를 처리하는 사운드 작업 처리모듈(244), 클라이언트 입력을 추출하여 클라이언트 연결관리부(260)로 전송하는 클라이언트 입력 추출모듈(246)을 포함하여 구성된다.
클라이언트 연결관리부(260)는 클라이언트 실행부(220)의 제어에 따라 클라이언트 장치관리부(240)로부터 수신한 클라이언트 입력을 서버측 스레드 관리 장치(100)에게로 전송한다. 즉, 클라이언트 연결관리부(260)는 클라이언트 입력 추출모듈(246)로부터 클라이언트 입력을 수신한다. 클라이언트 연결관리부(260)는 클라이언트 실행부(220)에서 생성된 스레드를 통해 기수신한 클라이언트 입력을 서버측 스레드 관리 장치(100)에게로 전송한다.
클라이언트 연결관리부(260)는 서버측 스레드 관리 장치(100)로부터 그래픽 작업 관련 함수 및 사운드 작업 관련 함수를 수신한다. 클라이언트 연결관리부(260)는 수신한 그래픽 작업 관련 함수 및 사운드 작업 관련 함수를 클라이언트 장치관리부(240)에게로 전송한다.
이를 위해, 도 3에 도시된 바와 같이, 클라이언트 연결관리부(260)는 서버측 스레드 관리 장치(100)로부터 그래픽 작업 관련 함수를 수신하여 클라이언트 장치관리부(240; 즉, 그래픽 작업 처리모듈(242))에게로 전송하는 그래픽 작업 수신모듈(262), 서버측 스레드 관리 장치(100)로부터 사운드 작업 관련 함수를 수신하여 클라이언트 장치관리부(240; 즉, 사운드 작업 처리모듈(244))에게로 전송하는 사운드 작업 수신모듈(264), 클라이언트 장치관리부(240; 즉, 클라이언트 입력 추출모듈(246))로부터 수신한 클라이언트 입력을 서버측 스레드 관리 장치(100)에게로 전송하는 클라이언트 입력 송신모듈(266)을 포함하여 구성된다.
이하, 본 발명의 실시예에 따른 소프트웨어 분할 실행을 위한 스레드 관리 장치에서 소프트웨어의 분할 처리를 위한 스레드 구조 및 동작을 첨부된 도면을 참조하여 상세하게 설명하면 아래와 같다. 도 4 및 도 5는 본 발명의 실시예에 따른 소프트웨어 분할 실행을 위한 스레드 관리 장치에서 소프트웨어의 분할 처리를 위한 스레드 구조 및 동작을 설명하기 위한 도면이다.
도 4는 서버측 스레드 관리 장치(100) 및 클라이언트측 스레드 관리 장치(200) 간의 그래픽, 사운드 및 입력 작업에 대한 추출 및 전송, 수신 및 처리를 위한 UI 스레드 구조를 설명하기 위한 도면이다.
소프트웨어 분할 실행 환경에서는 클라이언트에서 처리 및 관리되는 사용자 데이터에 대한 보안을 제공하기 위하여 데이터 집중적인 작업들은 서버에서 처리한다. 따라서, 서버측 스레드 관리 장치(100)는 사용자의 데이터를 저장하는 데이터 저장 스레드(310)와 데이터 연산 스레드(320)를 생성 및 관리한다.
그래픽 작업 관련 함수, 사운드 작업 관련 함수 및 클라이언트 입력의 처리를 포함하는 사용자 UI에 관련된 작업은 서버측 스레드 관리 장치(100) 및 클라이언트측 스레드 관리 장치(200)에서 분할 실행된다. 따라서, 서버측 스레드 관리 장치(100) 및 클라이언트측 스레드 관리 장치(200)는 대응되는 UI 스레드들(410, 420, 430)을 하나의 스레드 묶음(440)으로 생성하여 관리한다. 이때, 서버측 스레드 관리 장치(100) 및 클라이언트측 스레드 관리 장치(200)는 분할실행 소프트웨어의 종류에 따라 하나 이상의 스레드 묶음(440)을 생성 및 관리할 수 있다.
서버측 스레드 관리 장치(100)는 그래픽 작업 관련 함수 및 사운드 작업 관련 함수를 전송하는 경우에 하나 혹은 그 이상의 UI 스레드(410)를 생성한다. 클라이언트측 스레드 관리 장치(200)는 서버측 스레드 관리 장치(100)에서 생성한 UI 스레드(410)에 대응하는 복수의 UI 스레드들(420, 430)을 생성한다.
스레드 묶음(440)의 스레드들(410, 420, 430)은 다른 스레드 묶음의 스레드들과 서버측 스레드 관리 장치(100) 및 클라이언트측 스레드 관리 장치(200) 사이에서 독립적인 연결 및 송수신 버퍼를 가진다. 이러한 방법으로 스레드들의 동시 실행에 의해 발생할 수 있는 문제를 최소화한다. 이때 생성되는 스레드 묶음(260)의 개수는 분할실행 소프트웨어의 구성에 따라 다를 수 있다.
클라이언트측 스레드 관리 장치(200)는 클라이언트 입력을 전송하는 경우 입력 함수를 전송하는 하나 이상의 UI 스레드(450)를 생성한다. 서버측 스레드 관리 장치(100)는 클라이언트측 스레드 관리 장치(200)에서 생성한 UI 스레드(450)에 대응하는 복수의 UI 스레드들(460, 470)을 생성한다. 클라이언트측 스레드 관리 장치(200) 및 서버측 스레드 관리 장치(100)는 기생성한 UI 스레드들(450, 460, 470)을 하나의 스레드 묶음(480)으로 관리한다.
도 5는 도 4의 UI 스레드를 더욱 상세하게 도시한 도면이다. 즉, 도 5는 서버측 스레드 관리 장치(100)에서 그래픽 작업 관련 함수 또는 사운드 작업 관련 함수를 추출하여 클라이언트측 스레드 관리 장치(200)로 전송할 때 사용되는 스레드 묶음(440)을 더욱 상세하게 도시한 도면이다.
도 5에 도시된 바와 같이, 스레드 묶음(440)은 함수 추출 스레드(410), 함수 처리 스레드(420), 수신 전용 스레드(430)를 포함하여 구성된다.
함수 추출 스레드(410)는 서버측 스레드 관리 장치(100)에서 실행되는 소프트웨어에서 그래픽 작업 관련 함수, 사운드 작업 관련 함수를 추출하여 클라이언트측 스레드 관리 장치(200)로 전송한다. 이때, 함수 추출 스레드(410)는 추출한 그래픽 작업 관련 함수, 사운드 작업 관련 함수를 하나씩 전송하지 않고 버퍼에 저장한 후, 추출되는 함수의 종류에 따라 일괄 전송한다. 이를 위해, 함수 추출 스레드(410)는 그래픽 작업 관련 함수, 사운드 작업 관련 함수를 저장하는 동기/비동기 버퍼(412)를 포함하여 구성된다. 이때, 함수 추출 스레드(410)는 추출된 함수가 결과값(리턴값)이 없는 보이드(void) 함수인 경우 동기/비동기 버퍼가 가득 찬 후에 일괄로 저장된 함수들을 수신 전용 스레드(430)에게로 전송한다. 함수 추출 스레드(410)는 추출된 함수가 결과값이 있는 함수인 경우(즉, 보이드 함수가 아닌 경우), 결과값을 받아야 그 결과에 따라 다음 명령을 추출할 수 있으므로 그동안 동기/비동기 버퍼에 저장된 함수들과 같이 바로 함수 처리 스레드(420)로 전송한다. 이를 통해, 분할실행 소프트웨어 서비스를 제공함에 있어 네트워크 부하에 의한 분할실행 소프트웨어의 실행 지연을 방지할 수 있다.
함수 처리 스레드(420)는 함수 추출 스레드(410)와 동기연결된다. 함수 처리 스레드(420)는 함수 추출 스레드(410)로부터 받은 함수를 바로 처리하여 결과값을 리턴하거나, 동기 버퍼(422)에 저장한다.
이때, 수신 전용 스레드(430)는 함수 추출 스레드(410)로부터 수신한 함수를 비동기 버퍼(432)에 저장한다. 이때, 비동기 버퍼(432)에 저장된 함수들은 적절한 함수 실행 순서에 따라 함수 처리 스레드(420)에 의해 검출되어 처리된다.
이하, 본 발명의 실시예에 따른 소프트웨어 분할 실행을 위한 스레드 관리 방법을 첨부된 도면을 참조하여 상세하게 설명하면 아래와 같다. 도 6은 본 발명의 실시예에 따른 소프트웨어 분할 실행을 위한 스레드 관리 방법을 설명하기 위한 흐름도이다. 도 7은 도 6의 서버측 스레드 관리 단계를 설명하기 위한 흐름도이고, 도 8은 도 6의 클라이언트측 스레드 관리 단계를 설명하기 위한 흐름도이다.
먼저, 클라이언트측 스레드 관리 장치(200)는 사용자의 요청에 따라 서버측 스레드 관리 장치(100)에게로 접속 요청을 전송한다. 서버측 스레드 관리 장치(100)는 접속 요청을 전송한 클라이언트측 스레드 관리 장치(200)에 대한 사용자 인증을 수행한다. 서버측 스레드 관리 장치(100)는 사용자 인증이 성공되면 클라이언트측 스레드 관리 장치(200)에게로 인증 성공 메시지를 전송한다. 클라이언트측 스레드 관리 장치(200)는 인증이 완료된 사용자의 소프트웨어 실행 요청에 따라 소프트웨어 실행 요청을 서버측 스레드 관리 장치(100)로 전송한다. 클라이언트측 스레드 관리 장치(200)로부터 소프트웨어 실행 요청을 수신하면(S100; 예), 서버측 스레드 관리 장치(100)는 실행 요청에 해당하는 소프트웨어를 실행한다(S200).
서버측 스레드 관리 장치(100)는 클라이언트측 스레드 관리 장치(200)와 연계하여 서버측 스레드 관리 단계를 수행한다(S300). 즉, 서버측 스레드 관리 장치(100)는 클라이언트측 스레드 관리 장치(200)와의 소프트웨어 분할 실행을 위한 스레드를 생성한다. 서버측 스레드 관리 장치(100)는 실행된 소프트웨어 중에서 데이터 중심 작업 관련 함수는 내부에서 처리한다. 서버측 스레드 관리 장치(100)는 실행된 소프트웨어 중에서 그래픽 작업 관련 함수 및 사운드 작업 관련 함수를 추출하여 기생성한 스레드를 통해 클라이언트측 스레드 관리 장치(200)에게로 전송한다. 이하, 첨부된 도 7을 참조하여 서버측 스레드 관리 단계를 더욱 상세하게 설명하면 아래와 같다.
서버측 스레드 관리 장치(100)는 소프트웨어 분할 실행을 위한 스레드들을 생성하여 실행한다(S310). 이때, 서버측 스레드 관리 장치(100)는 소프트웨어의 데이터 집중 작업을 처리하기 위한 데이터 저장 스레드(310) 및 데이터 연산 스레드(320)를 생성하여 실행한다. 서버측 스레드 관리 장치(100)는 그래픽 작업 관련 함수 및 사운드 작업 관련 함수의 처리를 위한 하나 이상의 스레드를 생성하여 실행한다. 이때, 서버측 스레드 관리 장치(100)는 실행되는 소프트웨어에서 그래픽 작업 관련 함수 및 사운드 작업 관련 함수를 추출하는 함수 추출 스레드(410)를 생성하여 실행한다.
서버측 스레드 관리 장치(100)는 클라이언트측 스레드 관리 장치(200)에게로 스레드 생성을 요청한다(S320). 이때, 서버측 스레드 관리 장치(100)는 기생성한 함수 추출 스레드(410)에 대응하는 복수의 스레드들(예를 들면, 함수 처리 스레드(240), 수신 전용 스레드(250)의 생성을 클라이언트측 스레드 관리 장치(200)에게로 요청한다.
클라이언트측 스레드 관리 장치(200)에서 스레드들이 실행되면, 서버측 스레드 관리 장치(100)는 실행중인 소프트웨어로부터 그래픽 작업 관련 함수 및 사운드 작업 관련 함수를 추출한다(S330). 이때, 함수의 추출은 기생성된 함수 추출 스레드(410)에 의해 수행된다.
서버측 스레드 관리 장치(100)는 추출된 함수가 보이드(void) 함수인지 검사한다. 즉, 서버측 스레드 관리 장치(100)는 함수 추출 스레드(410)에 의해 추출된 그래픽 작업 관련 함수 또는 사운드 작업 관련 함수가 결과값(즉, 리턴값)이 없는 보이드 함수인지 검사한다. 추출한 함수가 보이드 함수이면(S340; 예), 서버측 스레드 관리 장치(100)는 추출한 함수를 동기/비동기 버퍼에 저장한다(S350). 이때, 동기/비동기 버퍼는 함수 추출 스레드(410)에 포함된 동기/비동기 버퍼(412)에 저장한다.
서버측 스레드 관리 장치(100)는 함수들이 저장된 동기/비동기 버퍼가 풀(FULL) 상태인지 검사한다. 동기/비동기 버퍼가 풀 상태이면(S360; 예), 서버측 스레드 관리 장치(100)는 동기/비동기 버퍼에 저장된 함수들을 클라이언트측 스레드 관리 장치(200)로 전송한다(S370). 이때, 서버측 스레드 관리 장치(100)는 동기/비동기 버퍼가 풀 상태가 아닌 경우 다음 함수를 추출한다.
서버측 스레드 관리 장치(100)는 추출한 함수가 보이드 함수가 아니면 추출한 함수를 클라이언트측 스레드 관리 장치(200)로 전송한다. 이때, 서버측 스레드 관리 장치(100)는 동기/비동기 버퍼에 저장된 함수들을 추출한 함수와 함께 클라이언트측 스레드 관리 장치(200)로 전송한다(S380).
서버측 스레드 관리 장치(100)는 클라이언트측 스레드 관리 장치(200)로부터 기전송한 함수들에 대한 처리결과를 수신한다(S390). 이후, 서버측 스레드 관리 장치(100)는 다음 함수를 추출한다.
이와 함께, 클라이언트측 스레드 관리 장치(200)는 서버측 스레드 관리 장치(100)와 연계하여 클라이언트측 스레드 관리 단계를 수행한다(S400). 이하, 첨부된 도 8을 참조하여 클라이언트측 스레드 관리 단계를 더욱 상세하게 설명하면 아래와 같다.
서버측 스레드 관리 장치(100)로부터 스레드 생성 요청을 수신하면(S405; 예), 클라이언트측 스레드 관리 장치(200)는 수신 전용 스레드(430)를 생성하여 실행한다(S410).
클라이언트측 스레드 관리 장치(200)는 기생성된 수신 전용 스레드(430)를 통해 함수를 수신하면(S415), 수신 전용 스레드(430)에 포함된 비동기 버퍼(432)에 수신한 함수를 저장한다(S420).
클라이언트측 스레드 관리 장치(200)는 수신 전용 스레드(430)와 함께 함수 처리 스레드(420)를 생성하여 실행한다(S425).
기생성된 함수 처리 스레드(420)를 통해 함수를 수신하면(S430), 클라이언트측 스레드 관리 장치(200)는 수신한 함수가 다음 실행 대상 함수인지를 검사한다. 수신한 함수가 다음 실행 대상 함수이면(S435; 예), 클라이언트측 스레드 관리 장치(200)는 수신한 함수를 처리한다(S440). 즉, 함수 처리 스레드(420)에서 수신한 그래픽 작업 관련 함수를 이용하여 렌더링을 수행하고, 렌더링 결과를 통해 화면에 출력한다. 함수 처리 스레드(420)에서 수신한 사운드 작업 관련 함수를 처리하여 사운드를 출력한다.
클라이언트측 스레드 관리 장치(200)는 함수의 처리가 완료되면 해당 함수가 보이드 함수인지 검사한다. 처리한 함수가 보이드 함수이면(S445; 예), 클라이언트측 스레드 관리 장치(200)는 다음 함수를 수신한다. 클라이언트측 스레드 관리 장치(200)는 처리한 함수가 보이드 함수가 아니면 함수의 처리 결과를 서버측 스레드 관리 장치(100)에게로 전송한다(S450).
클라이언트측 스레드 관리 장치(200)는 수신한 함수가 다음 실행 대상 함수가 아니면 수신한 함수를 동기 버퍼에 저장한다(S455).
클라이언트측 스레드 관리 장치(200)는 동기 버퍼 및 비동기 버퍼에 저장된 함수들을 검사하여 다음 실행 함수를 추출한다(S460). 이후, 클라이언트측 스레드 관리 장치(200)는 추출한 함수를 처리하고, 보이드 함수가 아닌 경우 처리 결과를 서버측 스레드 관리 장치(100)에게로 전송한다.
여기서, 도 6 내지 도 7은 그래픽 작업 관련 함수 및 사운드 작업 관련 함수를 서버측 스레드 관리 장치에서 클라이언트측 스레드 관리 장치로 전송하여 처리하는 과정을 설명한 것이며, 키보드나 마우스의 입력 등의 클라이언트 입력을 클라이언트측 스레드 관리 장치에서 서버측 스레드 관리 장치로 전송하여 처리하는 과정은 상술한 방법을 통해 충분히 재현 가능하므로 상세한 설명을 생략한다.
상술한 바와 같이, 소프트웨어 분할 실행을 위한 스레드 관리 장치 및 방법은 서버에서 소프트웨어를 실행한 실행 결과를 클라이언트로 제공하고, 클라이언트에서 수신한 실행 결과를 이용하여 그래픽 랜더링을 수행함으로써, 그래픽 및 사운드 처리로 인한 서버의 CPU 부하를 최소화할 수 있는 효과가 있다.
또한, 소프트웨어 분할 실행을 위한 스레드 관리 장치 및 방법은 그래픽 및 사운드 처리로 인한 서버의 CPU 부하를 최소화함으로써, 서버의 CPU 활용률이 높아져 여려 대의 서버를 추가로 설치한 경우와 동일한 성능을 구현할 수 있고, 가상화에 의한 비용 삭감 및 소프트웨어 라이선스 비용을 최소화할 수 있는 효과가 있다.
또한, 클라이언트에서 결과 화면을 렌더링하기 위해서는 서버에서 클라이언트로 분할실행 명령을 전송하고 함수에 따라 결과값을 다시 받아야 한다. 이때, 소프트웨어 분할 실행을 위한 스레드 관리 장치 및 방법은 분할실행 소프트웨어의 종류에 따라 서버와 클라이언트 사이에 함수를 추출하여 전송하고 수신받아 처리하는 스레드 묶음을 한 개 이상 생성하고, 한 스레드 묶음의 스레드들은 서버와 클라이언트 사이에서 독립적인 연결 및 송수신 버퍼를 가진다. 이러한 방법으로 스레드들의 동시 실행에 의해 발생할 수 있는 문제를 최소화하고, 네트워크 전송 부하에 의한 지연을 최소화할 수 있는 효과가 있다.
또한, 소프트웨어 분할 실행을 위한 스레드 관리 장치 및 방법은 전송해야 하는 함수가 결과값을 반환해야 하는지 결과값이 없는 보이드 함수인지에 따라 수신하는 클라이언트에서는 함수처리 스레드와 수신 전용 스레드로 나누어 처리하고, 스레드들은 버퍼를 따로 가지고 있어 전송에 의한 지연을 최소화할 수 있는 효과가 있다.
이상에서 본 발명에 따른 바람직한 실시예에 대해 설명하였으나, 다양한 형태로 변형이 가능하며, 본 기술분야에서 통상의 지식을 가진자라면 본 발명의 특허청구범위를 벗어남이 없이 다양한 변형예 및 수정예를 실시할 수 있을 것으로 이해된다.
100: 서버측 스레드 관리 장치 120: 서버 실행부
140: 서버 장치관리부 142: 그래픽 작업 추출모듈
144: 사운드 작업 추출모듈 146: 클라이언트 입력 처리모듈
160: 서버 연결관리부 162: 그래픽 작업 송신모듈
164: 사운드 작업 송신모듈 166: 클라이언트 입력 수신모듈
200: 클라이언트측 스레드 관리 장치 220: 클라이언트 실행부
240: 클라이언트 장치관리부 242: 그래픽 작업 처리모듈
244: 사운드 작업 처리모듈 246: 클라이언트 입력 추출모듈
260: 클라이언트 연결관리부 262: 그래픽 작업 수신모듈
264: 사운드 작업 수신모듈 266: 클라이언트 입력 송신모듈

Claims (20)

  1. 분할 실행되는 소프트웨어를 실행하고, 상기 실행된 소프트웨어 중에서 그래픽 처리 및 사운드 처리 중에 적어도 하나의 함수를 처리하는 하나 이상의 스레드들을 생성하여 관리하는 서버 실행부;
    상기 소프트웨어 중에서 그래픽 작업 관련 함수 및 사운드 작업 관련 함수 중에 적어도 하나의 함수를 추출하는 서버 장치관리부; 및
    상기 서버 장치관리부에서 추출한 함수를 상기 서버 실행부에서 생성된 스레드를 통해 클라이언트측 스레드 관리 장치로 전송하는 서버 연결관리부를 포함하고,
    상기 서버 실행부는,
    상기 실행된 소프트웨어 중에서 데이터 중심 처리에 해당하는 함수들을 처리하는 데이터 저장 스레드 및 데이터 연산 스레드를 생성하는 것을 특징으로 하는 서버측 스레드 관리 장치.
  2. 삭제
  3. 청구항 1에 있어서,
    상기 서버 실행부는,
    상기 서버 장치관리부에서 추출한 그래픽 작업 관련 함수 및 사운드 작업 관련 함수 중에 적어도 하나의 함수를 처리하는 하나 이상의 스레드를 생성하고,
    상기 생성한 하나 이상의 스레드에 대응하는 스레드 생성을 상기 클라이언트측 스레드 관리 장치에게로 요청하고,
    상기 클라이언트측 스레드 관리 장치로부터 수신되는 클라이언트 입력을 처리하는 복수의 스레드를 생성하는 것을 특징으로 하는 서버측 스레드 관리 장치.
  4. 청구항 1에 있어서,
    상기 서버 장치관리부는,
    상기 실행된 소프트웨어 중에서 그래픽 작업 관련 함수를 추출하여 상기 서버 연결관리부에게로 전송하는 그래픽 작업 추출모듈;
    상기 실행된 소프트웨어 중에서 사운드 작업 관련 함수를 추출하여 상기 서버 연결관리부에게로 전송하는 사운드 작업 추출모듈; 및
    상기 서버 연결관리부로부터 전송받은 클라이언트 입력을 처리하는 클라이언트 입력 처리 모듈을 포함하는 것을 특징으로 하는 서버측 스레드 관리 장치.
  5. 청구항 1에 있어서,
    상기 서버 연결관리부는,
    상기 서버 장치관리부로부터 전송받은 그래픽 작업 관련 함수를 상기 서버 실행부에서 생성된 스레드를 통해 상기 클라이언트측 스레드 관리 장치로 전송하는 그래픽 작업 송신 모듈;
    상기 서버 장치관리부로부터 전송받은 사운드 작업 관련 함수를 상기 서버 실행부에서 생성된 스레드를 통해 상기 클라이언트측 스레드 관리 장치로 전송하는 사운드 작업 송신 모듈; 및
    상기 서버 실행부에서 생성된 스레드를 통해 상기 클라이언트측 스레드 관리 장치로부터 클라이언트 입력을 전송받아 상기 서버 장치관리부로 전송하는 클라이언트 입력 수신모듈을 포함하는 것을 특징으로 하는 서버측 스레드 관리 장치.
  6. 서버측 스레드 관리 장치에게로 소프트웨어 실행을 요청하고, 상기 서버측 스레드 관리 장치의 요청에 따라 상기 서버측 스레드 관리 장치에서 실행된 하나 이상의 스레드들에 대응되는 하나 이상의 스레드들을 생성하여 관리하는 클라이언트 실행부;
    상기 생성된 스레드들을 통해 상기 서버측 스레드 관리 장치로부터 그래픽 작업 관련 함수 및 사운드 작업 관련 함수 중에 적어도 하나의 함수를 수신하는 클라이언트 연결관리부; 및
    상기 클라이언트 연결관리부로부터 전송되는 상기 함수를 상기 클라이언트 실행부에서 생성된 스레드들을 통해 처리하는 클라이언트 장치관리부를 포함하고,
    상기 클라이언트 실행부는,
    클라이언트 입력을 처리하는 스레드를 생성하고, 상기 서버측 스레드 관리 장치에게로 상기 생성한 스레드에 대응되는 하나 이상의 스레드 생성을 요청하는 것을 특징으로 하는 클라이언트측 스레드 관리 장치.
  7. 삭제
  8. 청구항 6에 있어서,
    상기 클라이언트 장치 관리부는 클라이언트 입력을 입력받아 상기 클라이언트 연결관리부로 전송하고,
    상기 클라이언트 연결관리부는 상기 전송되는 클라이언트 입력을 상기 생성된 스레드를 통해 상기 서버측 스레드 관리 장치로 전송하는 것을 특징으로 하는 클라이언트측 스레드 관리 장치.
  9. 청구항 6에 있어서,
    상기 클라이언트 연결관리부는,
    상기 클라이언트 실행부에서 생성된 스레드를 통해 상기 서버측 스레드 관리 장치로부터 전송받은 그래픽 작업 관련 함수를 상기 클라이언트 장치관리부에게로 전송하는 그래픽 작업 수신모듈;
    상기 클라이언트 실행부에서 생성된 스레드를 통해 상기 서버측 스레드 관리 장치로부터 전송받은 사운드 작업 관련 함수를 상기 클라이언트 장치관리부에게로 전송하는 사운드 작업 수신모듈; 및
    상기 클라이언트 장치관리부로부터 전송받은 클라이언트 입력을 상기 생성된 스레드를 통해 상기 서버측 스레드 관리 장치에게로 전송하는 클라이언트 입력 송신모듈을 포함하는 것을 특징으로 하는 클라이언트측 스레드 관리 장치.
  10. 청구항 6에 있어서,
    상기 클라이언트 장치관리부는,
    상기 클라이언트 연결관리부로부터 수신한 그래픽 작업 관련 함수를 처리하는 그래픽 작업 처리모듈;
    상기 클라이언트 연결관리부로부터 수신한 사운드 작업 관련 함수를 처리하는 사운드 작업 처리모듈; 및
    클라이언트 입력을 추출하여 상기 클라이언트 연결관리부로 전송하는 클라이언트 입력 추출모듈을 포함하는 것을 특징으로 하는 클라이언트측 스레드 관리 장치.
  11. 서버측 스레드 관리 장치에 의해, 클라이언트측 스레드 관리 장치로부터의 소프트웨어 실행 요청을 수신하면 소프트웨어를 실행하는 단계;
    상기 서버측 스레드 관리 장치에 의해, 스레드를 통해 상기 실행하는 단계에서 실행된 소프트웨어 중에서 그래픽 작업 관련 함수 및 사운드 작업 관련 함수 중에 적어도 하나의 함수를 검출하여 클라이언트측 스레드 관리 장치에게로 전송하는 단계; 및
    상기 전송한 함수를 전송받는 클라이언트측 스레드 관리 장치에 의해, 스레드를 통해 상기 전송하는 단계에서 전송된 함수를 수신하여 처리하는 단계를 포함하고,
    상기 함수를 수신하여 처리하는 단계는,
    상기 클라이언트측 스레드 관리 장치에 의해, 상기 서버측 스레드 관리 장치로부터 스레드 생성 요청을 수신하면 수신 전용 스레드 및 함수 처리 스레드를 생성하여 실행하는 단계;
    상기 클라이언트측 스레드 관리 장치에 의해, 상기 수신 전용 스레드를 통해 함수가 수신되면 비동기 버퍼에 수신한 함수를 저장하는 단계; 및
    상기 클라이언트측 스레드 관리 장치에 의해, 상기 함수 처리 스레드를 통해 수신되는 함수를 처리하는 단계를 포함하는 것을 특징으로 하는 소프트웨어 분할 실행을 위한 스레드 관리 방법.
  12. 청구항 11에 있어서,
    상기 함수를 검출하여 전송하는 단계는,
    상기 서버측 스레드 관리 장치에 의해, 상기 실행된 소프트웨어 중에서 그래픽 작업 관련 함수 및 사운드 작업 관련 함수 중에 적어도 하나의 함수를 처리하는 하나 이상의 스레드를 생성하여 실행하는 단계;
    상기 서버측 스레드 관리 장치에 의해, 상기 실행된 스레드에 대응하는 스레드의 생성 요청을 상기 클라이언트측 스레드 관리 장치에게로 요청하는 단계;
    상기 서버측 스레드 관리 장치에 의해, 상기 실행된 소프트웨어로부터 그래픽 작업 관련 함수 및 사운드 작업 관련 함수 중에 적어도 하나의 함수를 추출하는 단계;
    상기 서버측 스레드 관리 장치에 의해, 상기 추출하는 단계에서 추출한 함수를 저장하는 단계; 및
    상기 서버측 스레드 관리 장치에 의해, 상기 저장하는 단계에서 저장된 함수를 검출하여 처리하는 단계를 포함하는 것을 특징으로 하는 소프트웨어 분할 실행을 위한 스레드 관리 방법.
  13. 청구항 12에 있어서,
    상기 추출한 함수를 저장하는 단계에서는,
    상기 서버측 스레드 관리 장치에 의해, 상기 추출한 함수가 보이드 함수이면 동기/비동기 버퍼에 저장하는 것을 특징으로 하는 소프트웨어 분할 실행을 위한 스레드 관리 방법.
  14. 청구항 12에 있어서,
    상기 저장된 함수를 검출하여 처리하는 단계는,
    상기 서버측 스레드 관리 장치에 의해, 함수들이 저장된 동기/비동기 버퍼가 풀 상태이면 상기 동기/비동기 버퍼에 저장된 함수들을 검출하는 단계; 및
    상기 서버측 스레드 관리 장치에 의해, 상기 검출하는 단계에서 검출한 함수들을 상기 클라이언트측 스레드 관리 장치로 전송하는 단계를 포함하는 것을 특징으로 하는 소프트웨어 분할 실행을 위한 스레드 관리 방법.
  15. 청구항 12에 있어서,
    상기 저장된 함수를 검출하여 처리하는 단계는,
    상기 서버측 스레드 관리 장치에 의해, 상기 추출한 함수가 보이드 함수가 아니면 상기 추출한 함수 및 동기/비동기 버퍼에 저장된 함수들을 상기 클라이언트측 스레드 관리 장치로 전송하는 단계를 포함하는 것을 특징으로 하는 소프트웨어 분할 실행을 위한 스레드 관리 방법.
  16. 청구항 15에 있어서,
    상기 저장된 함수를 검출하여 처리하는 단계는,
    상기 서버측 스레드 관리 장치에 의해, 상기 전송된 함수들의 처리 결과를 상기 클라이언트측 스레드 관리 장치로부터 수신하는 단계를 더 포함하는 것을 특징으로 하는 소프트웨어 분할 실행을 위한 스레드 관리 방법.
  17. 삭제
  18. 청구항 11에 있어서,
    상기 함수 처리 스레드를 통해 수신되는 함수를 처리하는 단계는,
    상기 클라이언트측 스레드 관리 장치에 의해, 상기 함수 처리 스레드를 통해 수신되는 함수가 다음 실행 대상 함수인지 판단하는 단계;
    상기 클라이언트측 스레드 관리 장치에 의해, 상기 판단하는 단계에서 다음 실행 대상으로 판단하면 상기 수신되는 함수를 동기 버퍼에 저장하는 단계; 및
    상기 클라이언트측 스레드 관리 장치에 의해, 상기 동기 버퍼 및 비동기 버퍼로부터 다음 실행 대상인 함수를 추출하는 단계를 포함하는 것을 특징으로 하는 소프트웨어 분할 실행을 위한 스레드 관리 방법.
  19. 청구항 18에 있어서,
    상기 함수 처리 스레드를 통해 수신되는 함수를 처리하는 단계는,
    상기 클라이언트측 스레드 관리 장치에 의해, 상기 판단하는 단계에서 다음 실행 대상으로 판단한 함수 또는 상기 다음 실행 대상인 함수를 추출하는 단계에서 추출한 함수를 처리하는 단계를 더 포함하는 것을 특징으로 하는 소프트웨어 분할 실행을 위한 스레드 관리 방법.
  20. 청구항 19에 있어서,
    상기 함수 처리 스레드를 통해 수신되는 함수를 처리하는 단계는,
    상기 클라이언트측 스레드 관리 장치에 의해, 상기 처리한 함수가 보이드 함수가 아니면 상기 서버측 스레드 관리 장치로 상기 처리한 함수의 처리 결과를 상기 서버측 스레드 관리 장치로 전송하는 단계를 더 포함하는 것을 특징으로 하는 소프트웨어 분할 실행을 위한 스레드 관리 방법.
KR1020120138409A 2012-11-30 2012-11-30 소프트웨어 분할 실행을 위한 스레드 관리 장치 및 방법 KR101694295B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120138409A KR101694295B1 (ko) 2012-11-30 2012-11-30 소프트웨어 분할 실행을 위한 스레드 관리 장치 및 방법
US14/047,457 US20140156736A1 (en) 2012-11-30 2013-10-07 Apparatus and method for managing threads to perform divided execution of software

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120138409A KR101694295B1 (ko) 2012-11-30 2012-11-30 소프트웨어 분할 실행을 위한 스레드 관리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20140070200A KR20140070200A (ko) 2014-06-10
KR101694295B1 true KR101694295B1 (ko) 2017-01-09

Family

ID=50826569

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120138409A KR101694295B1 (ko) 2012-11-30 2012-11-30 소프트웨어 분할 실행을 위한 스레드 관리 장치 및 방법

Country Status (2)

Country Link
US (1) US20140156736A1 (ko)
KR (1) KR101694295B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9821222B1 (en) * 2014-11-14 2017-11-21 Amazon Technologies, Inc. Coordination of content presentation operations
US9839843B1 (en) 2014-11-14 2017-12-12 Amazon Technologies, Inc. Coordination of content presentation operations
KR101798145B1 (ko) * 2017-04-17 2017-11-16 주식회사 뉴스젤리 서버 사이드 데이터 처리 방법 및 시스템

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100587532B1 (ko) * 2004-12-07 2006-06-08 한국전자통신연구원 스트리밍 서비스용 응용 소프트웨어 제작 장치 및 방법과네트워크 고장감내를 지원하는 소프트웨어 스트리밍서비스 제공 시스템 및 방법

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6263360B1 (en) * 1998-06-01 2001-07-17 Sri International System uses filter tree and feed handler for updating objects in a client from a server object list
EP1021045A1 (en) * 1999-01-12 2000-07-19 Deutsche Thomson-Brandt Gmbh Method for processing and apparatus for encoding audio or video frame data
JP2001046747A (ja) * 1999-08-04 2001-02-20 Square Co Ltd ビデオゲームにおける処理実行制御方法、処理実行制御プログラムを記録した記録媒体及びゲーム装置
US6950850B1 (en) * 2000-10-31 2005-09-27 International Business Machines Corporation System and method for dynamic runtime partitioning of model-view-controller applications
US6842786B1 (en) * 2001-02-09 2005-01-11 Adobe Systems Incorporated Method and apparatus for remote communication of data associated with dynamically generated type object at runtime to describe the data type
US7487206B2 (en) * 2005-07-15 2009-02-03 International Business Machines Corporation Method for providing load diffusion in data stream correlations
US8386560B2 (en) * 2008-09-08 2013-02-26 Microsoft Corporation Pipeline for network based server-side 3D image rendering
US9152401B2 (en) * 2009-05-02 2015-10-06 Citrix Systems, Inc. Methods and systems for generating and delivering an interactive application delivery store
KR101430729B1 (ko) * 2010-10-27 2014-08-14 한국전자통신연구원 소프트웨어 지원 서버 및 그 방법
KR101401380B1 (ko) * 2010-11-04 2014-05-30 한국전자통신연구원 원격 렌더링 기반의 3d 응용프로그램 실행 장치 및 그 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100587532B1 (ko) * 2004-12-07 2006-06-08 한국전자통신연구원 스트리밍 서비스용 응용 소프트웨어 제작 장치 및 방법과네트워크 고장감내를 지원하는 소프트웨어 스트리밍서비스 제공 시스템 및 방법

Also Published As

Publication number Publication date
KR20140070200A (ko) 2014-06-10
US20140156736A1 (en) 2014-06-05

Similar Documents

Publication Publication Date Title
US20190196858A1 (en) Delivering a single end user experience to a client from multiple servers
US8638336B2 (en) Methods and systems for remoting three dimensional graphical data
JP5214473B2 (ja) ハードウェアデバイスなどのリソースを有する仮想マシンの移動システム
KR101740327B1 (ko) 소프트웨어 가상화를 이용하여 소프트웨어 서비스를 제공하기 위한 장치, 시스템 및 그 방법
US8629878B2 (en) Extension to a hypervisor that utilizes graphics hardware on a host
US8150971B2 (en) Mechanism for migration of client-side virtual machine system resources
US11838335B2 (en) Virtual computing system providing local screen sharing from hosted collaboration applications and related methods
CN105122210B (zh) Gpu虚拟化的实现方法及相关装置和系统
WO2014206094A1 (zh) 一种图像更新方法、系统及装置
US20180373546A1 (en) Hybrid software and gpu encoding for ui remoting
KR20060041928A (ko) 프린트 시스템 및 방법
EP2954401B1 (en) Transmitting hardware-rendered graphical data
KR20140027741A (ko) 응용 서비스 제공 시스템 및 방법, 응용 서비스를 위한 서버 장치 및 클라이언트 장치
KR101401380B1 (ko) 원격 렌더링 기반의 3d 응용프로그램 실행 장치 및 그 방법
KR101694295B1 (ko) 소프트웨어 분할 실행을 위한 스레드 관리 장치 및 방법
JP2016212874A (ja) アプリケーションプログラムとバーチャルマシンとの間のコミュニケーションのシステムと方法
US9519493B2 (en) Populating a client device with graphical images specific to a machine
WO2009108353A1 (en) 3d graphics acceleration in remote multi-user environment
US10834164B2 (en) Virtualizing audio and video devices using synchronous A/V streaming
CN108255547B (zh) 一种应用程序控制方法及装置
KR101430729B1 (ko) 소프트웨어 지원 서버 및 그 방법
CN110795156B (zh) 移动存储器加载方法、瘦客户端、存储介质及装置
US20150113424A1 (en) Monitoring multiple remote desktops on a wireless device
US10552001B1 (en) Window switching for networked computing sessions
KR20110069443A (ko) 사용자 인터페이스 가상화에 의한 어플리케이션 서비스 시스템 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
GRNT Written decision to grant