KR102507114B1 - 복수의 운영체제들의 화면을 통합하여 표시하는 방법 및 그 전자 장치 - Google Patents

복수의 운영체제들의 화면을 통합하여 표시하는 방법 및 그 전자 장치 Download PDF

Info

Publication number
KR102507114B1
KR102507114B1 KR1020160070980A KR20160070980A KR102507114B1 KR 102507114 B1 KR102507114 B1 KR 102507114B1 KR 1020160070980 A KR1020160070980 A KR 1020160070980A KR 20160070980 A KR20160070980 A KR 20160070980A KR 102507114 B1 KR102507114 B1 KR 102507114B1
Authority
KR
South Korea
Prior art keywords
operating system
screen data
data
stored
electronic device
Prior art date
Application number
KR1020160070980A
Other languages
English (en)
Other versions
KR20170138759A (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 KR1020160070980A priority Critical patent/KR102507114B1/ko
Priority to US15/606,518 priority patent/US10522111B2/en
Publication of KR20170138759A publication Critical patent/KR20170138759A/ko
Application granted granted Critical
Publication of KR102507114B1 publication Critical patent/KR102507114B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • 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
    • 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/45537Provision of facilities of other operating environments, e.g. WINE
    • 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/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour
    • 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/001Arbitration of resources in a display system, e.g. control of access to frame buffer by video controller and/or main processor
    • 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
    • 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/37Details of the operation on graphic patterns
    • 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/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2330/00Aspects of power supply; Aspects of display protection and defect management
    • G09G2330/02Details of power systems and of start or stop of display operation
    • G09G2330/026Arrangements or methods related to booting a display
    • 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/14Solving problems related to the presentation of 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
    • G09G2354/00Aspects of interface with display user
    • 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/18Use of a frame buffer in a display terminal, inclusive of the display panel

Abstract

제1 운영체제 및 제2 운영체제의 실행 화면을 동시에 표시하기 위해, 제2 운영체제에 의해 처리된 제1 그래픽 데이터로부터 제2 운영체제의 화면 데이터를 획득하고, 제2 운영체제의 화면 데이터에 관련된 제어 정보 및 제2 운영체제의 메모리 맵핑 정보 중 적어도 하나를 제1 운영체제가 획득하며, 제어 정보 및 메모리 맵핑 정보 중 적어도 하나에 기초하여, 제2 운영체제의 화면 데이터를 제1 운영체제의 그래픽 데이터로 변환하고, 제1 운영체제의 그래픽 데이터로부터 제2 운영체제의 화면 데이터를 포함하는 제1 운영체제의 화면 데이터를 생성하여, 제1 운영체제의 화면 데이터를 표시하는, 전자 장치의 동작 방법 및 그 전자 장치를 개시한다.

Description

복수의 운영체제들의 화면을 통합하여 표시하는 방법 및 그 전자 장치 {method and apparatus for providing composition screen by composing the execution window of a plurality of the operating system}
복수의 운영체제들의 화면을 통합하여 표시하는 방법 및 그 전자 장치에 관한 것이다.
전자 장치는 다양한 운영체제들을 실행할 수 있다. 예를 들어, 전자 장치는 안드로이드(Android), 타이젠(Tizen), 윈도우(Windows), iOS 또는 MacOS 등을 실행할 수 있다.
전자 장치는 가상화 기법을 이용하여 복수의 운영체제들을 실행할 수 있다. 가상화 기법은 동일한 하드웨어를 복수의 운영체제들이 이용하는 환경을 구성할 수 있다. 예를 들어, 안드로이드 운영체제 및 윈도우 운영체제는 가상화 기법을 통해 그래픽 처리 장치(GPU)를 공유하여 사용할 수 있다.
개시된 실시예는 복수의 운영체제들의 화면을 동시에 표시하는 방법 및 장치를 제공하는데 있다.
상술한 과제를 해결하기 위한 개시된 실시예의 제1 측면은, 제2 운영체제에 의해 처리된 제1 그래픽 데이터로부터 제2 운영체제의 화면 데이터를 획득하는 단계; 제2 운영체제의 화면 데이터에 관련된 제어 정보 및 제2 운영체제의 메모리 맵핑 정보 중 적어도 하나를 제1 운영체제가 획득하는 단계; 제어 정보 및 메모리 맵핑 정보 중 적어도 하나에 기초하여, 제2 운영체제의 화면 데이터를 제1 운영체제의 그래픽 데이터로 변환하는 단계; 제1 운영체제의 그래픽 데이터로부터 제2 운영체제의 화면 데이터를 포함하는 제1 운영체제의 화면 데이터를 생성하는 단계; 및 제1 운영체제의 화면 데이터를 표시하는 단계를 포함하는 전자 장치의 동작 방법을 제공한다.
또한, 제2 운영체제의 화면 데이터를 변환하는 단계는, 제어 정보 및 메모리 맵핑 정보 중 적어도 하나에 기초하여 제2 운영체제의 화면 데이터가 저장된 메모리 영역의 주소 정보를 획득하는 단계, 및 획득된 주소 정보에 기초하여 제2 운영체제의 화면 데이터가 저장된 메모리 영역에 대응되는 제1 운영체제의 텍스처 오브젝트를 생성하는 단계를 포함할 수 있다.
또한, 제2 운영체제의 화면 데이터를 변환하는 단계는, 제2 운영체제의 화면 데이터가 저장된 메모리 영역의 데이터 포맷과 제1 운영체제의 화면 데이터가 저장될 메모리 영역의 데이터 포맷이 상이한 경우, 텍스처 오브젝트의 포맷을 변경하는 단계를 더 포함할 수 있다.
또한, 텍스처 오브젝트는, 제2 운영체제의 화면 데이터가 메모리 영역에 모두 저장되었다는 신호가 제1 운영체제에 수신된 후에 생성될 수 있다.
또한, 제어 정보 및 메모리 맵핑 정보 중 적어도 하나는, 제2 운영체제로부터 하이퍼바이저(hypervisor)를 통해 제1 운영체제로 제공될 수 있다.
또한, 제2 운영체제의 화면 데이터는, 프레임 버퍼(frame buffer)에 저장되는 픽셀(pixel) 데이터일 수 있다.
또한, 프레임 버퍼는, 제1 운영체제의 화면 데이터가 저장되는 영역 및 제2 운영체제의 화면 데이터가 저장되는 영역을 구분할 수 있다.
또한, 제1 운영체제의 화면 데이터 및 제2 운영체제의 화면 데이터는, 각 운영체제의 워크로드(workload) 또는 사용자 입력 값에 기초하여, 서로 다른 주기로 갱신될 수 있다.
또한, 제1 운영체제의 화면 데이터를 표시하는 단계는, 제2 운영체제의 화면 데이터를 서브 윈도우(sub window)를 이용하여 표시할 수 있다.
또한, 제2 운영체제의 화면 데이터에 관련된 제어 정보는, 제2 운영체제의 화면 데이터를 생성하기 위한 제어 정보 및 제2 운영체제의 화면 데이터를 출력하기 위한 제어 정보 중 적어도 하나를 포함할 수 있다.
또한, 메모리 맵핑 정보는, 제2 운영체제의 페이지 테이블의 전부 또는 일부를 포함할 수 있다.
또한, 개시된 실시예의 제2 측면은, 디스플레이, 제2 운영체제에 의해 처리된 제1 그래픽 데이터로부터 제2 운영체제의 화면 데이터를 생성하는 그래픽 프로세서(graphic processor), 및 제2 운영체제의 화면 데이터에 관련된 제어 정보 및 제2 운영체제의 메모리 맵핑 정보 중 적어도 하나를 제1 운영체제로 제공하고, 제어 정보 및 메모리 맵핑 정보 중 적어도 하나에 기초하여 제2 운영체제의 화면 데이터를 제1 운영체제의 그래픽 데이터로 변환하는 프로세서(processor)를 포함하며, 그래픽 프로세서는, 제1 운영체제의 그래픽 데이터로부터 제2 운영체제의 화면 데이터를 포함하는 제1 운영체제의 화면 데이터를 생성하고, 디스플레이는, 제1 운영체제의 화면 데이터 표시하는 전자 장치를 제공한다.
또한, 개시된 실시예의 제3 측면은, 상기 제1 측면의 동작 방법을 구현하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체를 제공한다.
도 1은 실시예에 따른 화면 표시 방법을 설명하기 위한 개요도이다.
도 2는 실시예에 따른 전자 장치의 구성을 설명하기 위한 블록도이다.
도 3은 실시예에 따른 전자 장치의 구성을 설명하기 위한 블록도이다.
도 4는 실시예에 따라 제2 운영체제의 화면 데이터에 관련된 제어 정보 및 메모리 맵핑 정보를 제1 운영체제가 획득하는 동작을 설명하기 위한 도면이다.
도 5는 실시예에 따라 전자 장치가 제2 운영체제의 화면 데이터를 포함하는 제1 운영체제의 그래픽 데이터를 생성하는 동작을 설명하기 위한 도면이다.
도 6은 다른 실시예에 따라 전자 장치가 제2 운영체제의 화면 데이터를 포함하는 제1 운영체제의 그래픽 데이터를 생성하는 동작을 설명하기 위한 도면이다.
도 7은 제2 운영체제의 화면 데이터가 저장된 프레임 버퍼의 주소 정보를 획득하는 일례이다.
도 8은 실시예에 따라 제1 운영체제가 제2 운영체제의 화면 데이터가 저장된 주소 정보를 획득하는 시점을 결정하는 동작을 설명하기 위한 도면이다.
도 9는 전자 장치가 제2 운영체제의 화면 데이터를 포함하는 제1 운영체제의 화면 데이터를 출력하는 일례이다.
도 10은 전자 장치가 제2 운영체제의 화면 데이터를 포함하는 제1 운영체제의 화면 데이터를 출력하는 다른 일례이다.
도 11은 실시예에 따라 전자 장치가 GPU 의 스케줄링 우선순위를 결정하는 동작을 설명하기 위한 도면이다.
도 12는 운영체제들의 GPU 스케쥴링 우선순위를 설정하기 위한 사용자 인터페이스를 제공하는 일 예이다.
도 13은 운영체제들의 GPU 스케쥴링 우선순위를 설정하기 위한 사용자 인터페이스를 제공하는 다른 예이다.
도 14는 운영체제의 설정창을 이용하여 운영체제들의 FPS 를 설정하는 일례이다.
도 15는 일 실시예에 따라 전자 장치의 구성을 설명하기 위한 블록도이다.
도 16은 실시예에 따라 전자 장치의 동작 방법을 설명하기 위한 흐름도이다.
도 17은 실시예에 따라 전자 장치가 제2 운영체제의 화면 데이터에 관련된 제어 정보를 제1 운영체제로 제공하는 방법을 설명하기 위한 흐름도이다.
도 18은 실시예에 따라 전자 장치가 제2 운영체제의 화면 데이터를 제1 운영체제의 그래픽 데이터로 변환하는 방법을 설명하기 위한 흐름도이다.
도 19는 실시예에 따라 전자 장치가 제2 운영체제의 화면 데이터를 제1 운영체제의 그래픽 데이터로 변환하는 시점을 결정하는 방법을 설명하기 위한 흐름도이다.
도 20은 실시예에 따라 전자 장치가 운영체제들의 화면 데이터 갱신 주기(즉, FPS)를 조정하는 방법을 설명하기 위한 흐름도이다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 본 발명에 대해 구체적으로 설명하기로 한다.
본 발명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 구성 요소들은 용어들에 의해 한정되지는 않는다. 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 항목들의 조합 또는 복수의 관련된 항목들 중의 어느 하나의 항목을 포함한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에서 사용되는 "부"라는 용어는 소프트웨어, FPGA 또는 ASIC과 같은 하드웨어 구성요소를 의미하며, "부"는 어떤 역할들을 수행한다. 그렇지만 "부"는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. "부"는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 "부"는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다. 구성요소들과 "부"들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 "부"들로 결합되거나 추가적인 구성요소들과 "부"들로 더 분리될 수 있다.
아래에서는 첨부한 도면을 참고하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
도 1은 실시예에 따른 화면 표시 방법을 설명하기 위한 개요도이다.
도 1을 참조하면, 전자 장치(10)는 복수의 운영체제들은 동시에 실행할 수 있다. 예를 들어, 전자 장치(10)는 안드로이드 운영체제 및 윈도우 운영체제를 동시에 실행할 수 있다. 이때, 전자 장치(10)가 그래픽 데이터를 처리하기 위한 그래픽 프로세서, 예를 들어, 그래픽 처리 장치(GPU)를 포함하는 경우, 전자 장치(10)는 GPU 가 실행 중인 복수의 운영체제에서 처리되는 그래픽 데이터에 대한 이미징 프로세싱(예를 들어, 렌더링 작업)을 수행할 수 있도록 GPU 가상화 작업(GPU virtualization operation)을 수행할 수 있다. 실시예에 따라 전자 장치(10)는 프레임 버퍼의 주소 정보를 이용하여 복수의 운영체제들에서 처리되는 그래픽 데이터를 통합함으로써, 복수의 운영체제들의 화면을 동시에 표시할 수 있다. 예를 들어, 도 1에 도시된 바와 같이, 전자 장치(10)는 안드로이드 운영체제의 안드로이드 화면(11) 및 윈도우 운영체제의 윈도우 화면(12)을 표시할 수 있다.
한편, 복수의 운영체제들은 동종 또는 이종의 운영체제들일 수 있다. 또한, 위 설명에서는 복수의 운영체제들이 전자 장치(10) 내에서 실행 중인 것으로 설명하였으나, 다른 장치에서 실행되는 복수의 운영체제들의 화면을 함께 표시할 수도 있다. 이 경우, 전자 장치(10)는 다른 장치로부터 데이터를 송수신하기 위한 인터페이스를 구비할 수 있다.
또한, 전자 장치(10)는 휴대폰, 스마트폰, 웨어러블 디바이스, 태블릿, 카메라, 노트북, 데스크탑, TV, 스마트 TV 등일 수 있으나, 이에 제한되지 않으며, 그래픽 데이터에 대한 이미지 프로세싱을 할 수 있는 다양한 장치일 수 있다.
이하에서는, 전자 장치(10)가 GPU 가상화 작업을 수행함으로써, 복수의 운영체제들의 화면을 동시에 표시하는 방법 및 장치에 대하여 상세히 설명한다.
도 2는 실시예에 따른 전자 장치의 구성을 설명하기 위한 블록도이다.
도 2를 참조하면, 전자 장치(10)는 제1 운영체제(100), 제2 운영체제(200), 하이퍼바이저(hypervisor, 300) 및 GPU(400) 를 포함할 수 있다. 또한, 도 2에서는 도시되지 않았으나, 전자 장치(10)는 디스플레이(display)를 더 포함할 수 있다. 한편, 개시된 명세서에서는, 설명의 편의를 위해, 전자 장치(10)가 제1 및 제2 운영체제(100, 200)를 포함하는 것으로 설명하였으나, 이에 제한되지 않는다. 전자 장치(10)는 복수의 운영체제들(즉, 제 1 내지 제 N 운영체제들)을 포함할 수 있으며, 이 경우, 제3 내지 제 N 운영체제들(미도시)은 제2 운영체제(200)와 동일 및/또는 유사하게 동작할 수 있다. 따라서, 제3 내지 제 N 운영체제들 각각의 동작은 제2 운영체제(200)의 동작에 대응될 수 있다. 제1 운영체제(100) 및 제2 운영체제(200)는 전자 장치(10)에서 실행되는 운영체제들일 수 있다. 예를 들어, 제1 및 제2 운영체제(100, 200)는 안드로이드, 타이젠, 윈도우, 리눅스, iOS, MacOS, 뉴클리어(Nucleus) 등일 수 있으나, 이에 제한되는 것은 아니다.
실시예에 따라 제1 운영체제(100)는 호스트 운영체제이고, 제2 운영체제(200)는 게스트 운영체제일 수 있다. 이 경우, 제1 운영체제(100)는 전자 장치(10)의 구성요소들을 제어할 수 있다. 또한, 제1 운영체제(100)는 하이퍼바이저(300)를 포함할 수 있다. 하이퍼바이저(300)는 제1 운영체제(100) 및 제2 운영체제(200)가 전자 장치(10)의 구성요소들을 이용할 수 있는 가상 환경을 제공할 수 있다. 예를 들어, 하이퍼바이저(300)는 GPU(400) 에 접근하는 제1 및 제2 운영체제(100, 200)에 대한 스케줄링 작업을 수행할 수 있다. 또한, 제2 운영체제(200)는, 가상 운영체제로서, 하이퍼바이저(300)를 통해 전자 장치(10)의 구성요소들(예를 들어, GPU(400), 디스플레이(미도시) 등)을 제어할 수 있다.
전자 장치는 호스트 운영체제 및 게스트 운영체제의 화면을 동시에 출력하기 위하여, 게스트 운영체제에서 처리된 그래픽 데이터를 호스트 운영체제로 전송하고, 호스트 운영체제에 의해 통합된 그래픽 데이터를 GPU 로 전송한다. 이 경우, 게스트 운영체제에서 처리된 그래픽 데이터가 호스트 운영체제로 전송됨에 따른 오버헤드가 발생될 수 있다. 따라서, 게임, 동영상 재생 등과 같이 높은 FPS(frame per second) 가 요구되는 응용 프로그램을 동시에 표시하는데 어려움이 따를 수 있다. 실시예에 따른 전자 장치(10)는 게스트 운영체제에서 처리되는 그래픽 데이터를 호스트 운영체제로 전송하지 않으면서, 게스트 운영체제 및 호스트 운영체제의 화면을 동시에 표시한다.
실시예에 따라 전자 장치(10)는 제2 운영체제(200)에서 처리되는 그래픽 데이터로부터 제2 운영체제(200)의 화면 데이터를 생성한다. 여기서, 그래픽 데이터는, 운영체제에 의해 처리되어 그래픽 처리 장치(GPU, 400)로 제공되는 데이터일 수 있다. 예를 들어, 그래픽 데이터는 버텍스(vertex) 데이터, 텍스처(texture) 데이터 등을 포함할 수 있으나, 이에 제한되는 것은 아니다. 또한, 화면 데이터는 운영체제로부터 제공된 그래픽 데이터를 GPU(400)가 이미지 프로세싱(image processing)한 결과값으로서, 디스플레이(미도시)에서 출력될 수 있는 픽셀 데이터를 포함할 수 있다.
예를 들어, 제2 운영체제(200)는 제2 운영체제(200)의 화면 데이터에 관련된 제어 정보를 생성할 수 있다. 화면 데이터에 관련된 제어 정보는, 그래픽 데이터로부터 화면 데이터를 생성하기 위한 제어 정보 및 생성된 화면 데이터를 출력하기 위한 제어 정보를 포함할 수 있다. 예를 들어, 제2 운영체제(200)의 화면 데이터에 관련된 제어 정보는, 제2 운영체제(200)에서 설정되는 GPU 레지스터 값(예를 들어, 프레임 버퍼의 주소 값 등), GPU 스케쥴링 정보, 디스플레이 레지스터 값, 디스플레이 스케쥴링 정보 등을 포함할 수 있다. 따라서, 제2 운영체제(200)는 그래픽 데이터 및 제어 정보를 GPU(400)로 제공하여 제2 운영체제(200)의 화면 데이터를 생성할 수 있다. 이때, 그래픽 데이터는 운영체제로부터 GPU(400)로 직접 제공(즉, pass-through access)될 수 있으며, 화면 데이터에 관련된 제어 정보는 하이퍼바이저(300)를 통해 GPU(400)로 제공(즉, mediated access)될 수 있다.
실시예에 따라 하이퍼바이저(300)는 제2 운영체제(200)로부터 획득된 제2 운영체제(200)의 화면 데이터에 관련된 제어 정보를 관리할 수 있다. 하이퍼바이저(300)는 제2 운영체제(200)의 화면 데이터를 생성하기 위한 제어 정보를 GPU(400)로 제공하여, 제2 운영체제(200)의 화면 데이터가 생성되도록 할 수 있다. 또한, 하이퍼바이저(300)는 화면 데이터에 관련된 제어 정보를 제1 운영체제(100)로 제공할 수 있다. 예를 들어, 하이퍼바이저(300)는, 제2 운영체제(200)의 화면 데이터가 생성되면, 디스플레이(미도시)를 통해 화면 데이터를 출력하지 않고 제1 운영체제(100)로 제어 정보를 제공할 수 있다.
또한, 하이퍼바이저(300)는 제2 운영체제(200)의 메모리 맵핑 정보를 획득하여, 제1 운영체제(100)로 제공할 수 있다. 메모리 맵핑 정보는, 운영체제의 페이지 테이블(page table)의 전부 또는 일부를 포함할 수 있다.
실시예에 따라 제1 운영체제(100)는 제2 운영체제(200)의 화면 데이터에 관련된 제어 정보 및 메모리 맵핑 정보 중 적어도 하나를 획득한다. 예를 들어, 제1 운영체제(100)는 하이퍼바이저(300)로부터 제2 운영체제(200)의 제어 정보 및 메모리 맵핑 정보를 획득할 수 있다.
실시예에 따라 제1 운영체제(100)는 제2 운영체제(200)의 제어 정보 및 메모리 맵핑 정보 중 적어도 하나에 기초하여, 제2 운영체제(200)의 화면 데이터를 제1 운영체제(100)의 그래픽 데이터로 변환한다. 예를 들어, 제1 운영체제(100)는 제2 운영체제(200)의 제어 정보 및 메모리 맵핑 정보에 기초하여, 제2 운영체제(200)의 화면 데이터가 저장된 주소 정보를 획득할 수 있다. 제2 운영체제(200)의 화면 데이터는 GPU(400)에 의해 제2 운영체제(200)의 미리 약속된 주소 공간에 저장될 수 있다. 예를 들어, 미리 약속된 주소 공간은 GPU(400)의 프레임 버퍼(frame buffer)일 수 있다. 이때, 프레임 버퍼는 각 운영체제의 화면 데이터가 저장되는 영역을 구분할 수 있다. 따라서, 프레임 버퍼는 제1 운영체제(100)의 화면 데이터가 저장되는 영역과 제2 운영체제(200)의 화면 데이터가 저장되는 영역을 구분할 수 있다.
구체적으로, 제1 운영체제(100)는 제2 운영체제(200)의 화면 데이터가 저장된 주소 정보를 이용하여, 제2 운영체제(200)의 화면 데이터가 저장된 메모리 영역에 대응되는 텍스처 오브젝트(texture object)를 생성할 수 있다. 텍스처 오브젝트는, GPU(400)에 의해 처리되는 텍스처 데이터에 대한 정보를 포함할 수 있다. 제1 운영체제(100)는 텍스처 오브젝트에 제2 운영체제(200)의 화면 데이터가 저장된 메모리 영역을 할당할 수 있다.
또한, 제1 운영체제(100)는 제2 운영체제(200)의 화면 데이터가 저장된 형태에 기초하여, 텍스처 오브젝트의 포맷을 결정할 수 있다. 예를 들어, 제1 운영체제(100)의 화면 데이터가 저장될 메모리 영역과 제2 운영체제(200)의 화면 데이터가 저장된 메모리 영역은 상이한 데이터 포맷으로 구성될 수 있다. 예를 들어, 제2 운영체제(200)의 프레임 버퍼가 x-축 기준 포맷(x-major format)으로 데이터를 저장하고, 제1 운영체제(100)의 프레임 버퍼가 y-축 기준 포맷(y-major format)을 지원하는 경우, 제1 운영체제(100)는 텍스처 오브젝트의 포맷을 y-축 기준 포맷으로 변경할 수 있다. 그러나, 이에 제한되는 것은 아니다. 실시예에 따라 제1 운영체제(100)는 텍스처 오브젝트의 포맷을 x-축 기준 포맷으로 변경하여, 제1 운영체제(100)의 프레임 버퍼로 다시 저장할 수도 있다. 또한, 위에서는 제1 운영체제(100)가 텍스처 오브젝트의 포맷을 변경하는 것으로 설명하였으나, 하이퍼바이저(300) 또는 GPU(400)가 텍스처 오브젝트의 포맷을 변경할 수도 있다.
실시예에 따라 제1 운영체제(100)는 제1 운영체제(100)의 그래픽 데이터로부터 제2 운영체제(200)의 화면 데이터를 포함하는 제1 운영체제(100)의 화면 데이터를 생성한다. 예를 들어, 제1 운영체제(100)는 제2 운영체제(200)의 화면 데이터에 대응되는 텍스처 오브젝트를 포함하는 제1 운영체제(100)의 그래픽 데이터를 GPU(400)로 전송하여, 제2 운영체제(200)의 화면 데이터를 포함하는 제1 운영체제(100)의 화면 데이터를 생성할 수 있다. 이때, 제1 운영체제(100)의 화면 데이터에 관련된 제어 정보는 하이퍼바이저(300)로 제공될 수 있다.
하이퍼바이저(300)는 제1 운영체제(100)로부터 획득된 제어 정보 중에서 화면 데이터를 생성하기 위한 제어 정보를 GPU(400)로 제공할 수 있다. 또한, 하이퍼바이저(300)는 GPU(400)에 의해 제1 운영체제(100)의 화면 데이터가 생성되면, 제1 운영체제(100)의 화면 데이터를 출력하기 위한 제어 정보를 디스플레이(미도시)로 제공할 수 있다. 이때, 제1 운영체제(100)의 화면 데이터는 제1 운영체제(100)의 프레임 버퍼에 저장될 수 있다.
디스플레이(미도시)는 제어 정보에 따라 프레임 버퍼에 저장된 제1 운영체제(100)의 화면 데이터를 표시한다.
전술한 바와 같이, 전자 장치(10)는 제2 운영체제(200)의 화면 데이터가 저장된 제2 운영체제(200)의 프레임 버퍼에 제1 운영체제(100)가 접근하는 것을 허용함으로써, 제2 운영체제(200)와 제1 운영체제(100)의 화면 데이터를 함께 출력할 수 있다.
한편, 도 2에서는 하이퍼바이저(300)가 제1 운영체제(100)에 포함되는 경우를 설명하였으나, 이에 제한되는 것은 아니다. 도 3에서 후술되는 바와 같이, 하이퍼바이저(300)는 제1 운영체제(100)와 독립적일 수 있다. 또한, 위 설명에서는, 두 개의 운영체제가 동시에 실행되는 경우를 설명하였으나, 이에 제한되는 것은 아니며, 두 개 이상의 운영체제가 동시에 실행될 수도 있다. 이 경우, 추가되는 운영체제는 제2 운영체제와 동일 및 유사한 동작을 수행할 수 있다.
또한, 실시예에 따라 전자 장치(10)는 하이퍼바이저(300)를 포함하지 않을 수도 있다. 이 경우, 제1 운영체제(100)는 전술한 하이퍼바이저(300)와 동일 또는 유사한 기능을 수행할 수 있다. 제1 운영체제(100)는 제2 운영체제(200)로부터 직접 제2 운영체제(200)의 화면 데이터에 관련된 제어 정보 및 메모리 맵핑 정보를 획득할 수 있다.
도 3은 실시예에 따른 전자 장치의 구성을 설명하기 위한 블록도이다.
도 3을 참조하면, 전자 장치(10)는 제1 및 제2 운영체제(100, 200)와 독립적인 하이퍼바이저(500)를 포함한다. 여기서, 제1 운영체제(100) 및 제2 운영체제(200)는 게스트 운영체제일 수 있다. 따라서, 제1 운영체제(100)는 제2 운영체제(200)와 동일 또는 유사한 동작을 수행할 수 있으며, 하이퍼바이저(500)가 호스트 운영체제의 동작 중 일부 또는 전부를 수행할 수 있다.
예를 들어, 하이퍼바이저(500)는 제1 운영체제(100) 및 제2 운영체제(200)로부터 각 운영체제의 메모리 맵핑 정보 및 각 운영체제의 화면 데이터에 관련된 제어 정보를 획득할 수 있다. 이 경우, 하이퍼바이저(500)는 도 2의 제1 운영체제(100)와 동일 또는 유사한 기능을 수행할 수 있다. 예를 들어, 하이퍼바이저(500)는 제1 및 제2 운영체제(100, 200)로부터 획득된 메모리 맵핑 정보 및 제어 정보를 이용하여, 제2 운영체제(200)의 화면 데이터를 제1 운영체제(100)의 그래픽 데이터로 변환할 수 있다. 이후, 하이퍼바이저(500)는 제1 운영체제(100)의 그래픽 데이터로부터 생성된 화면 데이터가 출력될 수 있도록 GPU(400) 및 디스플레이(미도시)를 제어할 수 있다.
또는, 하이퍼바이저(500)는 제1 운영체제(100)의 화면 데이터를 제2 운영체제(200)의 그래픽 데이터로 변환할 수도 있다. 이 경우, 하이퍼바이저(500)는 제2 운영체제(200)의 그래픽 데이터로부터 생성된 화면 데이터가 출력될 수 있도록 GPU(400) 및 디스플레이(미도시)를 제어할 수 있다. 한편, 이하의 개시된 실시예들은 도 2의 전자 장치의 구성에 기초하여 설명한다. 그러나, 이하의 개시된 실시예들이 도 3의 전자 장치의 구성에도 대응될 수 있음은 당해 기술분야에서 통상의 지식을 가진 자에게 용이하게 이해될 것이다.
도 4는 실시예에 따라 제2 운영체제의 화면 데이터에 관련된 제어 정보 및 메모리 맵핑 정보를 제1 운영체제가 획득하는 동작을 설명하기 위한 도면이다.
도 4를 참조하면, 제1 운영체제(100)는 제1 GPU 드라이버(110) 및 화면 통합 모듈(120)을 포함할 수 있으며, 제2 운영체제(200)는 제2 GPU 드라이버(210)를 포함할 수 있다. 또한, 하이퍼바이저(300)는 제1 가상 GPU(311) 및 제2 가상 GPU(312) 및 매개(mediated) 모듈(313)을 포함할 수 있다.
제1 운영체제(100)의 제1 GPU 드라이버(110)는 제1 운영체제(100)에서 처리된 그래픽 데이터로부터 GPU(400)에 의해 제1 운영체제(100)의 화면 데이터를 생성하기 위한 제어 정보를 생성할 수 있다. 또한, 제2 운영체제(200)의 제2 GPU 드라이버(210)는 제2 운영체제(200)에서 처리된 그래픽 데이터로부터 제2 운영체제(200)의 화면 데이터를 생성하기 위한 제어 정보를 생성할 수 있다.
하이퍼바이저(300)의 제1 및 제2 가상 GPU(311, 312) 는 제1 운영체제(100) 및 제2 운영체제(200)의 화면 데이터에 관련된 제어 정보를 획득하고, 획득된 제어 정보를 매개 모듈(313)로 전송할 수 있다. 예를 들어, 제1 및 제2 가상 GPU(311, 312) 는 제1 및 제2 GPU 드라이버(110, 210)로부터 수신되는 제어 정보를 획득할 수 있다. 또는, 제1 및 제2 가상 GPU(311, 312)는 제1 및 제2 GPU 드라이버(110, 210)가 GPU(400)에 접근하는 것을 후킹(Hooking) 하여 제어 정보를 획득할 수 있다.
한편, 도 4에서는 제1 및 제2 가상 GPU(311, 312)만 도시하였으나, 이에 제한되는 것은 아니며, 하이퍼바이저(300)는 전자 장치(10)의 하드웨어를 제어하기 위한 다양한 장치 드라이버들에 대응되는 가상 디바이스들을 더 포함할 수 있다. 예를 들어, 하이퍼바이저(300)는 제1 및 제2 운영체제(100,200)가 디스플레이 드라이버를 포함하는 경우, 가상 디스플레이 모듈을 더 포함할 수 있다.
메모리 맵핑 테이블(314)은 제2 운영체제(200)로부터 획득되는 메모리 맵핑 테이블을 관리할 수 있다. 예를 들어, 하이퍼바이저(300)는 제2 운영체제(200)의 커널을 후킹(Hooking)하여 제2 운영체제의 메모리 맵핑 테이블을 획득할 수 있다. 또는, 하이퍼바이저(300)는 제2 운영체제(200)로부터 수신되는 메모리 맵핑 테이블을 획득할 수 있다.
제어 정보(315)는 제2 운영체제(200)로부터 획득되는 제어 정보를 관리할 수 있다. 예를 들어, 제어 정보(315)는 제2 운영체제(200)의 화면 데이터를 생성하기 위한 제어 정보 및 제2 운영체제(200)의 화면 데이터를 출력하기 위한 제어 정보를 관리할 수 있다.
매개 모듈(313)은 포그라운드(foreground)로 실행중인 운영체제에 기초하여, 전자 장치(10)의 하드웨어들을 스케줄링 할 수 있다. 예를 들어, 매개 모듈(313)은 제1 운영체제(100) 및 제2 운영체제(200) 중 하나가 포그라운드로 실행중인 경우, 실행중인 운영체제의 제어 정보를 GPU(400)로 전송할 수 있다. 또한, 디스플레이(미도시)는 매개 모듈(313)에 의해 GPU(400)에서 생성된 운영체제의 화면 데이터를 출력할 수 있다.
또한, 매개 모듈(313)은 제1 및 제2 운영체제(100, 200)가 동시에 포그라운드로 실행 중인 경우, 메모리 맵핑 테이블(314) 및 제어 정보(315)에서 관리되는 제2 운영체제(200)의 메모리 맵핑 정보 및 제어 정보를 제1 운영체제(100)의 화면 통합 모듈(120)로 제공할 수 있다.
화면 통합 모듈(120)은 매개 모듈(313)로부터 획득된 메모리 맵핑 정보 및 제어 정보를 이용하여 제2 운영체제(200)의 화면 데이터를 제1 운영체제(100)의 그래픽 데이터로 변환할 수 있다. 예를 들어, 화면 통합 모듈(120)은 제2 운영체제(200)의 화면 데이터가 저장된 프레임 버퍼의 주소 정보를 이용하여, 제2 운영체제(200)의 화면 데이터를 제1 운영체제(100)의 텍스처 데이터로 지정할 수 있다.
도 5는 실시예에 따라 전자 장치가 제2 운영체제의 화면 데이터를 포함하는 제1 운영체제의 그래픽 데이터를 생성하는 동작을 설명하기 위한 도면이다.
도 5를 참조하면, 제1 운영체제(100)는 제2 운영체제(200)의 화면 데이터가 저장된 프레임 버퍼(600)의 주소 정보를 이용하여 제2 운영체제(200)의 화면 데이터를 포함하는 제1 운영체제(100)의 그래픽 데이터를 생성할 수 있다.
프레임 버퍼(600)는 GPU(400)에 의해 생성된 각 운영체제의 화면 데이터가 일시적으로 저장되는 메모리 공간으로서, 예를 들어, 그래픽 메모리 또는 메인 메모리의 전부 또는 일부일 수 있다. 프레임 버퍼(600)는 운영체제 별로 구분된 영역을 포함할 수 있다. 예를 들어, 프레임 버퍼(600)는 제1 운영체제(100)의 화면 데이터가 저장되는 제1 영역(601)과 제2 운영체제(200)의 화면 데이터가 저장되는 제2 영역(602)을 포함할 수 있다. 예를 들어, 제2 영역(602)의 빗금 영역(611)은 제2 운영체제(200)의 화면 데이터가 저장된 영역일 수 있다.
제1 운영체제(100)는 화면 통합 모듈(120), 그래픽스 스택(130) 및 제1 GPU 드라이버(110)를 포함할 수 있다. 화면 통합 모듈(120)은 FB(frame buffer, 프레임 버퍼) 주소 정보 획득 모듈(121) 및 FB 텍스처 생성 모듈(122)을 포함할 수 있다. 그래픽스 스택(130)은 호스트 텍스처(131) 및 게스트 텍스처(132)를 포함할 수 있다. 제1 GPU 드라이버(110)는 할당부(allocator)(111)를 포함할 수 있다.
제2 운영체제(200)의 제2 GPU 드라이버(210)는 제2 운영체제(200)에서 처리되는 그래픽 데이터로부터 제2 운영체제(200)의 화면 데이터를 생성 및/또는 출력하기 위한 제어 정보를 생성할 수 있다. 또한, 제2 GPU 드라이버(210)는 그래픽 데이터를 GPU(400)로 전송할 수 있다. 제2 GPU 드라이버(210)에서 생성된 제어 정보는 제2 가상 GPU(312)에 의해 후킹(Hooking) 되거나, 제2 가상 GPU(312)로 직접 전송될 수 있다.
FB 주소 정보 획득 모듈(121)은 하이퍼바이저(300)의 매개 모듈(313)로부터 제2 운영체제(200)의 제어 정보 및 메모리 맵핑 정보를 획득할 수 있다. FB 주소 정보 획득 모듈(121)은 획득된 제어 정보로부터 제2 운영체제(200)의 화면 데이터가 저장된 프레임 버퍼(600)의 빗금 영역(611)의 주소 정보를 획득할 수 있다. 예를 들어, FB 주소 정보 획득 모듈(121)은 GPU 레지스터 값으로부터 빗금 영역(611)의 주소 정보를 획득할 수 있다.
또한, FB 주소 정보 획득 모듈(121)은 제2 운영체제(200)의 메모리 맵핑 정보에 기초하여, 획득된 주소 정보를 제1 운영체제(100)의 주소 체계로 변환할 수 있다. FB 주소 정보 획득 모듈(121)은 변환된 주소 정보를 FB 텍스처 생성 모듈(122)로 제공할 수 있다. FB 주소 정보 획득 모듈(121)이 주소 정보를 변환하는 동작에 대해서는, 도 7을 참조하여 상세히 후술한다.
FB 텍스처 생성 모듈(122)은 FB 주소 정보 획득 모듈(121)로부터 획득된 빗금 영역(611)의 주소 정보를 이용하여 텍스처를 생성할 수 있다. 예를 들어, FB 텍스처 생성 모듈(122)은 텍스처 오브젝트(texture object)를 생성하고, 생성된 텍스처 오브젝트에 빗금 영역(611)을 할당할 수 있다. 예를 들어, FB 텍스처 생성 모듈(122)은 제1 GPU 드라이버(110)의 할당부(111)를 통해 텍스처 오브젝트에 빗금 영역(611)을 할당할 수 있다. 이때, 제1 운영체제(100)는 프레임 버퍼(600)의 제2 영역(602)에 접근하기 위한 권한 정보를 포함할 수 있다. 위 작업을 통해, 빗금 영역(611)에 저장된 제2 운영체제(200)의 화면 데이터는 제1 운영체제(100)에 의해 제어가능한 텍스처(즉, 제1 운영체제(100)의 그래픽 데이터)로 변환될 수 있다.
또한, FB 텍스처 생성 모듈(122)은 제2 운영체제(200)의 제어 정보(예를 들어, 제2 운영체제(200)의 화면 데이터를 출력하기 위한 제어 정보) 또는 사용자 입력 정보를 이용하여, 텍스처 오브젝트가 출력되는 크기 및 위치를 결정할 수 있다.
또한, FB 텍스처 생성 모듈(122)은 생성된 텍스처 오브젝트를 제1 운영체제(100)의 그래픽스 스택(130)으로 제공할 수 있다. 이와 같이, FB 텍스처 생성 모듈(122)은 제2 운영체제(200)의 화면 데이터가 저장된 메모리 공간(즉, 빗금 영역(611)을 제1 운영체제(100)의 텍스처 버퍼로 지정함으로써, 제2 운영체제(200)의 화면 데이터를 제1 운영체제(100)의 그래픽 데이터와 통합할 수 있다.
그래픽스 스택(130)은 호스트 텍스처(131)와 게스트 텍스처(132)를 포함할 수 있다. 호스트 텍스처(131)는 제1 운영체제(100)에서 처리되는 그래픽 데이터로부터 생성된 텍스처 오브젝트를 관리할 수 있다. 게스트 텍스처(132)는 프레임 버퍼(600)의 제2 영역(602)에 저장된 텍스트 오브젝트들을 관리할 수 있다.
할당부(111)는 오브젝트에 메모리 공간을 할당하고, 할당된 메모리 공간의 주소 정보를 GPU(400)로 제공할 수 있다. 예를 들어, 할당부(111)는 FB 텍스처 생성 모듈(122)의 지시에 따라 텍스처 오브젝트에 빗금 영역(611)을 할당하고, 빗금 영역(611)의 주소 정보를 GPU(400)로 제공할 수 있다.
GPU(400)는 텍스처 바인딩 테이블(410), 버텍스 쉐이더(420), 픽셀 쉐이더(430) 및 Bitter(440) 중 적어도 하나를 포함할 수 있다. GPU(400)는 화면에 표시된 화면 데이터를 생성하고, 생성된 화면 데이터를 프레임 버퍼(600)에 저장할 수 있다.
텍스처 바인딩 테이블(410)은 텍스처에 대한 정보를 포함할 수 있다. 예를 들어, 텍스처 바인딩 테이블(410)은 런타임에 처리할 텍스처들이 저장된 주소 정보를 저장할 수 있다. 따라서, 제2 운영체제(200)의 화면 데이터가 저장된 영역(611)의 주소 정보는, 제1 운영체제(100)에 의해 텍스처 바인딩 테이블(410)에서 관리될 수 있다.
실시예에 따라 GPU(400)는 텍스처 포맷 변경 모듈(미도시)을 더 포함할 수 있다. 텍스처 포맷 변경 모듈(미도시)은 예를 들어, 텍스처의 포맷이 GPU(400) 가 지원하는 텍스처 포맷에 알맞지 않는 경우, 텍스처의 포맷을 변경하는 작업을 수행할 수 있다.
도 6은 다른 실시예에 따라 전자 장치가 제2 운영체제의 화면 데이터를 포함하는 제1 운영체제의 그래픽 데이터를 생성하는 동작을 설명하기 위한 도면이다.
도 6을 참조하면, 전자 장치(10)는 프레임 버퍼(600)의 제2 영역(602) 에 저장된 제2 운영체제(200)의 화면 데이터를 제1 영역(601)으로 복사함으로써, 제2 운영체제(200)의 화면 데이터를 포함하는 제1 운영체제(100)의 화면 데이터를 생성할 수 있다.
예를 들어, FB 텍스처 생성 모듈(122)은 제2 영역(602)의 빗금 영역(611)에 저장된 제2 운영체제(200)의 화면 데이터를 제1 영역(601)으로 복사할 수 있다. 이때, FB 텍스처 생성 모듈(122)은 빗금 영역(611)에 저장된 제2 운영체제(200)의 화면 데이터의 포맷을 변경하여 제1 영역(601)으로 복사할 수 있다. 이때, FB 텍스처 생성 모듈(122)은 제1 운영체제(100)가 지원하는 데이터 포맷에 기초하여, 제2 운영체제(200)의 화면 데이터의 포맷을 변경할 수 있다.
FB 텍스처 생성 모듈(122)은 제1 영역(601)으로 복사된 제2 운영체제(200)의 화면 데이터를 텍스처로 갖는 텍스처 오브젝트를 생성할 수 있다. 따라서, 할당부(111)는 제1 영역(601)의 주소 정보를 GPU(400) 로 제공할 수 있다.
GPU(400)는 제1 영역(601)에 저장된 제2 운영체제(200)의 화면 데이터를 포함하는 제1 운영체제(100)의 화면 데이터를 생성할 수 있다. 이 경우, GPU(400)는 제2 영역(602)에 접근하지 않을 수 있다.
도 7은 제2 운영체제의 화면 데이터가 저장된 프레임 버퍼의 주소 정보를 획득하는 일례이다.
도 7을 참조하면, 전자 장치(10)는 제2 운영체제(200)의 화면 데이터에 접근하기 위하여, 제2 운영체제(200)의 화면 데이터가 저장된 프레임 버퍼(600)의 주소 정보를 획득할 수 있다.
하이퍼바이저(300)의 매개 모듈(313)이 제2 운영체제(200)의 제어 정보 및 메모리 맵핑 정보를 획득하면, 매개 모듈(313)은 제2 운영체제(200)의 제어 정보 및 메모리 맵핑 정보(711)를 FB 주소 정보 획득 모듈(121)로 제공할 수 있다.
FB 주소 정보 획득 모듈(121)은 제2 운영체제(200)의 제어 정보로부터 제2 운영체제(200)의 화면 데이터가 저장된 프레임 버퍼(600)의 주소 정보를 획득할 수 있다. 획득된 주소 정보는, 제2 운영체제(200)의 주소 체계에 기반한 것일 수 있다. 따라서, FB 주소 정보 획득 모듈(121)은 제2 운영체제(200)의 메모리 맵핑 정보(711)에 기초하여, 획득된 주소 정보의 물리 주소를 획득하고, 제1 운영체제(100)의 메모리 맵핑 정보(712)에 기초하여 제1 운영체제의 주소 체계로 변환할 수 있다.
한편, 도 7에서는, FB 주소 정보 획득 모듈(121)이 제2 운영체제(200)의 화면 데이터가 저장된 프레임 버퍼(600)의 주소 정보를 제1 운영체제(100)의 주소 체계로 변환하는 것으로 설명하였으나, 이에 제한되지 않는다. 예를 들어, 하이퍼바이저(300)가 전술한 동작을 수행할 수 있다.
도 8은 실시예에 따라 제1 운영체제가 제2 운영체제의 화면 데이터가 저장된 주소 정보를 획득하는 시점을 결정하는 동작을 설명하기 위한 도면이다.
도 8을 참조하면, 제1 운영체제(100)는 GPU(400)에 의해 프레임 버퍼(600)에 제2 운영체제(200)의 화면 데이터가 생성된 이후에 제2 운영체제(200)의 화면 데이터를 제1 운영체제(100)의 그래픽 데이터로 이용할 수 있다. 프레임 버퍼(600)에 전체 데이터가 저장되기 이전에 제1 운영체제(100)가 프레임 버퍼(600)에 접근할 경우(즉, 텍스처 오브젝트 할당하는 경우), 화면의 티어링(tearing)이 발생될 수 있다. 따라서, 제1 운영체제(100)는 프레임 버퍼 완료 신호를 수신한 이후에 텍스처 오브젝트에 제2 운영체제(200)의 화면 데이터가 저장된 프레임 버퍼(600)의 주소 영역을 할당할 수 있다.
Step1: 제2 운영체제(200)는 제2 운영체제(200)에서 처리되는 그래픽 데이터를 직접 GPU(400)로 전송한다.
Step2: 하이퍼바이저(300)의 싱크(sync) 모듈(316)은 GPU(400)로부터 그래픽 데이터에 대한 렌더링 결과값이 프레임 버퍼(600)에 저장되었다는 프레임 버퍼 완료 신호를 수신한다.
Step3: 화면 통합 모듈(120)은 프레임 버퍼 완료 신호를 수신한 후에 텍스처 오브젝트에 제2 운영체제(200)의 화면 데이터가 저장된 프레임 버퍼(600)의 주소 영역을 할당한다.
한편, 도 8에서는, 하이퍼바이저(300)가 GPU(400)로부터 프레임 버퍼 완료 신호를 획득하는 것으로 설명하였으나, 이에 제한되는 것은 아니다. 예를 들어, 하이퍼바이저(300)의 GPU 모니터링 모듈(미도시)이 제2 운영체제(200)의 제어 정보(예를 들어, GPU 레지스터 값)을 모니터링하여, 제2 운영체제(200)의 그래픽 데이터에 대한 렌더링 결과값이 모두 프레임 버퍼(600)에 저장되었는지 여부를 판단할 수도 있다. 이 경우, 싱크 모듈(316)은 GPU 모니터링 모듈(미도시)의 판단 결과에 따라 화면 통합 모듈(120)로 프레임 버퍼 완료 신호를 전송할 수 있다.
또는, 하이퍼바이저(300)는 미리 설정된 시간 간격으로, 제1 운영체제(100)로 프레임 버퍼 완료 신호를 제공할 수도 있다. 이 경우, 하이퍼바이저(300)는 타이머(미도시)를 더 포함할 수 있다.
도 9는 전자 장치가 제2 운영체제의 화면 데이터를 포함하는 제1 운영체제의 화면 데이터를 출력하는 일례이다.
도 9를 참조하면, 전자 장치(10)는 안드로이드 운영체제의 화면 데이터가 출력된 안드로이드 화면(11)과 윈도우 운영체제의 화면 데이터가 출력된 윈도우 화면(12)을 겹치게 표시할 수 있다. 도 9의 경우, 안드로이드 운영체제가 제1 운영체제(100)고, 윈도우 운영체제가 제2 운영체제(200)일 수 있다. 따라서, 안드로이드 화면(11)은 전체 화면(full window)으로 표시되고, 윈도우 화면(12)은 서브 화면(sub window)으로 표시될 수 있다. 또한, 윈도우 화면(12)은 안드로이드 화면(11)의 위에 표시될 수 있다.
전자 장치(10)는 안드로이드 화면(11)의 일부 영역을 윈도우 화면(12)에 할당할 수 있다. 전자 장치(10)는 윈도우 운영체제로부터 윈도우 화면 데이터를 획득하고, 윈도우 화면 데이터의 데이터 포맷을 안드로이드 운영체제에서 처리할 수 있는 데이터 포맷으로 변환할 수 있다.
또한, 전자 장치(10)는 윈도우 화면(12)이 표시되는 위치 및 크기 정보를 결정할 수 있다. 예를 들어, 안드로이드 운영체제는 윈도우 운영체제로부터 획득되는 제어 정보(예를 들어, 윈도우 화면 데이터를 출력하기 위한 제어 정보)를 이용하여 윈도우 화면(12)이 표시될 위치 및 크기를 결정할 수 있다.
전자 장치(10)는 결정된 위치 및 크기에 기초하여, 윈도우 화면(12)을 포함하는 안드로이드 화면(11)을 출력할 수 있다.
도 10은 전자 장치가 제2 운영체제의 화면 데이터를 포함하는 제1 운영체제의 화면 데이터를 출력하는 다른 일례이다.
도 10을 참조하면, 전자 장치(10)는 윈도우 화면(12)과 통지 바(notification bar)(13)를 함께 표시할 수 있다. 도 10의 경우, 윈도우 운영체제가 제1 운영체제(100)고, 안드로이드 운영체제가 제2 운영체제(200)일 수 있다. 따라서, 윈도우 화면(12)이 전체 화면(full window)으로 표시되고, 통지 바(13)는 윈도우 화면(12)의 일부 영역에 표시될 수 있다. 통지 바(13)는 안드로이드 운영체제에서 사용하는 설정 윈도우를 포함할 수 있다. 또한, 통지 바(13)는 사용자 입력에 따라 화면에서 사라지거나 나타날 수 있다.
도 11은 실시예에 따라 전자 장치가 GPU 의 스케줄링 우선순위를 결정하는 동작을 설명하기 위한 도면이다.
도 11을 참조하면, 전자 장치(10)는 운영체제들의 워크로드를 고려하여 서로 다른 갱신 주기로 제1 운영체제(100)의 화면 데이터 및 제2 운영체제(200)의 화면 데이터를 생성할 수 있다. 설명의 편의를 위해, 화면 데이터의 갱신 주기는 FPS(frame per sec) 단위를 이용하여 설명한다.
실시예에 따라 전자 장치(10)는 운영체제 별로 설정된 목표 FPS 및 현재 FPS 를 비교하여, 운영체제의 FPS 를 조정할 수 있다.
제1 운영체제(100)는 제1 어플리케이션(140), 목표 FPS 설정 모듈(150) 및 제1 모니터링 모듈(160)을 더 포함할 수 있다. 제2 운영체제(200)는 제2 어플리케이션(240) 및 제2 모니터링 모듈(260)을 더 포함할 수 있다. 또한, 하이퍼바이저(300)는 스케쥴링 우선순위 설정 모듈(320)을 더 포함할 수 있다. 한편, 실시예에 따라 스케쥴링 우선순위 설정 모듈(320)은 매개 모듈(313)에 포함될 수 있다. 또한, 도 11에서는, 목표 FPS 설정 모듈(150)은 제1 운영체제(100)에 포함되는 것으로 도시하였으나, 이에 제한되지 않으며, 전자 장치(10) 내의 복수의 운영체제 각각이 목표 FPS 설정 모듈을 포함할 수도 있다.
제1 어플리케이션(140)은 그래픽 데이터 처리를 요구하는 제1 운영체제(100)의 응용 프로그램일 수 있다. 제2 어플리케이션(240)은 그래픽 데이터 처리를 요구하는 제2 운영체제(200)의 응용 프로그램일 수 있다.
목표 FPS 설정 모듈(150)은 전자 장치(10)의 입력부(미도시)로부터 수신된 사용자 입력에 응답하여, 운영체제 또는 어플리케이션 별 목표 FPS 를 설정할 수 있다. 또는, 목표 FPS 설정 모듈(150)은 전자 장치(10)에 설치되는 운영체제 또는 각 운영체제에서 실행중인 어플리케이션의 요구사항에 기초하여, 목표 FPS 를 설정할 수 있다. 예를 들어, 동영상 재생 어플리케이션이 실행중인 운영체제의 목표 FPS 는 높게 설정되고, 웹 브라우저 어플리케이션이 실행중인 운영체제의 FPS 는 상대적으로 낮게 설정될 수 있다. 설정된 FPS 정보는 스케쥴링 우선순위 설정 모듈(320)로 전송될 수 있다.
제1 및 제2 모니터링 모듈(160, 260)은 각 운영체제의 현재 FPS 또는 운영체제에서 실행 중인 각 어플리케이션의 현재 FPS를 모니터링 할 수 있다. 제1 및 제2 모니터링 모듈(160, 260)은 모니터링된 결과를 스케쥴링 우선순위 설정 모듈(320)로 전송할 수 있다.
스케쥴링 우선순위 설정 모듈(320)은 운영체제의 목표 FPS 와 현재 FPS 를 비교하여, 운영체제의 현재 FPS 를 조정할 수 있다. 예를 들어, 제1 운영체제(100)의 목표 FPS 가 현재 FPS 보다 낮은 경우, 스케쥴링 우선순위 설정 모듈(320)은 제1 운영체제(100)의 우선순위를 낮출 수 있다. 또는, 제1 운영체제(100)의 목표 FPS 가 현재 FPS 보다 높은 경우, 스케쥴링 우선순위 설정 모듈(320)은 제1 운영체제(100)의 우선순위를 높일 수 있다. 다시 말하면, 스케쥴링 우선순위 설정 모듈(320)은 각 운영체제의 FPS 가 목표 FPS 에 부합되도록, 각 운영체제의 GPU 스케쥴링 우선순위를 조정할 수 있다.
매개 모듈(313)은 스케쥴링 우선순위 설정 모듈(320)에서 결정된 우선순위에 따라 GPU(400)를 제어할 수 있다. 따라서, GPU(400)은 우선순위가 높은 운영체제의 그래픽 데이터를 우선하여 처리하고, 우선순위가 낮은 운영체제의 그래픽 데이터를 재사용한 결과값을 생성할 수 있다.
도 12는 운영체제들의 GPU 스케쥴링 우선순위를 설정하기 위한 사용자 인터페이스를 제공하는 일 예이다.
도 12를 참조하면, 전자 장치(10)는 실행가능한 운영체제들의 식별값들(X OS, Y OS, N OS) 및 GPU 처리 속도를 결정하는 사용자 입력을 수신하기 위한 UI(1220)를 포함하는 그래픽 처리 속도 설정창(1210)을 제공할 수 있다. 전자 장치(10)는 UI(1220)에 대한 사용자 입력에 응답하여, 운영체제들의 GPU 스케쥴링 우선 순위를 결정할 수 있다.
이때, 상기 UI(1210)는 사용자 입력에 따른 팝업(pop-up)창일 수 있다. 예를 들어, 전자 장치(10)는 운영체제 식별값들(X OS, Y OS, N OS) 중 하나를 선택하는 사용자 입력이 수신되면, 상기 UI(1210)를 출력할 수 있다. 또한, 전자 장치(10)는 상기 UI(1210)를 통해 GPU 처리 속도를 결정하는 선택하는 사용자 입력이 수신되면, 선택된 운영체제 식별값에 대응되는 운영체제의 스케쥴링 우선 순위를 조정할 수 있다.
한편, 도 12에서는 전자 장치(10)가 운영체제의 식별값을 포함하는 그래픽 처리 속도 설정창(1210)을 제공하는 것으로 설명하였으나, 이에 제한되지 않는다. 예를 들어, 전자 장치(10)는 어플리케이션의 식별값을 포함하는 그래픽 처리 속도 설정창을 제공하고, 어플리케이션 별 GPU 처리 속도를 결정하기 위한 UI를 제공할 수도 있다. 어플리케이션 별 GPU 처리 속도가 결정되는 경우, 전자 장치(10)는 운영체제에서 실행중인 어플리케이션에 따라 운영체제의 GPU 스케쥴링 우선순위를 결정할 수 있다.
도 13은 운영체제들의 GPU 스케쥴링 우선순위를 설정하기 위한 사용자 인터페이스를 제공하는 다른 예이다.
도 13을 참조하면, 전자 장치(10)는 팝업 UI(1310)를 사용자에게 제공하여 운영체제(또는 어플리케이션)의 FPS를 조정할 수 있다. 예를 들어, 전자 장치(10)는 포그라운드로 실행중인 운영체제의 FPS 를 조정할 수 있는 핫-키(hot key) 또는 단축키를 제공할 수 있다. 전자 장치(10)는 핫-키 또는 단축키에 대한 사용자 입력이 수신되면, 운영체제(또는 어플리케이션)의 FPS 를 조정할 수 있는 팝업 UI(1310)를 제공할 수 있다.
또한, 팝업 UI(1310)는 FPS 를 조정할 수 있는 화살표 표지(1311, 1312)를 포함할 수 있다. 따라서, 전자 장치(10)는 팝업 UI(1310)의 화살표 표지(1311, 1312)에 대한 사용자 입력에 응답하여, 운영체제 또는 어플리케이션 별 FPS 를 증가 또는 감소시킬 수 있다.
도 14는 운영체제의 설정창을 이용하여 운영체제들의 FPS 를 설정하는 일례이다.
도 14를 참조하면, 전자 장치(10)는 호스트 운영체제(예를 들어, 제1 운영체제(100))의 설정창에서 게스트 운영체제(예를 들어, 제2 운영체제(200))의 FPS 를 설정할 수 있다. 예를 들어, 전자 장치(10)는 제1 및 제2 운영체제(100, 200)의 GPU 스케쥴링 최소 요구 FPS를 설정하기 위한 항목을 제공할 수 있다. 도 14의 경우, 제1 운영체제(100)의 최소 FPS는 30, 제2 운영체제(200)의 최소 FPS는 15로 설정된 경우를 도시한다.
또한, 전자 장치(10)는 제1 및 제2 운영체제(100, 200)의 GPU 스케쥴링 가중치를 설정하기 위한 항목을 제공할 수 있다. 도 14의 경우, 제1 운영체제(100)는 자동 설정, 제2 운영체제(200)는 30 고정으로 설정된 경우를 도시한다.
사용자는 전자 장치(10)의 화면을 통해 상기 항목들이 제공되면, 터치, 가상 키보드, 음성, 제츠쳐 등의 입력 수단을 이용하여 설정값들을 변경할 수 있다.
도 15는 일 실시예에 따라 전자 장치의 구성을 설명하기 위한 블록도이다.
도 15를 참조하면, 전자 장치(1000)는 프로세서(processor, 1100), 그래픽 프로세서(graphic processor, 1200) 및 디스플레이(1300)를 포함한다.
프로세서(1100)는 이전 도면들에서 개시된 복수의 운영체제들, 하이퍼바이저, 각종 모듈 및 드라이버 등을 구동할 수 있다. 따라서, 이전 도면들에서 개시된 복수의 운영체제들, 하이퍼바이저, 각종 모듈 및 드라이버 등에 관한 사항들은 도 15의 프로세서(1100)에도 동일하게 적용된다.
프로세서(1100)는 제2 운영체제(200)의 그래픽 데이터로부터 제2 운영체제(200)의 화면 데이터를 생성할 수 있다. 예를 들어, 프로세서(1100)는 그래픽 프로세서(1200)를 제어함으로써, 제2 운영체제(200)의 그래픽 데이터로부터 제2 운영체제(200)의 화면 데이터를 생성할 수 있다. 또한, 프로세서(1100)는 제2 운영체제(200)의 화면 데이터에 관련된 제어 정보 및 메모리 맵핑 정보 중 적어도 하나를 제1 운영체제(100)가 획득하도록 할 수 있다. 또한, 프로세서(1100)는 제2 운영체제(200)의 화면 데이터를 제1 운영체제(100)의 그래픽 데이터로 변환할 수 있다. 예를 들어, 프로세서(1100)는 제2 운영체제(200)의 화면 데이터가 저장된 프레임 버퍼의 주소 정보를 이용하여 제2 운영체제(200)의 화면 데이터에 대응되는 제1 운영체제(100)의 텍스처 오브젝트를 생성할 수 있다. 또한, 프로세서(1100)는 제1 운영체제(100)의 화면 데이터를 생성할 수 있다. 예를 들어, 프로세서(1100)는 그래픽 프로세서(1200)를 제어하여, 제1 운영체제(100)의 화면 데이터를 생성할 수 있다.
또한, 프로세서(1100)는 디스플레이(1300)를 제어하여 생성된 제1 운영체제(100)의 화면 데이터가 표시되도록 할 수 있다.
또한, 프로세서(1100)는 각 운영체제의 워크로드(workload) 또는 사용자 입력에 따라, 각 운영체제의 화면 데이터가 갱신되는 주기가 달라지도록 제어할 수 있다. 예를 들어, 프로세서(1100)는 운영체제 별로 설정된 목표 FPS 와 운영체제의 현재 FPS 를 이용하여, 운영체제의 GPU 스케쥴링 우선 순위를 조정할 수 있다. 한편, 프로세서(1100)는 어플리케이션 별 워크로드 또는 사용자 입력에 따라, 각 어플리케이션의 화면 데이터가 갱신되는 주기를 조정할 수도 있다.
그래픽 프로세서(1200)는 이전 도면들에서 개시된 그래픽 처리 장치(GPU)에 대응될 수 있다. 그래픽 프로세서(1200)는 프로세서(1100)의 제어에 따라 화면 데이터를 생성할 수 있다. 예를 들어, 그래픽 프로세서(1200)는 생성된 화면 데이터를 프레임 버퍼에 저장하고, 프레임 버퍼 완료 신호를 프로세서(1100) 또는 디스플레이(1300)로 제공할 수 있다.
디스플레이(1300)는 프로세서(1100)의 제어에 따라 화면 데이터를 표시할 수 있다. 예를 들어, 디스플레이(1300)는 프레임 버퍼에 저장된 화면 데이터를 출력할 수 있다.
한편, 디스플레이(1300)가 터치패드와 레이어 구조를 이루어 터치 스크린으로 구성되는 경우, 디스플레이(1300)는 출력 장치 이외에 입력 장치로도 사용될 수 있다. 예를 들어, 디스플레이(1300)는 스타일러스 펜 또는 손가락의 터치, 롱 터치, 탭핑(tapping) 등을 감지하여 감지 결과를 프로세서(1100)로 출력할 수 있다. 프로세서(1100)는 디스플레이(1300)로부터의 감지 결과에 기초하여 운영체제 또는 어플리케이션의 갱신 주기(즉, FPS)를 설정하기 위한 팝업창을 표시하도록 디스플레이 장치(1300)를 제어할 수 있다.
도 16 내지 20 은 실시예에 따른 전자 장치(10)의 동작 방법을 설명하는 도면이다. 도 16 내지 도 20 에 도시된 전자 장치의 동작 방법은, 앞서 설명된 도 1 내지 도 15 등에서 설명된 실시예와 관련된다. 따라서, 이하 생략된 내용이라 할지라도, 도 1 내지 도 15 등에서 앞서 설명된 내용들은, 도 15 내지 도 20 의 디바이스들의 동작에도 적용될 수 있다.
도 16은 실시예에 따라 전자 장치의 동작 방법을 설명하기 위한 흐름도이다. 이하에서는, 설명의 편의상, 전자 장치(10)가 호스트 운영체제로서 동작하는 제1 운영체제(100) 및 게스트 운영체제로서 동작하는 제2 운영체제(200)를 구동하는 것으로 설명하나, 개시된 실시예는 세 개 이상의 운영체제들을 구동시킬 수 있다. 전자 장치(10)가 세 개 이상의 운영체제들을 구동시킬 경우, 제 3 내지 제 N 운영체제들은 게스트 운영체제로서 제2 운영체제(200)와 동일 또는 유사한 동작을 수행할 수 있다.
도 16을 참조하면, s1610에서, 전자 장치(10)는 제2 운영체제(200)에 의해 처리된 그래픽 데이터로부터 제2 운영체제(200)의 화면 데이터를 생성한다.
그래픽 데이터는, 예를 들어, 그래픽 데이터는 버텍스(vertex) 데이터, 텍스처(texture) 데이터 등을 포함할 수 있으나, 이에 제한되는 것은 아니다. 또한, 화면 데이터는 화면에 출력될 수 있는 픽셀 데이터를 포함할 수 있다. 전자 장치(10)는 그래픽 데이터를 바로 화면에 출력할 수 없으며, 예를 들어, GPU(400) 등을 이용하여 그래픽 데이터로부터 화면 데이터를 생성할 수 있다.
실시예에 따라 전자 장치(10)는 제2 운영체제(200)에서 처리되는 그래픽 데이터 및 제2 운영체제(200)의 화면 데이터에 관련된 제어 정보를 생성할 수 있다. 화면 데이터에 관련된 제어 정보는, 그래픽 데이터로부터 화면 데이터를 생성하기 위한 제어 정보 및 생성된 화면 데이터를 출력하기 위한 제어 정보를 포함할 수 있다.
실시예에 따라 전자 장치(10)는 제2 운영체제(200)의 그래픽 데이터를 제2 운영체제(200)로부터 GPU(400)로 직접 제공(즉, pass-through access)하고, 화면 데이터에 관련된 제어 정보를 하이퍼바이저(300)를 통해 GPU(400)로 제공(즉, mediated access)할 수 있다.
실시예에 따라 전자 장치(10)는 예를 들어, 하이퍼바이저(300)에서 제2 운영체제(200)로부터 획득된 제2 운영체제(200)의 화면 데이터에 관련된 제어 정보를 관리할 수 있다. 따라서, 전자 장치(10)는 하이퍼바이저(300)를 통해 GPU(400)로 제공된 제2 운영체제(200)의 제어 정보에 기초하여, GPU(400)로 직접 제공된 제2 운영체제(200)의 그래픽 데이터로부터 제2 운영체제(200)의 화면 데이터를 생성할 수 있다.
s1620에서, 전자 장치(10)의 제1 운영체제(100)는 제2 운영체제(200)의 화면 데이터에 관련된 제어 정보 및 제2 운영체제(200)의 메모리 맵핑 정보 중 적어도 하나를 획득한다. 메모리 맵핑 정보는, 운영체제의 페이지 테이블(page table)의 전부 또는 일부를 포함할 수 있다.
실시예에 따라 전자 장치(10)는, 하이퍼바이저(300)를 통해, 제2 운영체제(200)의 화면 데이터에 관련된 제어 정보 및 메모리 맵핑 정보 중 적어도 하나를 제1 운영체제(100)로 제공할 수 있다. 예를 들어, 전자 장치(10)는 제2 운영체제(200)의 화면 데이터가 생성되면, 생성된 화면 데이터를 출력하지 않고, 제2 운영체제(200)의 화면 데이터에 관련된 제어 정보 및 메모리 맵핑 정보를 제1 운영체제(100)로 제공할 수 있다.
또는, 전자 장치(10)의 제1 운영체제(100)는 제2 운영체제(200)로부터 직접 제2 운영체제(200)의 제어 정보 및 메모리 맵핑 정보를 획득할 수도 있다. 예를 들어, 제1 운영체제(100)는 제2 운영체제(200)가 GPU(400) 및/또는 디스플레이(1300)에 접근하는 것을 후킹(Hooking)할 수 있다.
s1630에서, 전자 장치(10)는 제2 운영체제(200)의 제어 정보 및 메모리 맵핑 정보 중 적어도 하나에 기초하여, 제2 운영체제(200)의 화면 데이터를 제1 운영체제(100)의 그래픽 데이터로 변환한다.
실시예에 따라 전자 장치(10)는 제2 운영체제(200)의 제어 정보 및 메모리 맵핑 정보 중 적어도 하나에 기초하여, 제2 운영체제(200)의 화면 데이터가 저장된 메모리 영역(예를 들어, 프레임 버퍼)의 주소 정보를 획득할 수 있다. 또한, 전자 장치(10)는 제2 운영체제(200)의 화면 데이터가 저장된 주소 정보를 이용하여, 제2 운영체제(200)의 화면 데이터가 저장된 메모리 영역에 대응되는 제1 운영체제(100)의 텍스처 오브젝트(texture object)를 생성할 수 있다. 이때, 텍스처 오브젝트는, 제2 운영체제(200)의 화면 데이터가 메모리 영역에 모두 저장되었다는 신호가 상기 제1 운영체제(100)에 수신된 후에 생성될 수 있다.
실시예에 따라 전자 장치(10)는 제2 운영체제(200)의 화면 데이터가 저장된 메모리 영역의 데이터 포맷과 제1 운영체제(100)의 화면 데이터가 저장될 메모리 영역의 데이터 포맷이 상이한 경우, 텍스처 오브젝트의 포맷을 변경할 수 있다.
s1640에서, 전자 장치(10)는 제1 운영체제(100)의 그래픽 데이터로부터 제2 운영체제(200)의 화면 데이터를 포함하는 제1 운영체제(100)의 화면 데이터를 생성한다.
실시예에 따라 전자 장치(10)는 제2 운영체제(200)의 화면 데이터에 대응되는 텍스처 오브젝트를 포함하는 제1 운영체제(100)의 그래픽 데이터를 GPU(400)로 전송하여, 제2 운영체제(200)의 화면 데이터를 포함하는 제1 운영체제(100)의 화면 데이터를 생성할 수 있다. 이때, 제1 운영체제(100)의 화면 데이터를 생성하기 위한 제어 정보는 하이퍼바이저(300)를 통해 GPU(400)로 제공될 수 있다.
s1650에서, 전자 장치(10)는 제1 운영체제(100)의 화면 데이터를 표시한다.
실시예에 따라 전자 장치(10)는 GPU(400)에 의해 제1 운영체제(100)의 화면 데이터가 생성되면, 제1 운영체제(100)의 화면 데이터를 출력하기 위한 제어 정보를 디스플레이(1300)로 제공할 수 있다. 이때, 제1 운영체제(100)의 화면 데이터는 제1 운영체제(100)의 프레임 버퍼에 저장될 수 있다. 따라서 전자 장치(10)는 하이퍼바이저(300)를 통해 디스플레이(1300)로 제공된 제어 정보에 기초하여, 프레임 버퍼에 저장된 제1 운영체제(100)의 화면 데이터를 표시할 수 있다.
도 17은 실시예에 따라 전자 장치가 제2 운영체제의 화면 데이터에 관련된 제어 정보를 제1 운영체제로 제공하는 방법을 설명하기 위한 흐름도이다.
도 17을 참조하면, s1710에서, 전자 장치(10)는 제2 운영체제(200)의 화면 데이터에 관련된 제어 정보를 생성할 수 있다. 예를 들어, 전자 장치(10)는 GPU 레지스터 값(예를 들어, 프레임 버퍼의 주소 값 등), GPU 스케쥴링 정보, 디스플레이 레지스터 값, 디스플레이 스케쥴링 정보 등을 포함하는 제어 정보를 생성할 수 있다.
s1720에서, 전자 장치(10)는 제2 운영체제(200)의 제어 정보를 하이퍼바이저(300)를 이용하여 후킹(Hooking)할 수 있다.
실시예에 따라 전자 장치(10)는 제2 운영체제(200)가 GPU(400)에 접근하는 것을 하이퍼바이저(300)가 후킹하도록 제어할 수 있다. 또한, 전자 장치(10)는 제2 운영체제(200)의 메모리 맵핑 정보를 하이퍼바이저(300)를 이용하여 후킹할 수 있다.
s1730에서, 전자 장치(10)는 제2 운영체제(200)의 제어 정보를 제1 운영체제(100)로 제공할 수 있다. 또한, 전자 장치(10)는 제2 운영체제(200)의 메모리 맵핑 정보를 제1 운영체제(100)로 제공할 수 있다.
도 18은 실시예에 따라 전자 장치가 제2 운영체제의 화면 데이터를 제1 운영체제의 그래픽 데이터로 변환하는 방법을 설명하기 위한 흐름도이다.
도 18을 참조하면, s1810에서, 전자 장치(10)는 제1 운영체제(100)의 텍스처 오브젝트(texture object)를 생성할 수 있다.
s1820에서, 전자 장치(10)는 제2 운영체제(200)의 화면 데이터가 저장된 저장 공간, 예를 들어, 프레임 버퍼의 공간을 텍스처 오브젝트에게 할당할 수 있다.
실시예에 따라 전자 장치(10)는 제2 운영체제(200)의 제어 정보로부터 제2 운영체제(200)의 화면 데이터가 저장된 프레임 버퍼의 영역의 주소 정보를 획득할 수 있다. 예를 들어, 전자 장치(10)는 GPU 레지스터 값으로부터 상기 영역의 주소 정보를 획득할 수 있다.
또한, 전자 장치(10)는 제2 운영체제(200)의 메모리 맵핑 정보에 기초하여, 획득된 주소 정보를 제1 운영체제(100)의 주소 체계로 변환할 수 있다.
또한, 전자 장치(10)는 획득된 주소 정보를 이용하여, 제2 운영체제(200)의 화면 데이터가 저장된 프레임 버퍼의 공간을 생성된 텍스처 오브젝트에게 할당할 수 있다. 이때, 제1 운영체제(100)는 제2 운영체제(200)의 프레임 버퍼에 접근하기 위한 권한 정보를 포함할 수 있다. 한편, 할당된 텍스처 오브젝트에 대한 정보는 GPU(400)로 제공될 수 있다.
또한, 전자 장치(10)는 제2 운영체제(200)의 제어 정보(예를 들어, 제2 운영체제(200)의 화면 데이터를 출력하기 위한 제어 정보) 또는 사용자 입력 정보를 이용하여, 텍스처 오브젝트가 출력되는 크기 및 위치를 결정할 수 있다.
s1830에서, 전자 장치(10)는 제1 운영체제(100)의 프레임 버퍼의 포맷이 제2 운영체제(200)의 프레임 퍼버의 포맷과 상이한지 판단할 수 있다. 만약, 제1 운영체제(100)의 프레임 버퍼의 포맷이 제2 운영체제(200)의 프레임 버퍼의 포맷과 상이하면, s1840에서, 전자 장치(10)는 텍스처 오브젝트의 포맷을 변경할 수 있다.
예를 들어, 제2 운영체제(200)의 화면 데이터는 프레임 버퍼에서 x-축 기준 포맷(x-major format)으로 저장되어 있고, 제1 운영체제(100)는 y-축 기준 포맷(y-major format)을 지원할 수 있다. 이 경우, 전자 장치(10)는 텍스처 오브젝트의 포맷을 y-축 기준 포맷으로 변경할 수 있다. 그러나, 이에 제한되는 것은 아니다. 예를 들어, 전자 장치(10)는 텍스처 오브젝트의 포맷을 x-축 기준 포맷으로 변경하여, 제1 운영체제(100)의 프레임 버퍼로 이동시킬 수 있다.
만약, 제1 운영체제(100)의 프레임 버퍼의 포맷이 제2 운영체제(200)의 프레임 버퍼의 포맷과 동일하면, 전자 장치(10)는 바로 s1850을 수행한다.
s1850에서, 전자 장치(10)는 제2 운영체제(200)의 화면 데이터를 포함하는 제1 운영체제(100)의 화면 데이터를 생성할 수 있다.
도 19는 실시예에 따라 전자 장치가 제2 운영체제의 화면 데이터를 제1 운영체제의 그래픽 데이터로 변환하는 시점을 결정하는 방법을 설명하기 위한 흐름도이다.
도 19를 참조하면, s1910에서, 전자 장치(10)는 제2 운영체제의 화면 데이터가 프레임 버퍼에 모두 저장되었는지 판단할 수 있다. 전자 장치(10)는 방법1 내지 방법 3을 이용하여 제2 운영체제의 화면 데이터가 프레임 버퍼에 모두 저장되었는지 여부를 판단할 수 있다.
방법 1은, 전자 장치(10)가 GPU(400)로부터 제공되는 프레임 버퍼 완료 신호에 기초하여, 제2 운영체제(200)의 화면 데이터가 프레임 버퍼에 모두 저장되었는지 여부를 판단하는 방법이다.
방법 2는, 전자 장치(10)가 하이퍼바이저(300)를 통해 GPU 레지스터 값을 모니터링함으로써, 제2 운영체제(200)의 화면 데이터가 프레임 버퍼에 모두 저장되었는지 여부를 판단하는 방법이다.
방법 3은, 전자 장치(10)가 미리 설정된 시간마다 제2 운영체제(200)의 화면 데이터가 프레임 버퍼에 모두 저장되었다고 판단하는 방법이다.
방법1 내지 방법 3의 판단 결과에 따라, s1920에서, 전자 장치(10)는 제2 운영체제의 화면 데이터가 프레임 버퍼에 모두 저장될 때까지 대기할 수 있다. 또는, 방법1 내지 방법 3의 판단 결과에 따라, s1930에서, 전자 장치(10)는 제2 운영체제(200)의 화면 데이터에 대응되는 제1 운영체제(100)의 텍스처 오브젝트를 생성할 수 있다.
도 20은 실시예에 따라 전자 장치가 운영체제들의 화면 데이터 갱신 주기(즉, FPS)를 조정하는 방법을 설명하기 위한 흐름도이다. 설명의 편의를 위해, 갱신 주기는 FPS (frame per second) 단위로 표현한다.
도 20을 참조하면, s2010에서, 전자 장치(10)는 사용자 입력 또는 운영체제들의 워크로드(workload)에 기초하여, 목표 FPS 를 획득할 수 있다. 예를 들어, 동영상 어플리케이션 또는 게임 어플리케이션은 높은 FPS를 요구할 수 있다. 따라서, 전자 장치(10)는 운영체제가 실행중인 어플리케이션을 고려하여, 목표 FPS를 설정할 수 있다.
s2020에서, 전자 장치(10)는 FPS 모니터링을 통해 운영체제의 현재 FPS를 획득할 수 있다.
s2030에서, 전자 장치(10)는 운영체제의 목표 FPS가 현재 FPS 보다 낮은지 판단할 수 있다. 만약, 목표 FPS 가 현재 FPS 보다 더 낮은 경우, s2050에서, 전자 장치(10)는 운영체제의 GPU 스케쥴링 우선순위를 감소시킬 수 있다. 그러나, 목표 FPS 가 현재 FPS 보다 더 높은 경우, s2040에서, 전자 장치(10)는 운영체제의 GPU 스케쥴링 우선순위를 증가시킬 수 있다.
또한, 전자 장치(10)는 사용자의 입력 또는 운영체제에서 실행되는 어플리케이션 별 요구사항에 따라 목표 FPS를 결정할 수 있으며, 결정된 FPS와 현재 FPS를 비교하여, 운영체제들의 GPU 스케쥴링 우선 순위를 조정할 수 있다.
본 실시 예들에 따른 장치는 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(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)를 기재한 경우 상기 범위에 속하는 개별적인 값을 포함하는 것으로서(이에 반하는 기재가 없다면), 상세한 설명에 상기 범위를 구성하는 각 개별적인 값을 기재한 것과 같다. 마지막으로, 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 한정되는 것은 아니다. 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 기술적 사상을 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 범위가 한정되는 것은 아니다. 또한, 당업자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 팩터에 따라 구성될 수 있음을 알 수 있다.

Claims (20)

  1. 전자 장치에서 구동되는 복수의 운영체제들의 실행 화면을 동시에 표시하는 방법에 있어서,
    상기 복수의 운영체제들 중 적어도 하나의 게스트 운영체제에 의해 처리된 상기 적어도 하나의 게스트 운영체제의 그래픽 데이터로부터 상기 적어도 하나의 게스트 운영체제의 화면 데이터를 획득하는 단계;
    상기 적어도 하나의 게스트 운영체제의 화면 데이터에 관련된 제어 정보 및 상기 적어도 하나의 게스트 운영체제의 메모리 맵핑 정보 중 적어도 하나를, 상기 복수의 운영체제들 중 호스트 운영체제가 획득하는 단계;
    상기 제어 정보 및 상기 메모리 맵핑 정보 중 적어도 하나에 기초하여, 상기 적어도 하나의 게스트 운영체제의 화면 데이터를 상기 호스트 운영체제의 그래픽 데이터로 변환하는 단계;
    상기 호스트 운영체제의 그래픽 데이터로부터 상기 적어도 하나의 게스트 운영체제의 화면 데이터를 포함하는 상기 호스트 운영체제의 화면 데이터를 생성하는 단계; 및
    상기 호스트 운영체제의 화면 데이터를 표시하는 단계;를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 적어도 하나의 게스트 운영체제의 화면 데이터를 변환하는 단계는,
    상기 제어 정보 및 상기 메모리 맵핑 정보 중 적어도 하나에 기초하여, 상기 적어도 하나의 게스트 운영체제의 화면 데이터가 저장된 메모리 영역의 주소 정보를 획득하는 단계; 및
    상기 획득된 주소 정보에 기초하여, 상기 적어도 하나의 게스트 운영체제의 화면 데이터가 저장된 상기 메모리 영역에 대응되는 상기 호스트 운영체제의 텍스처 오브젝트를 생성하는 단계;를 포함하는, 방법.
  3. 제 2 항에 있어서,
    상기 적어도 하나의 게스트 운영체제의 화면 데이터를 변환하는 단계는,
    상기 적어도 하나의 게스트 운영체제의 화면 데이터가 저장된 메모리 영역의 데이터 포맷과 상기 호스트 운영체제의 화면 데이터가 저장될 메모리 영역의 데이터 포맷이 상이한 경우, 상기 텍스처 오브젝트의 포맷을 변경하는 단계;를 더 포함하는, 방법.
  4. 제 2 항에 있어서,
    상기 텍스처 오브젝트는, 상기 적어도 하나의 게스트 운영체제의 화면 데이터가 상기 메모리 영역에 모두 저장되었다는 신호가 상기 호스트 운영체제에 수신된 후에 생성되는, 방법.
  5. 제 1 항에 있어서,
    상기 제어 정보 및 상기 메모리 맵핑 정보 중 적어도 하나는, 상기 적어도 하나의 게스트 운영체제로부터 하이퍼바이저(hypervisor)를 통해 상기 호스트 운영체제로 제공되는, 방법.
  6. 제 1 항에 있어서,
    상기 적어도 하나의 운영체제의 화면 데이터는, 프레임 버퍼(frame buffer)에 저장되는 픽셀(pixel) 데이터인, 방법.
  7. 제 6 항에 있어서,
    상기 프레임 버퍼는, 상기 호스트 운영체제의 화면 데이터가 저장되는 영역 및 상기 적어도 하나의 게스트 운영체제의 화면 데이터가 저장되는 영역을 구분하는, 방법.
  8. 제 1 항에 있어서,
    상기 호스트 운영체제의 화면 데이터 및 상기 적어도 하나의 게스트 운영체제의 화면 데이터는, 상기 복수의 운영체제들 각각의 워크로드(workload) 또는 사용자 입력 값에 기초하여, 서로 다른 주기로 갱신되는, 방법.
  9. 제 1 항에 있어서,
    상기 호스트 운영체제의 화면 데이터를 표시하는 단계는, 상기 적어도 하나의 운영체제의 화면 데이터를 서브 윈도우(sub window)를 이용하여 표시하는, 방법.
  10. ◈청구항 10은(는) 설정등록료 납부시 포기되었습니다.◈
    제 1 항에 있어서,
    상기 적어도 하나의 게스트 운영체제의 화면 데이터에 관련된 제어 정보는, 상기 적어도 하나의 게스트 운영체제의 화면 데이터를 생성하기 위한 제어 정보 및 상기 적어도 하나의 게스트 운영체제의 화면 데이터를 출력하기 위한 제어 정보 중 적어도 하나를 포함하는, 방법.
  11. ◈청구항 11은(는) 설정등록료 납부시 포기되었습니다.◈
    제 1 항에 있어서,
    상기 메모리 맵핑 정보는, 상기 적어도 하나의 게스트 운영체제의 페이지 테이블의 전부 또는 일부를 포함하는 것인, 방법.
  12. 복수의 운영체제들을 구동시키는 전자 장치에 있어서,
    디스플레이;
    상기 복수의 운영체제들 중 적어도 하나의 게스트 운영체제에 의해 처리된 상기 적어도 하나의 게스트 운영체제의 그래픽 데이터로부터 상기 적어도 하나의 게스트 운영체제의 화면 데이터를 생성하는 그래픽 프로세서(graphic processor); 및
    상기 적어도 하나의 게스트 운영체제의 화면 데이터에 관련된 제어 정보 및 상기 적어도 하나의 게스트 운영체제의 메모리 맵핑 정보 중 적어도 하나를 상기 복수의 운영체제들 중 호스트 운영체제로 제공하고, 상기 제어 정보 및 상기 메모리 맵핑 정보 중 적어도 하나에 기초하여 상기 적어도 하나의 게스트 운영체제의 화면 데이터를 상기 호스트 운영체제의 그래픽 데이터로 변환하는 프로세서(processor);를 포함하며,
    상기 그래픽 프로세서는, 상기 호스트 운영체제의 그래픽 데이터로부터 상기 적어도 하나의 게스트 운영체제의 화면 데이터를 포함하는 상기 호스트 운영체제의 화면 데이터를 생성하고,
    상기 디스플레이는, 상기 호스트 운영체제의 화면 데이터 표시하는,
    전자 장치.
  13. ◈청구항 13은(는) 설정등록료 납부시 포기되었습니다.◈
    제 12 항에 있어서,
    상기 프로세서는, 상기 제어 정보 및 상기 메모리 맵핑 정보 중 적어도 하나에 기초하여, 상기 적어도 하나의 게스트 운영체제의 화면 데이터가 저장된 메모리 영역의 주소 정보를 획득하고,
    상기 획득된 주소 정보에 기초하여, 상기 적어도 하나의 게스트 운영체제의 화면 데이터가 저장된 상기 메모리 영역에 대응되는 상기 호스트 운영체제의 텍스처 오브젝트(texture obeject)를 생성하는, 전자 장치.
  14. ◈청구항 14은(는) 설정등록료 납부시 포기되었습니다.◈
    제 13 항에 있어서,
    상기 프로세서는, 상기 적어도 하나의 게스트 운영체제의 화면 데이터가 저장된 메모리 영역의 데이터 포맷과 상기 호스트 운영체제의 화면 데이터가 저장될 메모리 영역의 데이터 포맷이 상이한 경우, 상기 텍스처 오브젝트의 포맷을 변경하는, 전자 장치.
  15. ◈청구항 15은(는) 설정등록료 납부시 포기되었습니다.◈
    제 13 항에 있어서,
    상기 텍스처 오브젝트는, 상기 적어도 하나의 게스트 운영체제의 화면 데이터가 상기 메모리 영역에 모두 저장되었다는 신호가 상기 호스트 운영체제에 수신된 후에 생성되는, 전자 장치.
  16. ◈청구항 16은(는) 설정등록료 납부시 포기되었습니다.◈
    제 12 항에 있어서,
    상기 프로세서는, 하이퍼바이저(hypervisor)를 포함하며,
    상기 제어 정보 및 상기 메모리 맵핑 정보 중 적어도 하나는, 상기 적어도 하나의 게스트 운영체제로부터 상기 하이퍼바이저를 통해 상기 호스트 운영체제로 제공되는, 전자 장치.
  17. ◈청구항 17은(는) 설정등록료 납부시 포기되었습니다.◈
    제 12 항에 있어서,
    상기 그래픽 프로세서는, 프레임 버퍼(frame buffer)를 더 포함하며,
    상기 적어도 하나의 게스트 운영체제의 화면 데이터는, 상기 프레임 버퍼에 저장되는 픽셀(pixel) 데이터인, 전자 장치.
  18. ◈청구항 18은(는) 설정등록료 납부시 포기되었습니다.◈
    제 17 항에 있어서,
    상기 프레임 버퍼는, 상기 호스트 운영체제의 화면 데이터가 저장되는 영역 및 상기 적어도 하나의 게스트 운영체제의 화면 데이터가 저장되는 영역을 구분하는, 전자 장치.
  19. ◈청구항 19은(는) 설정등록료 납부시 포기되었습니다.◈
    제 12 항에 있어서,
    상기 프로세서는, 상기 복수의 운영체제들 각각의 워크로드(workload) 또는 사용자 입력 값에 기초하여, 상기 복수의 운영체제들 각각의 화면 데이터를 서로 다른 주기로 갱신하는, 전자 장치.
  20. ◈청구항 20은(는) 설정등록료 납부시 포기되었습니다.◈
    컴퓨터에 제 1 항 내지 제 11 항 중 어느 한 항의 동작 방법을 구현하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체.
KR1020160070980A 2016-06-08 2016-06-08 복수의 운영체제들의 화면을 통합하여 표시하는 방법 및 그 전자 장치 KR102507114B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160070980A KR102507114B1 (ko) 2016-06-08 2016-06-08 복수의 운영체제들의 화면을 통합하여 표시하는 방법 및 그 전자 장치
US15/606,518 US10522111B2 (en) 2016-06-08 2017-05-26 Method and electronic apparatus for providing composition screen by composing execution windows of plurality of operating systems

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160070980A KR102507114B1 (ko) 2016-06-08 2016-06-08 복수의 운영체제들의 화면을 통합하여 표시하는 방법 및 그 전자 장치

Publications (2)

Publication Number Publication Date
KR20170138759A KR20170138759A (ko) 2017-12-18
KR102507114B1 true KR102507114B1 (ko) 2023-03-07

Family

ID=60572996

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160070980A KR102507114B1 (ko) 2016-06-08 2016-06-08 복수의 운영체제들의 화면을 통합하여 표시하는 방법 및 그 전자 장치

Country Status (2)

Country Link
US (1) US10522111B2 (ko)
KR (1) KR102507114B1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018119712A1 (zh) * 2016-12-27 2018-07-05 深圳前海达闼云端智能科技有限公司 视频显示方法、装置、电子设备和计算机程序产品
US10733096B2 (en) 2017-11-22 2020-08-04 Samsung Electronics Co., Ltd. System and method for frame buffer
CN108536503A (zh) * 2018-03-15 2018-09-14 北京雷石天地电子技术有限公司 一种基于安卓系统的切换显示内容的方法及系统
CN110162397B (zh) * 2018-05-28 2022-08-23 腾讯科技(深圳)有限公司 资源分配方法、装置及系统
KR102631745B1 (ko) * 2018-10-16 2024-02-01 삼성전자주식회사 이종 운영체제의 실행을 제어하기 위한 방법, 이를 위한 전자 장치 및 저장 매체
US20210165673A1 (en) * 2019-12-02 2021-06-03 Microsoft Technology Licensing, Llc Enabling shared graphics and compute hardware acceleration in a virtual environment
KR102275529B1 (ko) * 2019-12-23 2021-07-09 주식회사 텔레칩스 멀티-마스터를 지원하는 그래픽 처리 장치를 공유하는 시스템 온 칩 및 그래픽 처리 장치의 동작 방법
CN111327761B (zh) * 2020-01-19 2022-04-26 深圳市智多互动科技有限公司 一种在安卓手机上操作虚拟安卓系统的方法
KR102345459B1 (ko) * 2021-04-06 2021-12-31 주식회사 틴텍 인쇄장치에 이용되는 이종 운영체제간의 정보 전달 방법
CN113064728B (zh) * 2021-04-16 2022-11-04 上海众链科技有限公司 高负载应用图像显示方法、终端及可读存储介质
CN115065848B (zh) * 2022-06-10 2023-11-17 展讯半导体(成都)有限公司 一种显示数据的传输方法、电子设备及模组设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120081380A1 (en) 2010-10-01 2012-04-05 Imerj LLC Cross-environment user interface mirroring
US20120278750A1 (en) 2011-04-28 2012-11-01 Motorola Mobility, Inc. Method and apparatus for presenting a window in a system having two operating system environments
US20130132971A1 (en) 2011-11-22 2013-05-23 International Business Machines Corporation System, method and program product for streamlined virtual machine desktop display

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7239324B2 (en) * 2001-03-23 2007-07-03 Microsoft Corporation Methods and systems for merging graphics for display on a computing device
US7173635B2 (en) * 2003-03-25 2007-02-06 Nvidia Corporation Remote graphical user interface support using a graphics processing unit
US7644407B2 (en) * 2004-03-05 2010-01-05 Intel Corporation Method, apparatus and system for seamlessly sharing a graphics device amongst virtual machines
US8754904B2 (en) * 2011-04-03 2014-06-17 Lucidlogix Software Solutions, Ltd. Virtualization method of vertical-synchronization in graphics systems
US8638337B2 (en) * 2009-03-16 2014-01-28 Microsoft Corporation Image frame buffer management
US8976187B2 (en) * 2009-04-01 2015-03-10 2236008 Ontario, Inc. System for accelerating composite graphics rendering
KR101214675B1 (ko) * 2010-03-26 2012-12-21 삼성전자주식회사 휴대용 단말의 영상 처리 방법 및 장치
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
US9674265B2 (en) * 2013-11-04 2017-06-06 Vmware, Inc. Filtering unnecessary display updates for a networked client
WO2016078069A1 (en) * 2014-11-21 2016-05-26 Intel Corporation Apparatus and method for efficient graphics processing in virtual execution environment
KR102400899B1 (ko) * 2015-07-15 2022-05-23 엘지전자 주식회사 차량 제어 장치 및 그 방법
US9870248B2 (en) * 2015-08-13 2018-01-16 Red Hat Israel, Ltd. Page table based dirty page tracking

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120081380A1 (en) 2010-10-01 2012-04-05 Imerj LLC Cross-environment user interface mirroring
US20120278750A1 (en) 2011-04-28 2012-11-01 Motorola Mobility, Inc. Method and apparatus for presenting a window in a system having two operating system environments
US20130132971A1 (en) 2011-11-22 2013-05-23 International Business Machines Corporation System, method and program product for streamlined virtual machine desktop display

Also Published As

Publication number Publication date
KR20170138759A (ko) 2017-12-18
US20170358278A1 (en) 2017-12-14
US10522111B2 (en) 2019-12-31

Similar Documents

Publication Publication Date Title
KR102507114B1 (ko) 복수의 운영체제들의 화면을 통합하여 표시하는 방법 및 그 전자 장치
US8966477B2 (en) Combined virtual graphics device
CN107003892B (zh) Gpu虚拟化方法、装置、系统及电子设备、计算机程序产品
US9176765B2 (en) Virtual machine system and a method for sharing a graphics card amongst virtual machines
KR102282365B1 (ko) Os들의 화면을 통합하여 표시하는 방법 및 장치
CN107077311B (zh) 输入信号仿真
JP2009145932A (ja) 画像情報の更新を検出するプログラム、方法および画像処理装置
CN109857573B (zh) 一种数据共享方法、装置、设备及系统
CN107077376B (zh) 帧缓存实现方法、装置、电子设备和计算机程序产品
US11256530B2 (en) Targeted page migration for guest virtual machine
US9342477B2 (en) Multi-core processor, controlling method thereof and computer system with such processor
CN110941408B (zh) 一种kvm虚拟机图形界面输出方法及装置
US20160011754A1 (en) Method and system for virtualized sensors in a multi-sensor environment
TW201314570A (zh) 於多重應用程式環境中之全螢幕處理技術
EP3198406B1 (en) Facilitation of guest application display from host operating system
US20220188135A1 (en) Hardware-based protection of virtual function resources
US20140195752A1 (en) Efficient copying between storage devices
KR20220048311A (ko) 가상화 환경에서 사용자 가상머신의 화면을 미러링하는 방법
US10621017B2 (en) Method and device for sharing a disk image between operating systems
US10572207B2 (en) On-GPU compositioning of graphical data from multiple domains
CN111480143A (zh) 电子装置及其控制方法

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