KR20160097050A - Os들의 화면을 통합하여 표시하는 방법 및 장치 - Google Patents

Os들의 화면을 통합하여 표시하는 방법 및 장치 Download PDF

Info

Publication number
KR20160097050A
KR20160097050A KR1020150018874A KR20150018874A KR20160097050A KR 20160097050 A KR20160097050 A KR 20160097050A KR 1020150018874 A KR1020150018874 A KR 1020150018874A KR 20150018874 A KR20150018874 A KR 20150018874A KR 20160097050 A KR20160097050 A KR 20160097050A
Authority
KR
South Korea
Prior art keywords
guest
screen
host
frame buffer
texture
Prior art date
Application number
KR1020150018874A
Other languages
English (en)
Other versions
KR102282365B1 (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 KR1020150018874A priority Critical patent/KR102282365B1/ko
Priority to US14/813,262 priority patent/US9984651B2/en
Publication of KR20160097050A publication Critical patent/KR20160097050A/ko
Application granted granted Critical
Publication of KR102282365B1 publication Critical patent/KR102282365B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/003Details of a display terminal, the details relating to the control arrangement of the display terminal and to the interfaces thereto
    • G09G5/005Adapting incoming signals to the display format of the display terminal
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/37Details of the operation on graphic patterns
    • G09G5/377Details of the operation on graphic patterns for mixing or overlaying two or more graphic patterns
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/395Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
    • G09G5/397Arrangements specially adapted for transferring the contents of two or more bit-mapped memories to the screen simultaneously, e.g. for mixing or overlay
    • 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/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2320/00Control of display operating conditions
    • G09G2320/06Adjustment of display parameters
    • G09G2320/0606Manual adjustment
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2320/00Control of display operating conditions
    • G09G2320/06Adjustment of display parameters
    • G09G2320/0613The adjustment depending on the type of the information to be displayed
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/04Changes in size, position or resolution of an image
    • G09G2340/0407Resolution change, inclusive of the use of different resolutions for different screen areas
    • G09G2340/0435Change or adaptation of the frame rate of the video stream
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/12Overlay of images, i.e. displayed pixel being the result of switching between the corresponding input pixels
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2350/00Solving problems of bandwidth in display systems
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/02Graphics controller able to handle multiple formats, e.g. input or output formats
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/06Use of more than one graphics processor to process data before displaying to one or more screens
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2370/00Aspects of data communication
    • G09G2370/20Details of the management of multiple sources of image data
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/14Display of multiple viewports
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/391Resolution modifying circuits, e.g. variable screen formats

Abstract

개시된 일 실시 예에 따른 화면 통합 표시 방법은 GPU 가상화를 통한 passthrough 또는 mediated-passthrouth 환경에서 게스트 OS 및 호스트 OS가 상기 GPU를 독점 또는 공유하여 접속할 때, 상기 호스트 OS로 상기 게스트 OS의 화면을 전송하는 단계; 상기 게스트 OS의 화면을 텍스쳐로 변환하고, 변환된 텍스쳐를 상기 호스트 OS의 텍스쳐 화면과 통합하여 통합 화면을 생성하는 단계; 및 상기 통합 화면을 표시하는 단계를 포함한다.

Description

OS들의 화면을 통합하여 표시하는 방법 및 장치{Method and apparatus for displaying composition screen by composing the OS screens}
개시된 실시 예들은 전자 장치의 화면 표시 방법에 관한 것이다.
전자 장치는 다양한 OS들을 실행할 수 있다. 예를 들어, 전자 장치는 안드로이드(Android), 타이젠(Tizen), 윈도우(Windows), iOS 또는 MacOS 등을 실행할 수 있다.
전자 장치는 가상화 기반으로 OS를 실행할 수 있다. 가상화는 동일한 하드웨어를 복수의 OS들이 이용하는 환경을 나타낸다. 예를 들어, 안드로이드 및 윈도우는 가상화를 통해 GPU를 공유하여 사용할 수 있다.
개시된 일 실시 예는 OS들의 화면을 통합하여 표시하는 방법 및 장치를 제공하는데 있다.
일 실시 예에 따른 화면 통합 표시 방법은 GPU 가상화를 통한 passthrough 또는 mediated-passthrouth 환경에서 게스트 OS 및 호스트 OS가 상기 GPU를 독점 또는 공유하여 접속할 때, 상기 호스트 OS로 상기 게스트 OS의 화면을 전송하는 단계; 상기 게스트 OS의 화면을 텍스쳐로 변환하고, 변환된 텍스쳐를 상기 호스트 OS의 텍스쳐 화면과 통합하여 통합 화면을 생성하는 단계; 및 상기 통합 화면을 표시하는 단계를 포함한다.
일 실시 예에 따른 전자 장치는 GPU 가상화를 통한 passthrough 또는 mediated-passthrouth 환경에서 게스트 OS 및 호스트 OS가 상기 GPU를 독점 또는 공유하여 접속할 때, 상기 호스트 OS로 상기 게스트 OS의 화면을 전송하는 게스트 OS; 상기 게스트 OS의 화면을 텍스쳐로 변환하고, 변환된 텍스쳐를 상기 호스트 OS의 텍스쳐 화면과 통합하여 통합 화면을 생성하는 호스트 OS; 및 상기 통합 화면을 표시하는 디스플레이 장치를 포함한다.
도 1은 일 실시 예에 따른 화면 표시 방법을 설명하기 위한 개요도이다.
도 2는 일 실시 예에 따른 전자 장치의 일 예를 설명하기 위한 블록도이다.
도 3은 일 실시 예에 따른 전자 장치의 일 예를 설명하기 위한 블록도이다.
도 4는 호스트 OS로 게스트 OS의 화면을 전송하는 방법을 설명하기 위한 도면이다.
도 5는 호스트 OS로 게스트 OS의 화면을 전송하는 방법을 설명하기 위한 도면이다.
도 6은 게스트의 프레임 버퍼의 주소를 호스트 OS로 전송하는 방법을 설명하기 위한 순서도이다.
도 7은 게스트의 프레임 버퍼의 주소를 호스트 OS로 전송하는 방법을 설명하기 위한 순서도이다.
도 8은 게스트 OS의 화면을 호스트 OS의 화면과 통합하는 방법을 설명하기 위한 개요도이다.
도 9는 게스트 OS의 화면을 호스트 OS의 화면과 통합하는 방법을 설명하기 위한 개요도이다.
도 10은 통합 화면을 표시하는 일 예를 설명하기 위한 개요도이다.
도 11은 통합 화면을 표시하는 일 예를 설명하기 위한 개요도이다.
도 12는 통합 화면을 출력하는 방법을 설명하기 위한 순서도이다.
도 13은 호스트 OS가 게스트의 프레임 버퍼에 저장된 데이터를 복사하는 시점을 결정하는 일 예를 설명하기 위한 개요도이다.
도 14는 호스트 OS가 게스트의 프레임 버퍼에 저장된 데이터를 복사하는 시점을 결정하는 또 다른 일 예를 설명하기 위한 개요도이다.
도 15는 호스트 OS가 게스트의 프레임 버퍼에 저장된 데이터를 복사하는 시점을 결정하는 또 다른 일 예를 설명하기 위한 개요도이다.
도 16은 호스트 OS가 게스트의 프레임 버퍼에 저장된 데이터를 복사하는 시점을 결정하는 방법을 설명하기 위한 순서도이다. 호스트 OS는 방법1 내지 방법3을 이용하여 데이터를 복사하는 시점을 결정할 수 있다.
도 17은 일 실시 예에 따른 전자 장치가 GPU의 스케쥴링 우선순위(priority)를 결정하는 방법을 설명하기 위한 개요도이다.
도 18은 일 실시 예에 따른 전자 장치가 GPU의 스케쥴링 우선 순위를 결정하는 방법을 설명하기 위한 개요도이다.
도 19는 일 실시 예에 따른 전자 장치가 GPU의 스케쥴링 우선 순위를 결정하는 방법을 설명하기 위한 순서도이다.
도 20은 OS별 스케쥴링을 설정하는 일 예를 설명하기 위한 개요도이다.
도 21은 OS의 FPS를 조정하는 일 예를 설명하기 위한 개요도이다.
도 22는 응용에 따라 OS의 FPS를 조정하는 일 예를 설명하기 위한 개요도이다.
도 23은 응용에 따라 OS의 FPS를 조정하는 일 예를 설명하기 위한 개요도이다.
도 24는 기본 설정창을 이용하여 FPS를 설정하는 예를 설명하기 위한 개요도이다.
도 25는 스타일러스 펜을 이용하여 FPS를 설정하는 예를 설명하기 위한 개요도이다.
도 26은 손가락을 이용하여 FPS를 설정하는 예를 설명하기 위한 개요도이다.
도 27은 일 실시 예에 따른 전자 장치를 설명하기 위한 블록도이다.
도 28은 일 실시 예에 따른 화면 통합 표시 방법을 나타내는 순서도이다.
도 1은 일 실시 예에 따른 화면 표시 방법을 설명하기 위한 개요도이다. 도 1을 참조하면, 전자 장치(1000)는 안드로이드 화면(11) 및 윈도우 화면(12)을 통합하여 표시할 수 있다. 서로 다른 OS들의 화면을 통합한다는 것은 어느 하나의 OS가 다른 하나의 OS의 화면을 수신하여, 출력할 화면을 재구성한다는 것을 의미할 수 있다. 예를 들어, 안드로이드가 호스트 OS인 경우, 안드로이드는 윈도우로부터 윈도우 화면(12)을 수신하고, 수신된 윈도우 화면(12)을 안드로이드의 포맷으로 변경한다. 안드로이드는 변경된 윈도우 화면(12)이 안드로이드 화면(11)의 어느 위치에 어느 크기로 표시할 것인지를 결정하고, 결정된 위치 및 크기로 윈도우 화면(12)과 안드로이드 화면(11)을 재구성한다.
전자 장치(1000)는 서로 다른 OS를 동시에 실행할 수 있다. 예를 들어, 전자 장치(1000)는 안드로이드 및 윈도우를 동시에 실행할 수 있다. 전자 장치(1000)는 GPU를 이용하여 표시할 화면을 생성할 수 있다. 또한, 서로 다른 OS들은 GPU 가상화(GPU Virtualization)을 통해 OS들의 화면을 생성할 수 있다. GPU는 하이퍼바이저 등을 통해 복수의 OS들로부터 제어 신호 및 데이터를 수신하여 화면을 생성할 수 있다.
호스트 OS는 게스트 OS의 화면을 수신하여 호스트 OS의 화면과 통합할 수 있다. 호스트 OS는 게스트 OS의 화면을 수신하고, 호스트 OS와 통합하여 통합 화면을 생성한다. 통합 화면은 새로운 호스트 OS의 화면이 된다. 서로 다른 OS들이 동시에 화면을 표시할 수 없으므로, 어느 하나의 OS가 다른 하나의 OS를 제어할 필요가 있다. 따라서, 호스트 OS는 게스트 OS의 화면을 수신하여, 게스트 OS의 화면의 출력 형태를 결정할 수 있다. 호스트 OS와 게스트 OS는 하나의 전자 장치(1000)에서 실행될 수 있다.
전자 장치(1000)는 휴대폰, 태블릿, 웨어러블 디바이스, 카메라, 노트북, 데스크탑 등이 될 수 있다.
도 2는 일 실시 예에 따른 전자 장치의 일 예를 설명하기 위한 블록도이다. 도 2를 참조하면, 전자 장치(1000)는 호스트 OS(100), 제1 게스트 OS(200), 제2 게스트 OS(300), 하이퍼바이저(110) 및 GPU(400)를 포함한다. 도 2에서는 도시되지 않았지만, 전자 장치(1000)는 화면을 표시하는 디스플레이 장치를 더 포함한다.
호스트 OS(100), 제1 게스트 OS(200) 및 제2 게스트 OS(300)은 전자 장치(1000)에서 실행되는 OS들이다. 예를 들어, OS들(100, 200, 300)은 안드로이드, 타이젠, 윈도우, iOS 또는 MacOS 중 어느 하나일 수 있다.
호스트 OS(100)는 디스플레이 장치를 제어하여 통합 화면을 표시할 수 있다. 호스트 OS(100)는 제1 게스트 OS(200) 또는 제2 게스트 OS(300)의 화면을 호스트 OS(100)의 화면에 통합하여 통합 화면을 표시할 수 있다.
호스트 OS(100)는 제1 또는 제2 게스트 OS(200,300)로부터 수신된 화면을 호스트 OS(100)의 화면과 통합하여 통합 화면을 생성 및 출력한다. 제1 및 제2 게스트 OS들(200, 300)는 화면을 직접 출력할 수 없기 때문에, 호스트 OS(100)를 이용하여 화면을 출력한다. 따라서, 제1 및 제2 게스트 OS들(200, 300)은 화면을 호스트 OS(100)로 전송하거나, 호스트 OS(100)가 제1 및 제2 게스트 OS들(200, 300)의 화면을 게스트의 프레임 버퍼로부터 독출할 수 있다. 호스트 OS(100)는 제1 및 제2 게스트 OS들(200, 300)의 화면의 크기, 위치 및 형태 등을 결정하고, 호스트 OS(100)의 화면과 통합한다.
호스트 OS(100)는 제1 및 제2 게스트 OS들(200, 300)의 화면의 포맷을 변경하여 호스트 OS(100)의 화면과 통합할 수 있다. 제1 및 제2 게스트 OS들(200, 300)에서 생성된 화면과 호스트 OS(100)에서 생성된 화면은 포맷이 서로 다를 수 있다. 따라서, 호스트 OS(100)는 제1 및 제2 게스트 OS들(200, 300)의 화면의 포맷을 호스트 OS(100)의 포맷과 동일하게 변경한다.
하이퍼바이저(hypervisor, 110)는 OS들(100, 200, 300)이 하드웨어를 이용할 수 있는 가상 환경을 제공한다. 예를 들어, 하이퍼바이저(110)는 OS들(100, 200, 300)이 GPU(400)를 이용하여 화면을 생성하는 가상 환경을 제공한다. 다시 말해서, OS들(100, 200, 300)은 하이퍼바이저(110)를 통해 GPU(400)를 공유 및 사용한다.
도 2는 하이퍼바이저(110)가 타입2인 경우의 예를 나타낸다. 따라서, 하이퍼바이저(110)는 호스트 OS(100)에 포함될 수 있다.
GPU(400)는 화면을 생성한다. GPU(400)는 그래픽 처리 장치(Graphic Processing Unit)로써, OS들(100, 200, 300)의 지시에 따라 화면을 생성하고, 생성된 화면을 디스플레이 장치로 출력할 수 있다.
도 3은 일 실시 예에 따른 전자 장치의 일 예를 설명하기 위한 블록도이다. 도 3은 하이퍼바이저(600)가 타입2인 경우의 예를 나타낸다. 타입2의 경우, 하이퍼바이저(600)는 제1 내지 제3 게스트 OS들(200, 300, 500)과 별도로 구현될 수 있다. 타입 2의 경우, 전자 장치(1000)는 호스트 OS(100)가 없이 모두 게스트 OS들(200, 300, 500)만 포함한다. 하이퍼바이저(600)의 구현 형태만 상이할 뿐, 도 3의 각 구성들은 도2의 각 구성들과 동일한 기능을 수행한다.
도 4는 호스트 OS로 게스트 OS의 화면을 전송하는 방법을 설명하기 위한 도면이다. 도 4를 참조하면, 호스트 OS(100)는 GPU 드라이버(120)를 포함하고, 제1 게스트 OS(200)는 GPU 드라이버(210)를 포함하고, 제2 게스트 OS(300)는 GPU 드라이버(310)를 포함한다. 하이퍼바이저(110)는 vGPUs(111, 112) 및 vGPU Mediation 모듈(113)을 포함한다. GPU(400)는 제1 및 제2 GPU(410, 420)을 포함한다. 실선은 mediated access를 나타내고, 점선은 passthrough access를 나타낸다. Mediated access는 간접적으로 하드웨어에 접속하는 과정이며, passthrough access는 직접적으로 하드웨어에 접속하는 과정을 나타낸다.
호스트 OS(100)의 GPU 드라이버(120)는 제1 GPU(410)와 passthrough access 하거나, vGPU(111) 및 vGPU Mediation 모듈(113)을 통해 제1 GPU(410)와 mediated access 할 수 있다. GPU 드라이버(120)는 vGPU(111)로 제어 신호를 출력한다. 제어 신호는 호스트 OS(100)의 화면의 생성에 관한 신호일 수 있다. vGPU(111)는 vGPU Mediation 모듈(113)로 제어 신호를 출력한다. GPU 드라이버(120)는 제1 GPU(410)로 데이터를 직접 전송할 수 있다. 예를 들어, 데이터는 제어 신호와 달리 호스트 OS(100)의 화면의 내용을 나타낼 수 있으며, 용량이 큰 데이터일 수 있다.
제1 게스트 OS(200)의 GPU 드라이버(210)는 제1 GPU(410)와 passthrough access 하거나, vGPU(112) 및 Mediation 모듈(113)을 통해 제1 GPU(410)와 mediated access 할 수 있다. GPU 드라이버(210)는 vGPU(112)로 제어 신호를 출력한다. 제어 신호는 제1 게스트 OS(200)의 화면의 생성에 관한 신호일 수 있다. vGPU(112)는 vGPU Mediation 모듈(113)로 제어 신호를 출력한다. vGPU(112)는 제1 게스트 OS(200)가 프레임 버퍼 레지스터(Framebuffer register)에 접속할 때, 호스트 OS(100)로 제1 게스트 OS(200)가 접속하는 게스트의 프레임 버퍼의 주소를 전송할 수 있다. 또는, GPU 드라이버(210)가 게스트의 프레임 버퍼의 주소를 직접 호스트 OS(100)로 전송할 수 있다. 또는, GPU 드라이버(210)는 호스트 OS(100)의 커널(kernel)의 프록시(proxy) 모듈을 통해 게스트의 프레임 버퍼의 주소를 호스트 OS(100)로 전송할 수 있다. GPU 드라이버(210)는 제1 GPU(410)로 데이터를 직접 전송할 수 있다.
vGPU Mediation 모듈(113)은 제1 GPU(410)의 스케줄을 관리한다. vGPU Mediation 모듈(113)은 vGPU(111) 및 vGPU(112)로부터 제어 신호를 수신하기 때문에, 처리 순서를 결정하여 제1 GPU(410)를 제어한다.
제2 게스트 OS(300)의 GPU 드라이버(310)는 제2 GPU(420)에 passthrough access 하며, 특히 제2 GPU(420)는 GPU 드라이버(310)만이 이용할 수 있는 전용 GPU이다. 따라서, GPU 드라이버(310)은 게스트의 프레임 버퍼의 주소를 직접 호스트 OS(100)로 전송하거나, 호스트 OS(100)의 커널(kernel)의 프록시(proxy) 모듈을 통해 게스트의 프레임 버퍼의 주소를 호스트 OS(100)로 전송할 수 있다.
도 5는 호스트 OS로 게스트 OS의 화면을 전송하는 방법을 설명하기 위한 도면이다. 도 5를 참조하면, 호스트 OS(100)는 GSC 모듈(130)을 더 포함하고, 제2 게스트 OS(300)는 FB 포인터 획득 모듈(320)을 더 포함한다. 하이퍼바이저(110)는 FB 포인터 획득 모듈(115) 및 FB 포인터 획득 프록시 모듈(114)를 더 포함한다.
GSC 모듈(130)은 제1 게스트 OS(200)의 화면 또는 제2 게스트 OS(300)의 화면을 호스트 OS(100)의 화면과 통합하는 모듈이다. GSC 모듈(130)은 FB 포인터 획득 모듈(115)로부터 제1 게스트 OS(200)의 화면 또는 제2 게스트 OS(300)의 화면을 저장하고 있는 게스트의 프레임 버퍼의 주소를 수신한다. GSC 모듈(130)은 수신된 주소에 저장된 데이터를 이용하여 호스트 OS(100)의 화면과 제1 게스트 OS(200)의 화면 또는 제2 게스트 OS(300)의 화면을 통합한다.
FB 포인터 획득 모듈(115)은 게스트의 프레임 버퍼의 포인터를 획득한다. FB 포인터 획득 모듈(115)은 GPU 드라이버(310)가 제2 GPU(420)에 접속할 때, GPU 드라이버(310)가 접속하는 게스트의 프레임 버퍼의 포인터를 획득하고, 획득된 포인터를 GSC 모듈(130)로 전송한다.
제2 게스트 OS(300)의 FB 포인터 획득 모듈(320)은 GPU 드라이버(310)가 제2 GPU(420)에 접속할 때, GPU 드라이버(310)가 접속하는 게스트의 프레임 버퍼의 포인터를 획득하고, 획득된 포인터를 FB 포인터 획득 프록시 모듈(114)로 전송한다.
FB 포인터 획득 프록시 모듈(114)은 획득된 포인터를 GSC 모듈(130)로 전송한다.
vGPU Mediation 모듈(113)은 제1 게스트 OS(200)의 GPU 드라이버(210)이 접속하는 게스트의 프레임 버퍼의 포인터를 Hooking하여 FB 포인터 획득 모듈(115)로 전송한다. FB 포인터 획득 모듈(115)은 수신된 포인터를 GSC 모듈로 전송한다.
도 6은 게스트의 프레임 버퍼의 주소를 호스트 OS로 전송하는 방법을 설명하기 위한 순서도이다. 단계 610에서, 제1 게스트 OS(200)는 게스트의 프레임 버퍼의 주소를 프레임 버퍼 레지스터에 저장한다.
단계 620에서, 호스트 OS(100)의 vGPU(111)는 제1 게스트 OS(200)가 프레임 버퍼 레지스터에 접속하는 것을 Hooking을 통해 게스트의 프레임 버퍼의 주소를 획득한다.
단계 630에서, vGPU(111)는 호스트(100)의 GSC 모듈(130)로 획득된 게스트의 프레임 버퍼의 주소를 전송한다.
도 7은 게스트의 프레임 버퍼의 주소를 호스트 OS로 전송하는 방법을 설명하기 위한 순서도이다. 단계 710에서, 제2 게스트 OS(300)의 GPU 드라이버(310)는 게스트의 프레임 버퍼의 주소를 획득한다. GPU 드라이버(310)는 제2 게스트 OS(300)에서 게스트의 프레임 버퍼에 접속할 때, 접속하는 게스트의 프레임 버퍼의 주소를 획득한다.
GPU 드라이버(310)는 게스트의 프레임 버퍼의 주소를 호스트 커널의 FB 포인터 획득 프록시 모듈(114)로 전송한다.
FB 포인터 획득 프록시 모듈(114)은 게스트의 프레임 버퍼의 주소를 GSC 모듈(130)로 전송한다.
도 8은 게스트 OS의 화면을 호스트 OS의 화면과 통합하는 방법을 설명하기 위한 개요도이다. 도 8을 참조하면, 호스트 OS(100)는 그래픽스 메모리(600)의 게스트의 프레임 버퍼(611)의 주소를 통해 게스트의 프레임 버퍼(611)에 저장된 제1 게스트 OS(200)의 화면을 호스트 OS(100)의 화면과 통합할 수 있다. 전자 장치(1000)는 게스트의 프레임 버퍼(611)의 주소의 맵핑을 이용하여 통합 화면을 생성할 수 있다.
그래픽스 메모리(600)는 호스트 영역(620) 및 게스트 영역(610)을 포함한다. 호스트 영역(620)은 호스트 OS(100)의 화면을 저장하는 영역이고, 게스트 영역(610)은 제1 게스트 OS(200)의 화면을 저장하는 영역이다. 게스트의 프레임 버퍼(611)은 제1 게스트 OS(200)의 화면이 저장된 영역의 일 예이다.
호스트 OS(100)는 Compositor(140), 그래픽스 스택(150) 및 커널 GPU 드라이버(160)을 포함한다. Compositor(140)는 FB 텍스쳐 생성 모듈(141) 및 게스트 화면 획득 모듈(142)를 포함한다. 그래픽스 스택(150)은 호스트 UX 텍스쳐(151) 및 텍스쳐(152)를 포함한다. 커널 GPU 드라이버(160)은 GMA Allocator(161)을 포함한다.
제1 게스트 OS(200)의 GPU 드라이버(210)는 그래픽스 메모리(600)의 게스트의 프레임 버퍼(611)에 접속한다. 게스트의 프레임 버퍼(611)에는 제1 게스트 OS(200)의 화면이 저장되어 있다. GPU 드라이버(210)는 게스트의 프레임 버퍼(611)의 주소를 게스트 화면 획득 모듈(142)로 전송한다. 게스트 화면 획득 모듈(142)는 수신된 주소를 FB 텍스쳐 생성 모듈(141)로 전송한다.
FB 텍스쳐 생성 모듈(141)은 맵핑을 통해 게스트의 프레임 버퍼(611)에 저장된 화면을 텍스쳐로 생성한다. 다시 말해서, FB 텍스쳐 생성 모듈(141)은 게스트의 프레임 버퍼(611)의 주소에 저장된 데이터를 제1 게스트 OS(200)의 화면의 텍스쳐로 지정할 수 있다. FB 텍스쳐 생성 모듈(141)은 생성된 텍스쳐를 텍스쳐 모듈(152)로 전송한다. 텍스쳐 모듈(152)은 수신된 텍스쳐를 관리한다. 호스트 UX 텍스쳐 모듈(151)은 호스트 OS(100)의 화면을 관리한다.
GMA Allocator(161)는 게스트의 프레임 버퍼의 주소를 메모리로 갖는 텍스쳐 오브젝트를 할당한다. 텍스쳐 오브젝트는 오브젝트가 존재하기 위한 메모리 공간을 나타낸다. 다시 말해서, GMA Allocator(161)는 제1 게스트 OS(200)의 화면이 저장된 게스트의 프레임 버퍼(611)의 주소를 할당한다. 할당된 주소는 GPU(400)로 전송된다.
GPU(400)는 텍스쳐 바인딩 테이블(460), 버텍스 쉐이더(470), 픽셀 쉐이더(480) 및 Blitter(490)를 포함한다. GPU(400)는 출력할 통합 화면을 생성한다. GPU(400)는 호스트 OS(100)의 화면과 게스트의 프레임 버퍼(611)에 저장된 제1 게스트 OS(200)의 화면을 통합하여 통합 화면을 생성하고, 생성된 통합 화면을 디스플레이 장치로 출력한다.
프레임 텍스쳐 바인딩 테이블(460)은 텍스쳐의 포맷 정보를 제어한다. 만약 게스트의 프레임 버퍼(611)의 포맷과 호스트 OS(100)의 텍스쳐 포맷이 상이한 경우, 프레임 텍츠쳐 바인딩 테이블(460)은 제1 게스트 OS(200)의 화면에 대한 텍스쳐를 호스트 OS(100)의 텍스쳐와 동일한 포맷으로 변경한다.
도 9는 게스트 OS의 화면을 호스트 OS의 화면과 통합하는 방법을 설명하기 위한 개요도이다. 도 9를 참조하면, 전자 장치(1000)는 게스트의 프레임 버퍼(611)에 저장된 데이터를 복사를 통해 통합 화면을 생성할 수 있다. 도 9에 도시된 실시 예는 도 8의 실시 예와 달리 단순히 주소만을 이용하는 것이 아닌, 데이터를 복사 및 붙여 넣기 하여 통합 화면을 생성한다.
호스트의 프레임 버퍼(621)는 게스트의 프레임 버퍼(611)에 저장된 데이터가 복사되어 저장된 영역을 나타낸다. 호스트의 프레임 버퍼(621)는 호스트 영역(610)에 포함된다. FB 텍스쳐 생성 모듈(141)은 게스트 화면 획득 모듈(142)으로부터 획득된 데이터를 복사하여 호스트의 프레임 버퍼(621)로 붙여 넣는다. FB 텍스쳐 생성 모듈(141)는 데이터의 포맷을 변경하여 붙여 넣을 수 있다. 따라서, 텍스쳐 바인딩 테이블(460)은 호스트의 프레임 버퍼(621)에 저장된 데이터를 이용하여 통합 화면을 생성한다.
도 10은 통합 화면을 표시하는 일 예를 설명하기 위한 개요도이다. 도 10을 참조하면, 전자 장치(1000)는 안드로이드 화면(11)과 윈도우 화면(12)을 겹치게 표시할 수 있다. 도 10의 경우, 안드로이드가 호스트 OS이고, 윈도우가 게스트 OS일 수 있다. 따라서, 안드로이드 화면(11)은 Full-Window로 표시되고, 윈도우 화면(12)은 Sub-Window로 표시된다. 윈도우 화면(12)은 안드로이드 화면(11) 위에 표시될 수 있다.
전자 장치(1000)는 안드로이드 화면(11)의 일부 영역을 윈도우 화면(12)에 할당할 수 있다. 전자 장치(1000)는 윈도우로부터 윈도우 화면(12)을 수신하고, 윈도우 화면(12)의 포맷을 안드로이드 화면(11)의 포맷과 일치 시킨다. 전자 장치(1000)는 윈도우 화면(12)을 안드로이드 화면(11)의 어느 영역에 표시할 것인지를 결정한다. 다시 말해서, 전자 장치(1000)는 전체 화면의 어느 위치에 어느 크기로 윈도우 화면(12)을 표시할 것인지를 결정한다. 전자 장치(1000)는 결정된 영역에 윈도우 화면(12)을 배치하고, 안드로이드 화면(11)과 통합하여 통합 화면을 출력한다.
도 11은 통합 화면을 표시하는 일 예를 설명하기 위한 개요도이다. 도 11을 참조하면, 전자 장치(1000)는 윈도우 화면(12)과 Notification-bar(13)를 함께 표시할 수 있다. 도 10의 경우, 윈도우가 호스트 OS이고, 안드로이드가 게스트 OS일 수 잇다. 따라서, 윈도우 화면(12)은 Full-Window로 표시되고, Notification-bar(13)는 윈도우 화면(12)의 일부 영역에 표시된다. Notification-bar(13)는 안드로이드에서 사용하는 설정 윈도우를 나타낸다. Notification-bar(13)는 사용자의 조작에 의해 화면에서 사라지거나 나타날 수 있다.
도 12는 통합 화면을 출력하는 방법을 설명하기 위한 순서도이다. 도 12를 참조하면, 전자 장치(1000)는 호스트 OS와 게스트 OS의 화면 포맷을 일치시켜 통합 화면을 표시할 수 있다.
단계 1210에서, GSC 모듈(130)은 게스트의 프레임 버퍼의 주소를 기반으로 한 텍스쳐 생성 요청을 GPU 드라이버(120)로 전송한다.
단계 1220에서, GMA Allocator(161)는 게스트의 프레임 버퍼의 주소를 메모리로 갖는 텍스쳐 오브젝트를 할당한다.
단계 1230에서, GPU 드라이버(120)는 생성된 텍스쳐 오브젝트를 GPU(400)로 출력한다.
단계 1240에서, GPU(400)는 게스트 게스트의 프레임 버퍼의 포맷이 호스트 텍스쳐의 포맷과 다른지 판단한다. 포맷이 다르면 단계 1260으로 진행하고, 포맷이 같으면 단계 1250으로 진행한다.
단계 1250에서, GPU(400)는 게스트 OS의 화면과 호스트 OS의 화면을 통합하여, 통합 화면을 생성하고, 생성된 통합 화면을 디스플레이 장치로 출력한다.
단계 1260에서, vGPU의 format correction 모듈은 게스트 OS의 텍스쳐의 포맷을 게스트의 프레임 버퍼의 포맷으로 변경하거나, 게스트 OS의 텍스쳐의 포맷을 호스트 텍스쳐의 포맷으로 변경한다.
도 13은 호스트 OS가 게스트의 프레임 버퍼에 저장된 데이터를 복사하는 시점을 결정하는 일 예를 설명하기 위한 개요도이다. 도 13을 참조하면, 호스트 OS(100)는 제1 게스트 OS(200)로부터 신호를 수신한 이후에 게스트의 프레임 버퍼(611)에 저장된 데이터를 복사할 수 있다. 게스트의 프레임 버퍼(611)에 전체 데이터가 저장되기 이전에 데이터를 복사하게 되면 화면이 Tearing 될 수 있으므로, 호스트 OS(100)는 프레임 버퍼 완료 신호를 수신한 이후에 게스트의 프레임 버퍼(611)에 저장된 데이터를 복사한다.
Step1: 제1 게스트 OS(200)는 프레임 버퍼 완료 신호를 Sync event 처리 모듈(116)로 전송한다. 제1 게스트 OS(200)는 완성된 화면이 게스트의 프레임 버퍼(611)에 모두 저장된 후에 프레임 버퍼 완료 신호를 Sync event 처리 모듈(116)로 전송한다.
Step2: Sync event 처리 모듈(116)은 게스트 화면 획득 모듈(142)로 프레임 버퍼 완료 신호를 전송한다.
Step3: 게스트 화면 획득 모듈(142)은 프레임 버퍼 완료 신호를 수신한 이후에 게스트의 프레임 버퍼(611)에 저장된 데이터를 복사한다.
Step1 내지 Step3을 게스트의 프레임 버퍼(611)에 저장된 후 데이터가 복사되므로, FB 텍스쳐 생성 모듈(141)에 복사되는 데이터의 Tearing을 방지할 수 있다.
도 14는 호스트 OS가 게스트의 프레임 버퍼에 저장된 데이터를 복사하는 시점을 결정하는 또 다른 일 예를 설명하기 위한 개요도이다. 도 14를 참조하면, 호스트 OS(100)는 제1 게스트 OS(200)로부터 신호를 수신한 이후에 게스트의 프레임 버퍼(611)에 저장된 데이터를 복사할 수 있다.
Step1: 하이퍼바이저(110)는 그래픽스 메모리(600)를 모니터링한다. 하이퍼바이저(110)는 제1 게스트 OS(200)에서 화면 출력과 관련된 동작을 관찰한다. 예를 들어, 하이퍼바이저(110)는 특정 Register를 모니터링할 수 있다.
Step2: Sync event 처리 모듈(116)은 게스트 화면 획득 모듈(142)로 프레임 버퍼 완료 신호를 전송한다. 하이퍼바이저(110)는 제1 게스트 OS(200)가 화면 출력과 관련된 동작을 수행할 때, 프레임 버퍼 완료 신호를 게스트 화면 획득 모듈(142)로 전송한다.
Step3: 게스트 화면 획득 모듈(142)은 프레임 버퍼 완료 신호를 수신한 이후에 게스트의 프레임 버퍼(611)에 저장된 데이터를 복사한다.
도 15는 호스트 OS가 게스트의 프레임 버퍼(611)에 저장된 데이터를 복사하는 시점을 결정하는 또 다른 일 예를 설명하기 위한 개요도이다. 도 15를 참조하면, 호스트 OS(100)는 타이머에 기초하여 게스트의 프레임 버퍼(611)에 저장된 데이터를 복사할 수 있다.
Step1: 타이머는 미리 설정된 시간마다 신호를 생성하여 하이퍼바이저(110)로 전송한다.
Step2: 하이퍼바이저(110)는 타이머에 의해 미리 설정된 시간마다 프레임 버퍼 완료 신호를 게스트 화면 획득 모듈(142)로 전송한다. FPS(Frame per Second)에 따라 시간은 설정될 수 있다. 예를 들어, 30FPS의 경우, 하이퍼바이저(110)는 33ms마다 프레임 버퍼 완료 신호를 게스트 화면 획득 모듈(142)로 전송한다.
Step3: 게스트 화면 획득 모듈(142)은 프레임 버퍼 완료 신호를 수신한 이후에 게스트의 프레임 버퍼(611)에 저장된 데이터를 복사한다.
도 16은 호스트 OS가 게스트의 프레임 버퍼에 저장된 데이터를 복사하는 시점을 결정하는 방법을 설명하기 위한 순서도이다. 호스트 OS(100)는 방법1 내지 방법3을 이용하여 데이터를 복사하는 시점을 결정할 수 있다.
방법1은 도 13에서 설명된 방법으로, 제1 게스트 OS(200)가 직접 프레임 버퍼 완료 신호를 생성하여 하이퍼바이저(110)로 전송하는 방법이다. 하이퍼바이저(100)는 제1 게스트 OS(200)로부터 프레임 버퍼 완료 신호를 수신하면, 게스트 화면 획득 모듈(142)로 프레임 버퍼 완료 신호를 전송한다.
방법2는 도 14에서 설명된 방법으로, 하이퍼바이저(110)가 제1 게스트 OS(200)의 GPU 드라이버(210)의 레지스터 접속을 확인하고, 프레임 버퍼 완료 신호를 게스트 화면 획득 모듈(142)로 전송한다.
방법3은 도 15에서 설명된 방법으로, 타이머의 신호에 기초하여 하이퍼바이저(110)가 프레임 버퍼 완료 신호를 게스트 화면 획득 모듈(142)로 전송한다.
단계 1610에서, 호스트 OS(100)는 게스트의 프레임 버퍼(611)에 저장된 데이터를 복사하거나 게스트의 프레임 버퍼(611)의 주소의 맵핑을 수행하기 위한 준비를 한다.
단계 1620에서, 호스트 OS(100)는 제1 게스트 OS(200)가 게스트의 프레임 버퍼(611)에 데이터를 모두 저장하였는지 판단한다. 만약 게스트의 프레임 버퍼(611)에 데이터가 모두 저장되어 있으면 단계 1630으로 진행하고, 그렇지 않으면 단계 1640으로 진행한다.
단계 1630에서, 호스트 OS(100)는 게스트의 프레임 버퍼(611)에 저장된 데이터를 복사하거나 게스트의 프레임 버퍼(611)의 주소의 맵핑을 수행한다.
단계 1640에서, 호스트 OS(100)는 프레임 버퍼 완료 신호를 수신할 때까지 대기한다. 호스트 OS(100)는 제1 게스트 OS(200) 또는 하이퍼바이저(110)로부터 프레임 버퍼 완료 신호를 수신할 수 있다. 호스트 OS(100)는 방법1 내지 방법3에 따라 프레임 버퍼 완료 신호를 수신할 수 있다.
도 17은 일 실시 예에 따른 전자 장치가 GPU의 스케쥴링 우선순위(priority)를 결정하는 방법을 설명하기 위한 개요도이다. 도 17을 참조하면, 전자 장치(2000)는 목표 FPS 및 현재 FPS를 비교하여 응용(application)의 FPS를 조정할 수 있다.
호스트 OS(2100)는 그래픽스 어플리케이션(2110), 응용별 목표 FPS 입력 모듈(2120), 응용 모니터링 모듈(2130) 및 GPU 드라이버(2140)를 포함한다. 게스트 OS(2200)는 그래픽스 어플리케이션(2210), 응용 모니터링 모듈(2220) 및 GPU 드라이버(2230)를 포함한다. 하이퍼바이저(2300)는 스케쥴링 Priority 설정 모듈(2340)을 포함한다.
그래픽스 어플리케이션(2110)은 그래픽의 표시를 동반하는 어플리케이션이다. 따라서, 그래픽스 어플리케이션(2110)은 처리 결과를 디스플레이 장치를 통해 출력한다.
응용별 목표 FPS 입력 모듈(2120)은 사용자로부터 응용별 목표 FPS를 입력 받을 수 있다. 사용자는 응용마다 목표 FPS를 입력할 수 있다. 예를 들어, 동영상을 재생하는 응용의 목표 FPS는 높게 설정될 수 있고, 웹 브라우저를 제공하는 응용의 목표 FPS는 상대적으로 낮게 설정될 수 있다.
응용 모니터링 모듈들(2139, 2220)은 현재 실행 중인 응용의 현재 FPS를 모니터링한다. 응용 모니터링 모듈(2130)은 현재 FPS를 스케쥴링 Priority 설정 모듈(2340)로 전송한다.
스케쥴링 Priority 설정 모듈(2340)은 응용의 목표 FPS 응용의 현재 FPS를 비교하여 응용의 현재 FPS를 조정한다. 만약 스케쥴링 Priority 설정 모듈(2340)은 목표 FPS가 현재 FPS보다 낮은 응용의 경우, 응용의 우선 순위를 낮춘다. 반대로, 스케쥴링 Priority 설정 모듈(2340)은 목표 FPS가 현재 FPS보다 높은 응용의 경우, 응용의 우선 순위를 높인다. 다시 말해서, 스케쥴링 Priority 설정 모듈(2340)은 응용들의 FPS를 조정하여 실행중인 응용의 현재 FPS가 목표 FPS에 근접하도록 응용들의 우선 순위를 결정할 수 있다. 우선 순위는 복수의 응용들 중에서 어느 응용에 대한 그래픽을 우선하여 처리할 것인지를 의미한다.
도 18은 일 실시 예에 따른 전자 장치가 GPU의 스케쥴링 우선 순위를 결정하는 방법을 설명하기 위한 개요도이다. 도 18을 참조하면, 전자 장치(2000)는 OS별 목표 FPS에 따라 OS들의 우선 순위를 결정하여 OS들의 FPS를 조정할 수 있다.
OS별 FPS 요구 사항 입력 모듈들(2150, 2240)은 사용자로부터 OS별 목표 FPS를 수신한다. 사용자는 OS마다 목표 FPS를 입력할 수 있다.
스케쥴링 Priority 설정 모듈(2340)은 실행중인 OS들의 목표 FPS와 현재 FPS를 비교한다. 만약 스케쥴링 Priority 설정 모듈(2340)은 목표 FPS가 현재 FPS보다 낮은 OS의 경우, OS의 우선 순위를 낮춘다. 반대로, 스케쥴링 Priority 설정 모듈(2340)은 목표 FPS가 현재 FPS보다 높은 OS의 경우, OS의 우선 순위를 높인다. 다시 말해서, 스케쥴링 Priority 설정 모듈(2340)은 OS들의 FPS를 조정하여 실행중인 OS들의 현재 FPS가 목표 FPS에 근접하도록 OS들의 우선 순위를 결정할 수 있다.
도 19는 일 실시 예에 따른 전자 장치가 GPU의 스케쥴링 우선 순위를 결정하는 방법을 설명하기 위한 순서도이다.
단계 1910에서, 전자 장치(2000)는 사용자 입력 혹은 응용들의 요구사항으로부터 OS의 목표 FPS를 획득한다. 사용자는 OS마다 목표 FPS를 각각 입력할 수 있다. 응용들은 요구사항이 서로 다르다. 따라서, 전자 장치(2000)는 응용들의 요구사항에 기초하여 OS의 목표 FPS를 설정할 수 있다. 예를 들어, 동영상을 재생하는 응용 또는 게임을 실행하는 응용은 높은 FPS를 요구할 수 있다. 따라서, 전자 장치(2000)는 OS가 어떠한 응용을 실행하는지에 따라 목표 FPS를 설정할 수 있다.
단계 1920에서, 전자 장치(2000)는 FPS 모니터링을 통해 OS의 현재 FPS를 획득한다.
단계 1930에서, 전자 장치(2000)는 OS의 목표 FPS가 OS의 현재 FPS보다 더 낮은지 판단한다. 만약 목표 FPS가 현재 FPS보다 낮으면 단계 1950으로 진행하고, 그렇지 않으면 단계 1940으로 진행한다.
단계 1940에서, 전자 장치(2000)는 OS의 GPU 스케줄링 우선 순위를 증가시킨다.
단계 1950에서, 전자 장치(2000)는 OS의 GPU 스케줄링 우선 순위를 감소시킨다.
전자 장치(2000)는 사용자의 입력 또는 OS에서 실행되는 응용의 요구사항에 따라 목표 FPS를 결정할 수 있으며, 결정된 FPS와 현재 FPS를 비교하여, OS들의 GPU 스케쥴링 우선 순위를 조정할 수 있다.
도 20은 OS별 스케쥴링을 설정하는 일 예를 설명하기 위한 개요도이다. 도 20을 참조하면, 전자 장치(2000)는 실행 가능한 OS들(2510 내지 2530)의 목록을 제시하고, 사용자로부터 OS들의 GPU 성능에 관한 입력을 수신할 수 있다. 전자 장치(2000)는 사용자의 입력에 기초하여 OS들(2510 내지 2530)의 GPU 스케쥴링 우선 순위를 결정한다.
전자 장치(2000)는 그래픽 처리 속도 설정 UI(2500)을 표시한다. 그래픽 처리 속도 설정 UI(2500)은 전자 장치(2000)가 실행 가능한 OS들(2510 내지 2530)을 표시한다. 사용자가 OS들(2510 내지 2530)을 터치하면, 전자 장치(2000)는 GPU 성능 UI(2540)을 표시한다. 사용자가 GPU 성능 UI(2540)에서 상, 중, 하 중 어느 하나를 선택하면, 전자 장치(2000)는 OS의 스케쥴링 우선 순위를 사용자의 선택에 기초하여 조정한다.
도 20은 제1 OS(2510)는 GPU 성능이 상으로 설정되고, 제2 OS(2520)는 GPU 성능이 중으로 설정되고, 제3 OS(2530)은 GPU 성능이 하로 설정되는 예를 도시하고 있다. 제1 내지 제3 OS들(2510 내지 2530)의 GPU 성능은 사용자의 조작에 의해 변경될 수 있다.
도 21은 OS의 FPS를 조정하는 일 예를 설명하기 위한 개요도이다. 도 21을 참조하면, 전자 장치(2000)는 UI(2700)을 사용자에게 제공하여 FPS를 조정할 수 있다. 전자 장치(2000)는 가상 키보드와 같은 UI(2700)을 표시하고, 사용자로부터 입력을 받는다. 전자 장치(2000)는 사용자가 위쪽 화살표를 터치하면 FPS를 증가시키고, 아래쪽 화살표를 터치하면 FPS를 감소시킨다.
도 22는 응용에 따라 OS의 FPS를 조정하는 일 예를 설명하기 위한 개요도이다. 도 22를 참조하면, 전자 장치(2000)는 UI(2800)을 사용자에게 제공하여 FPS를 조정할 수 있다. 전자 장치(2000)는 GPU 성능을 향상시킬 필요가 있는 응용을 선택하는 화면을 UI(2800)로 표시하고, 사용자로부터 입력을 받는다. 전자 장치(2000)는 사용자가 선택한 응용을 실행하는 OS의 FPS를 증가시킬 수 있다. 예를 들어, 사용자가 Media Player의 체크 박스(2810)을 체크하고, Game1의 체크 박스(2820)를 체크하고, Web Browser의 체크 박스(2830)은 체크하지 않은 경우를 설명한다. 이 경우, 전자 장치(2000)는 Media Player 및 Game1을 실행하고 있는 OS의 FPS를 다른 OS보다 증가시킬 수 있다.
도 23은 응용에 따라 OS의 FPS를 조정하는 일 예를 설명하기 위한 개요도이다. 도 23을 참조하면, 제2 OS(2920)은 미디어 플레이어(2921)을 실행하고 있으며, 도 22에서와 같이 미디어 플레이어(2921)이 GPU 성능을 향상시킬 필요가 있는 응용으로 선택된 경우를 예를 들어 설명한다. 이 경우, 전자 장치(2000)는 미디어 플레이어(2921)을 실행하고 있는 제2 OS(2920)의 FPS를 제1 OS(2910)의 FPS보다 높일 수 있다.
도 24는 기본 설정창을 이용하여 FPS를 설정하는 예를 설명하기 위한 개요도이다. 도 24를 참조하면, 전자 장치(2000)는 기본 설정창에 FPS의 설정과 관련된 항목을 제공할 수 있다.
전자 장치(2000)는 GPU 스케쥴링 최소 요구 FPS를 설정하기 위한 항목을 제공할 수 있다. 도 24의 경우, 호스트 OS의 최소 FPS는 30, 게스트 OS1의 최소 FPS는 15, 게스트 OS2의 최소 FPS는 ANY로 설정된 경우를 도시한다.
전자 장치(2000)는 GPU 스케쥴링 weight factor를 설정하기 위한 항목을 제공할 수 있다. 도 24의 경우, 호스트OS는 자동 설정, 게스트 OS1은 30 고정, 게스트 OS2는 15 고정으로 설정된 경우를 도시한다.
사용자는 전자 장치(2000)에 의해 항목들이 표시되면, 터치, 가상 키보드, 음성, 제츠쳐 등의 입력 수단을 이용하여 설정값들을 변경할 수 있다.
도 25는 스타일러스 펜을 이용하여 FPS를 설정하는 예를 설명하기 위한 개요도이다. 도 25를 참조하면, 전자 장치(2000)는 스타일러스 펜의 동작을 감지하고, 팝업창을 표시할 수 있다. 예를 들어, 사용자가 스타일러스 펜을 Long-press, touch 또는 tapping하는 경우 전자 장치는 팝업창을 표시할 수 있다. 팝업창이 표시되면, 사용자는 호스트 OS 및 게스트 OS의 FPS를 설정할 수 있다.
도 26은 손가락을 이용하여 FPS를 설정하는 예를 설명하기 위한 개요도이다. 도 26을 참조하면, 전자 장치(2000)는 사용자의 손가락의 동작을 감지하고, 팝업창을 표시할 수 있다. 예를 들어, 사용자가 손가락을 Long-press, touch 또는 tapping하는 경우 전자 장치는 팝업창을 표시할 수 있다. 팝업창이 표시되면, 사용자는 호스트 OS 및 게스트 OS의 FPS를 설정할 수 있다.
도 27은 일 실시 예에 따른 전자 장치를 설명하기 위한 블록도이다. 전자 장치(3000)는 프로세서(3100), GPU(3200) 및 디스플레이 장치(3300)를 포함한다. 전자 장치(3000)는 복수의OS들의 화면을 통합하여 표시하거나, 복수의 OS들의 FPS를 조정할 수 있다.
프로세서(3100)는 이전 도면들에서 개시된 복수의OS들, 하이퍼바이저, 각종 모듈 및 드라이버 등을 구동할 수 있다. 따라서, 이전 도면들에서 개시된 복수의OS들, 하이퍼바이저, 각종 모듈 및 드라이버 등에 관한 사항들은 도 27의 프로세서(3100)에도 동일하게 적용된다.
프로세서(3100)는 호스트 OS의 화면과 게스트 OS의 화면을 통합할 수 있다. 프로세서(3100)는 게스트 OS의 화면이 저장된 게스트의 프레임 버퍼의 주소를 맵핑하여 통합 화면을 생성할 수 있다. 또한, 프로세서(3100)는 게스트 OS의 화면을 복사하여 통합 화면을 생성할 수 있다. 프로세서(3100)는 호스트OS의 화면과 게스트 OS의 화면을 어떻게 통합할지를 결정하고, GPU(3200)를 제어하여 통합 화면을 디스플레이 장치(3300)에 표시되도록 GPU(3200)를 제어할 수 있다.
프로세서(3100)는 응용들의 GPU(3200)의 스케쥴링 우선 순위를 결정하거나, OS들의 스케쥴링 우선 순위를 결정할 수 있다.
GPU(3200)는 프로세서(3100)의 제어에 따라 화면을 생성하여 디스플레이 장치(3300)로 출력한다. GPU(3200)는 프로세서(3100)의 제어에 따라 호스트 OS의 화면과 게스트 OS의 화면을 통합하여 통합 화면을 생성할 수 있다. GPU(3200)는 게스트의 프레임 버퍼 등에 저장된 데이터를 이용할 수 있다. GPU(3200)는 가상화를 통해 복수의 OS들에 의해 제어될 수 있다.
디스플레이 장치(3300)는 GPU(3200)로부터 수신된 통합 화면을 표시한다.
디스플레이 장치(3300)는 사용자의 입력을 수신하여 프로세서(3100)로 출력할 수 있다. 예를 들어, 디스플레이 장치(3300)는 스타일러스 펜 또는 손가락의 Long-press, touch 또는 tapping 등을 감지하여 감지 결과를 프로세서(3100)로 출력할 수 있다.
프로세서(3100)는 감지 결과에 기초하여 FPS 설정을 위한 팝업창을 표시하도록 디스플레이 장치(3300)를 제어할 수 있다.
도 28은 일 실시 예에 따른 화면 통합 표시 방법을 나타내는 순서도이다. 도 28을 참조하면,
단계 3010에서, 전자 장치(3000)의 프로세서(3100)는 GPU 가상화 환경에서 게스트 OS 및 호스트 OS가 GPU(3200)를 독점 또는 공유하여 접속할 때, 호스트 OS로 게스트 OS의 화면을 전송한다.
일 예로, 프로세서(3100)는 게스트 OS의 화면이 저장된 게스트의 프레임 버퍼의 주소를 확인하고, 게스트의 프레임 버퍼의 주소를 호스트 OS로 전송할 수 있다.
또 다른 예로, 프로세서(3100)는 게스트 OS가 게스트의 프레임 버퍼의 주소를 상기 호스트 OS로 전송하거나, 게스트 OS가 하이퍼바이저를 통해 게스트의 프레임 버퍼의 주소를 호스트 OS로 전송할 수 있다.
일 예로, 프로세서(3100)는 게스트 OS로부터 신호를 수신한 이후에 호스트 OS로 게스트의 프레임 버퍼의 주소를 상기 호스트 OS로 전송하거나, 게스트 OS가 게스트의 프레임 버퍼에 접속하는 것을 감지할 때 게스트의 프레임 버퍼의 주소를 호스트 OS로 전송하거나, 미리 설정된 시간마다 게스트의 프레임 버퍼의 주소를 호스트 OS로 전송할 수 있다.
단계 3020에서, 프로세서(3100)는 게스트 OS의 화면을 텍스쳐로 변환하고, 변환된 텍스쳐를 호스트 OS의 텍스쳐 화면과 통합하여 통합 화면을 생성한다 프로세서(3100)는 호스트 OS가 게스트 OS의 화면을 텍스쳐로 변환하거나, GPU(3200)가 게스트 OS의 화면을 텍스쳐로 변환할 수 있다.
일 예로, 프로세서(3100)는 게스트 OS의 화면과 호스트 OS의 텍스쳐의 포맷이 상이한 경우, 게스트 OS의 화면의 포맷을 호스트 OS의 포맷으로 변환하여 변환된 텍스쳐를 생성할 수 있다.
프로세서(3100)는 멀티-윈도우를 이용하여 게스트 OS의 화면과 호스트 OS의 화면을 디스플레이 장치(3300)에 표시할 수 있다. 또는, 프로세서(3100)는 게스트 OS의 화면 또는 호스트 OS의 화면을 서브-윈도우를 이용하여 디스플레이 장치(3300)에 표시할 수 있다. 또한, 프로세서(3100)는 호스트 OS의 화면을 Notification-bar와 함께 표시할 수 있다.
단계 3030에서, 디스플레이 장치(3300)는 통합 화면을 표시한다. 디스플레이 장치(3300)는 프로세서(3100)에 의해 제어되고, GPU(3300)으로부터 출력할 화면을 수신한다.
일 실시 예에 따른 전자 장치(3000)는 서로 다른 OS들의 화면을 통합하여 통합 화면을 표시할 수 있다.
또 다른 실시 예에 따른 전자 장치(3000)는 OS들의 FPS를 조정할 수 있다.
본 실시 예들에 따른 장치는 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 외부 장치와 통신하는 통신 포트, 터치 패널, 키(key), 버튼 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다. 소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 상기 프로세서상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다. 여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다.
본 실시 예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 실시 예는 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩 업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다. 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 본 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 실시 예는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. “매커니즘”, “요소”, “수단”, “구성”과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.
본 실시 예에서 설명하는 특정 실행들은 예시들로서, 어떠한 방법으로도 기술적 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다.
본 명세서(특히 특허청구범위에서)에서 “상기”의 용어 및 이와 유사한 지시 용어의 사용은 단수 및 복수 모두에 해당하는 것일 수 있다. 또한, 범위(range)를 기재한 경우 상기 범위에 속하는 개별적인 값을 포함하는 것으로서(이에 반하는 기재가 없다면), 상세한 설명에 상기 범위를 구성하는 각 개별적인 값을 기재한 것과 같다. 마지막으로, 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 한정되는 것은 아니다. 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 기술적 사상을 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 범위가 한정되는 것은 아니다. 또한, 당업자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 팩터에 따라 구성될 수 있음을 알 수 있다.
11: 안드로이드 화면
12: 윈도우 화면
1000: 전자 장치

Claims (19)

  1. GPU 가상화를 통한 passthrough 또는 mediated-passthrouth 환경에서 게스트 OS 및 호스트 OS가 상기 GPU를 독점 또는 공유하여 접속할 때, 상기 호스트 OS로 상기 게스트 OS의 화면을 전송하는 단계;
    상기 게스트 OS의 화면을 텍스쳐로 변환하고, 변환된 텍스쳐를 상기 호스트 OS의 텍스쳐 화면과 통합하여 통합 화면을 생성하는 단계; 및
    상기 통합 화면을 표시하는 단계를 포함하는 화면 통합 표시 방법.
  2. 제 1 항에 있어서, 상기 게스트 OS의 화면을 전송하는 단계는,
    상기 게스트 OS의 화면이 저장된 게스트의 프레임 버퍼의 주소를 확인하고, 상기 게스트의 프레임 버퍼의 주소를 상기 호스트 OS로 전송하는 것을 특징으로 하는 화면 통합 표시 방법.
  3. 제 2 항에 있어서, 상기 게스트 OS의 화면을 전송하는 단계는,
    상기 게스트 OS가 상기 게스트의 프레임 버퍼의 주소를 상기 호스트 OS로 전송하거나, 상기 게스트 OS가 하이퍼바이저(hypervisor)를 통해 상기 게스트의 프레임 버퍼의 주소를 상기 호스트 OS로 전송하는 것을 특징으로 하는 화면 통합 표시 방법.
  4. 제 3 항에 있어서, 상기 게스트 OS의 화면을 전송하는 단계는,
    상기 하이퍼바이저는 상기 게스트 OS로부터 신호를 수신한 이후에 상기 호스트 OS로 상기 게스트의 프레임 버퍼의 주소를 상기 호스트 OS로 전송하거나, 상기 게스트 OS가 상기 게스트의 프레임 버퍼에 접속하는 것을 감지할 때 상기 게스트의 프레임 버퍼의 주소를 상기 호스트 OS로 전송하거나, 미리 설정된 시간마다 상기 게스트의 프레임 버퍼의 주소를 상기 호스트 OS로 전송하는 것을 특징으로 하는 화면 통합 표시 방법.
  5. 제 1 항에 있어서, 상기 통합 화면을 생성하는 단계는,
    상기 호스트 OS가 상기 게스트 OS의 화면을 텍스쳐로 변환하거나, 상기 GPU가 상기 게스트 OS의 화면을 텍스쳐로 변환하는 것을 특징으로 하는 화면 통합 표시 방법.
  6. 제 1 항에 있어서, 상기 통합 화면을 생성하는 단계는,
    상기 게스트 OS의 화면과 상기 호스트 OS의 텍스쳐의 포맷이 상이한 경우, 상기 게스트 OS의 화면의 포맷을 상기 호스트 OS의 포맷으로 변환하여 상기 변환된 텍스쳐를 생성하는 것을 특징으로 하는 화면 통합 표시 방법.
  7. 제 1 항에 있어서, 상기 통합 화면을 표시하는 단계는,
    상기 게스트 OS의 화면과 상기 호스트 OS의 화면을 멀티-윈도우를 이용하여 표시하는 것을 특징으로 하는 화면 통합 표시 방법.
  8. 제 1 항에 있어서, 상기 통합 화면을 표시하는 단계는,
    상기 게스트 OS의 화면 또는 상기 호스트 OS의 화면을 서브-윈도우를 이용하여 표시하는 것을 특징으로 하는 화면 통합 표시 방법.
  9. 제 1 항에 있어서, 상기 통합 화면을 표시하는 단계는,
    상기 호스트 OS의 화면을 Notification-bar와 함께 표시하는 것을 특징으로 하는 화면 통합 표시 방법.
  10. GPU 가상화를 통한 passthrough 또는 mediated-passthrouth 환경에서 게스트 OS 및 호스트 OS가 상기 GPU를 독점 또는 공유하여 접속할 때, 상기 호스트 OS로 상기 게스트 OS의 화면을 전송하는 게스트 OS;
    상기 게스트 OS의 화면을 텍스쳐로 변환하고, 변환된 텍스쳐를 상기 호스트 OS의 텍스쳐 화면과 통합하여 통합 화면을 생성하는 호스트 OS; 및
    상기 통합 화면을 표시하는 디스플레이 장치를 포함하는 전자 장치.
  11. 제 10 항에 있어서,
    상기 게스트 OS는 상기 게스트 OS의 화면이 저장된 게스트의 프레임 버퍼의 주소를 확인하고, 상기 게스트의 프레임 버퍼의 주소를 상기 호스트 OS로 전송하는 것을 특징으로 하는 전자 장치.
  12. 제 11 항에 있어서,
    상기 게스트의 프레임 버퍼의 주소를 상기 호스트 OS로 전송하는 하이퍼바이저를 더 포함하는 것을 특징으로 하는 전자 장치.
  13. 제 12 항에 있어서,
    상기 하이퍼바이저는 상기 게스트 OS로부터 신호를 수신한 이후에 상기 호스트 OS로 상기 게스트의 프레임 버퍼의 주소를 상기 호스트 OS로 전송하거나, 상기 게스트 OS가 상기 게스트의 프레임 버퍼에 접속하는 것을 감지할 때 상기 게스트의 프레임 버퍼의 주소를 상기 호스트 OS로 전송하거나, 미리 설정된 시간마다 상기 게스트의 프레임 버퍼의 주소를 상기 호스트 OS로 전송하는 것을 특징으로 하는 전자 장치.
  14. 제 10 항에 있어서,
    상기 호스트 OS가 상기 게스트 OS의 화면을 텍스쳐로 변환하거나, 상기 GPU가 상기 게스트 OS의 화면을 텍스쳐로 변환하는 것을 특징으로 하는 전자 장치.
  15. 제 10 항에 있어서,
    상기 호스트 OS는 상기 게스트 OS의 화면과 상기 호스트 OS의 텍스쳐의 포맷이 상이한 경우, 상기 게스트 OS의 화면의 포맷을 상기 호스트 OS의 포맷으로 변환하여 상기 변환된 텍스쳐를 생성하는 것을 특징으로 하는 전자 장치.
  16. 제 10 항에 있어서,
    상기 호스트 OS는 상기 디스플레이 장치가 상기 게스트 OS의 화면과 상기 호스트 OS의 화면을 멀티-윈도우를 이용하여 표시하도록 제어하는 것을 특징으로 하는 전자 장치.
  17. 제 10 항에 있어서,
    상기 호스트 OS는 상기 디스플레이 장치가 상기 게스트 OS의 화면 또는 상기 호스트 OS의 화면을 서브-윈도우를 이용하여 표시하도록 제어하는 것을 특징으로 하는 화면 통합 표시 방법.
  18. 제 10 항에 있어서,
    상기 호스트 OS는 상기 디스플레이 장치가 상기 호스트 OS의 화면을 Notification-bar와 함께 표시하도록 제어하는 것을 특징으로 하는 전자 장치.
  19. 제1항 내지 제9항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020150018874A 2015-02-06 2015-02-06 Os들의 화면을 통합하여 표시하는 방법 및 장치 KR102282365B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150018874A KR102282365B1 (ko) 2015-02-06 2015-02-06 Os들의 화면을 통합하여 표시하는 방법 및 장치
US14/813,262 US9984651B2 (en) 2015-02-06 2015-07-30 Method and apparatus for displaying composition screen image by composing screen images of operating systems (OSs)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150018874A KR102282365B1 (ko) 2015-02-06 2015-02-06 Os들의 화면을 통합하여 표시하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20160097050A true KR20160097050A (ko) 2016-08-17
KR102282365B1 KR102282365B1 (ko) 2021-07-27

Family

ID=56565284

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150018874A KR102282365B1 (ko) 2015-02-06 2015-02-06 Os들의 화면을 통합하여 표시하는 방법 및 장치

Country Status (2)

Country Link
US (1) US9984651B2 (ko)
KR (1) KR102282365B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113810675A (zh) * 2020-06-12 2021-12-17 北京小米移动软件有限公司 图像处理方法、装置、设备及存储介质

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170097836A1 (en) * 2015-10-02 2017-04-06 Shigeya Senda Information processing apparatus
CN106936995B (zh) 2017-03-10 2019-04-16 Oppo广东移动通信有限公司 一种移动终端帧率的控制方法、装置及移动终端
CN109240677B (zh) * 2017-07-07 2020-10-16 阿里巴巴集团控股有限公司 一种图层处理方法及装置
US20210165673A1 (en) * 2019-12-02 2021-06-03 Microsoft Technology Licensing, Llc Enabling shared graphics and compute hardware acceleration in a virtual environment
CN113835752A (zh) * 2020-06-08 2021-12-24 中兴通讯股份有限公司 数据获取方法、装置、终端及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060005187A1 (en) * 2004-06-30 2006-01-05 Microsoft Corporation Systems and methods for integrating application windows in a virtual machine environment
US20100321395A1 (en) * 2009-06-18 2010-12-23 Apple Inc. Display simulation system and method
KR20130013371A (ko) * 2011-07-28 2013-02-06 엘지전자 주식회사 이동 단말기
KR20130068753A (ko) * 2011-12-16 2013-06-26 에스코어 주식회사 가상 머신에서의 다중 프레임버퍼 에뮬레이션 시스템 및 방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8234558B2 (en) * 2007-06-22 2012-07-31 Apple Inc. Adaptive artwork for bandwidth- and/or memory-limited devices
KR101490468B1 (ko) * 2010-02-04 2015-02-06 삼성전자 주식회사 데이터 처리 장치 및 방법
US9792136B2 (en) * 2011-04-28 2017-10-17 Microsoft Technology Licensing, Llc Hardware assisted inter hypervisor partition data transfers
US9146762B2 (en) * 2012-08-23 2015-09-29 Citrix Systems, Inc. Specialized virtual machine to virtualize hardware resource for guest virtual machines
US9142004B2 (en) 2012-12-20 2015-09-22 Vmware, Inc. Dynamic allocation of physical graphics processing units to virtual machines
US9734598B2 (en) 2013-01-15 2017-08-15 Microsoft Technology Licensing, Llc Engine for streaming virtual textures
US10154265B2 (en) 2013-06-21 2018-12-11 Nvidia Corporation Graphics server and method for streaming rendered content via a remote graphics processing service
US9582849B2 (en) * 2013-10-28 2017-02-28 Vmware, Inc. Method and system to virtualize graphic processing services
GB2538119B8 (en) * 2014-11-21 2020-10-14 Intel Corp Apparatus and method for efficient graphics processing in virtual execution environment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060005187A1 (en) * 2004-06-30 2006-01-05 Microsoft Corporation Systems and methods for integrating application windows in a virtual machine environment
US20100321395A1 (en) * 2009-06-18 2010-12-23 Apple Inc. Display simulation system and method
KR20130013371A (ko) * 2011-07-28 2013-02-06 엘지전자 주식회사 이동 단말기
KR20130068753A (ko) * 2011-12-16 2013-06-26 에스코어 주식회사 가상 머신에서의 다중 프레임버퍼 에뮬레이션 시스템 및 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113810675A (zh) * 2020-06-12 2021-12-17 北京小米移动软件有限公司 图像处理方法、装置、设备及存储介质
CN113810675B (zh) * 2020-06-12 2024-03-12 北京小米移动软件有限公司 图像处理方法、装置、设备及存储介质

Also Published As

Publication number Publication date
US20160232872A1 (en) 2016-08-11
KR102282365B1 (ko) 2021-07-27
US9984651B2 (en) 2018-05-29

Similar Documents

Publication Publication Date Title
KR102282365B1 (ko) Os들의 화면을 통합하여 표시하는 방법 및 장치
US10522111B2 (en) Method and electronic apparatus for providing composition screen by composing execution windows of plurality of operating systems
US10503344B2 (en) Dynamic cross-environment application configuration/orientation
JP5506120B2 (ja) ディスプレイ面を複数の仮想ディスプレイ区域に区分化するための装置及び方法
US8966379B2 (en) Dynamic cross-environment application configuration/orientation in an active user environment
US9176765B2 (en) Virtual machine system and a method for sharing a graphics card amongst virtual machines
US20140149931A1 (en) Information processing apparatus and display control method
US8914623B2 (en) Utilization of the screen image information of a primary environment for reproduction and user-interaction in a secondary environment
US20120066640A1 (en) Apparatus for providing multi-mode warping of graphical user interface objects
US9164646B2 (en) Method and apparatus for accommodating display migration among a plurality of physical displays
US10235733B2 (en) Device and method for performing scheduling for virtualized graphics processing units
KR20120072246A (ko) 가상화 화면제어시스템 및 그 방법
US8706275B2 (en) Systems and methods for application sound management
US9489883B2 (en) Electronic apparatus and method of displaying image thereof
WO2023016553A1 (zh) 多个屏幕的显示方法及装置、计算机可读存储介质、终端
US20190179474A1 (en) Control method, electronic device, and non-transitory computer readable recording medium
US20160011754A1 (en) Method and system for virtualized sensors in a multi-sensor environment
CN110941408B (zh) 一种kvm虚拟机图形界面输出方法及装置
US11320853B2 (en) Image transmission apparatus, image transmission system, and method of controlling image transmission apparatus
US11886888B2 (en) Reduced application view during loading
US20220244794A1 (en) Routing input to on-screen display
US20130152108A1 (en) Method and apparatus for video processing
KR102281437B1 (ko) Avn 시스템 화면 제어 장치 및 방법
US9582158B2 (en) Efficient usage of screen real estate on an electronic device
JP2015228119A (ja) 電子機器および表示処理方法

Legal Events

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