KR20220048311A - 가상화 환경에서 사용자 가상머신의 화면을 미러링하는 방법 - Google Patents

가상화 환경에서 사용자 가상머신의 화면을 미러링하는 방법 Download PDF

Info

Publication number
KR20220048311A
KR20220048311A KR1020200131305A KR20200131305A KR20220048311A KR 20220048311 A KR20220048311 A KR 20220048311A KR 1020200131305 A KR1020200131305 A KR 1020200131305A KR 20200131305 A KR20200131305 A KR 20200131305A KR 20220048311 A KR20220048311 A KR 20220048311A
Authority
KR
South Korea
Prior art keywords
user
master
screen data
screen
vms
Prior art date
Application number
KR1020200131305A
Other languages
English (en)
Inventor
황은지
Original Assignee
주식회사 케이티
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 케이티 filed Critical 주식회사 케이티
Priority to KR1020200131305A priority Critical patent/KR20220048311A/ko
Publication of KR20220048311A publication Critical patent/KR20220048311A/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
    • G06F3/1454Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • 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

Abstract

가상화 환경에서 사용자 가상머신의 화면 미러링 방법이 제공된다. 이 방법은 물리적인 GPU(Graphics Processing Unit)를 복수의 VM(Virtual Machine)에 대응하는 복수의 vGPU(virtualized GPU)로 구현하는 컴퓨팅 장치에서 상기 복수의 VM을 구동하는 하이퍼바이저(Hypervisor)가 VM의 화면을 미러링하는 방법으로서, 상기 복수의 VM 중에서 하이퍼바이저 접근 권한이 있는 마스터 VM으로부터 적어도 하나의 사용자 VM에 대한 화면 미러링 요청을 수신하는 단계, 상기 적어도 하나의 사용자 VM이 각각의 사용자 단말로 출력할 각각의 사용자 화면 데이터를 저장하는 적어도 하나의 사용자 프레임 버퍼에 대하여 할당된 적어도 하나의 물리적인 GPU의 메모리 주소를 섀도우 페이지(Shadow page) 테이블로부터 획득하는 단계, 그리고 상기 획득한 적어도 하나의 메모리 주소를 참조하여, 상기 적어도 하나의 사용자 프레임 버퍼로부터 인출한 적어도 하나의 사용자 화면 데이터를 상기 마스터 VM이 마스터 단말로 출력할 마스터 화면 데이터를 저장하는 마스터 프레임 버퍼로 복사하는 단계를 포함한다.

Description

가상화 환경에서 사용자 가상머신의 화면을 미러링하는 방법{METHOD FOR PROVIDING MIRRORING SCREEN OF USER VIRTUAL MACHINE IN A VIRTUALIZED ENVIRONMENT}
본 발명은 가상화 환경에서 사용자 가상머신(VM, Virtual Machine)의 화면을 미러링하는 방법에 관한 것이다.
가상화 환경에서는 가상머신(VM, Virtual Machine)의 관리를 위해 별도의 가상머신 관리 모듈이 필요하다. 일반적인 가상머신 모니터링을 위한 방법으로는 가상머신의 자원 사용률, 예를들어, CPU(Central Processing Unit), 메모리(Memory), 디스크(Disk) 등 가상머신 자원의 사용(Usage) 정보나 가상머신 내 어플리케이션(프로세스)의 실행 상태 확인이 주를 이룬다. 즉, 기존의 가상머신 관리 방법은 단순 자원 사용률이나 프로세스 실행목록 확인과 같은 단순 정보를 활용한 방법이 주를 이루었다.
그러나, 이러한 정보 확인은 단순히 프로세스명(Process Name), 프로세스 상태(Process Status) 조회 등 일부 정보에 국한되고, 사용자 가상머신에서 구동되는 어플리케이션이 실행중일때 출력되는 화면을 관리자가 확인하기는 어렵다.
관리자가 사용자 가상머신에서 출력되는 화면을 확인하기 위해서는 원격 지원 프로그램, 예를들어, Windows의 원격 데스크톱이나 VNC, 혹은 TeamViewer 같은 원격 프로그램 등을 사용하는 방법이 일반적이다. 그러나 이러한 방법은 사용자 가상머신에서 직접 원격 지원 프로그램을 실행해야 하므로 사용자가 관리자에 의해 관리되는 가상화 환경임을 인지하게 된다. 즉, 사용자 가상머신의 화면이 관리자 가상머신으로 원격으로 전송되고 있음을 사용자가 인지하게 된다.
본 발명이 해결하고자 하는 과제는 가상화 환경에서 사용자 가상머신(VM, Virtual Machine)의 프레임 버퍼에 저장되는 화면 데이터를 마스터 가상머신의 프레임 버퍼로 복사하거나 또는 메인 메모리에 복사한 후 마스터 가상머신의 프레임 버퍼로 복사함으로써, 사용자의 인지없이도 관리자가 사용자 가상머신의 실행 화면을 미러링(Mirroring)하는 방법을 제공하는 것이다.
한 특징에 따르면, 물리적인 GPU(Graphics Processing Unit)를 복수의 VM(Virtual Machine)에 대응하는 복수의 vGPU(virtualized GPU)로 구현하는 컴퓨팅 장치에서 상기 복수의 VM을 구동하는 하이퍼바이저(Hypervisor)가 VM의 화면을 미러링하는 방법으로서, 상기 복수의 VM 중에서 하이퍼바이저 접근 권한이 있는 마스터 VM으로부터 적어도 하나의 사용자 VM에 대한 화면 미러링 요청을 수신하는 단계, 상기 적어도 하나의 사용자 VM이 각각의 사용자 단말로 출력할 각각의 사용자 화면 데이터를 저장하는 적어도 하나의 사용자 프레임 버퍼에 대하여 할당된 적어도 하나의 물리적인 GPU의 메모리 주소를 섀도우 페이지(Shadow page) 테이블로부터 획득하는 단계, 그리고 상기 획득한 적어도 하나의 메모리 주소를 참조하여, 상기 적어도 하나의 사용자 프레임 버퍼로부터 인출한 적어도 하나의 사용자 화면 데이터를 상기 마스터 VM이 마스터 단말로 출력할 마스터 화면 데이터를 저장하는 마스터 프레임 버퍼로 복사하는 단계를 포함한다.
상기 획득하는 단계 이후, 상기 마스터 VM의 요청에 따라 상기 적어도 하나의 사용자 화면 데이터의 해상도를 변경할지 결정하고, 해상도를 변경하지 않기로 결정하면 상기 획득한 적어도 하나의 메모리 주소를 상기 마스터 VM으로 전달하는 단계를 더 포함하고, 상기 마스터 VM은, 상기 획득한 적어도 하나의 메모리 주소를 참조하여 상기 적어도 하나의 사용자 프레임 버퍼로부터 인출한 적어도 하나의 사용자 화면 데이터를 상기 마스터 단말로 출력하도록 제어할 수 있다.
상기 획득하는 단계 이후, 상기 마스터 VM의 요청에 따라 상기 적어도 하나의 사용자 화면 데이터의 해상도를 변경하는 단계를 더 포함하고, 상기 변경하는 단계는, 상기 복사하는 단계 이전에 또는 상기 복사하는 단계 이후에 수행될 수 있다.
상기 마스터 VM은, 사전 설정 정보를 기초로 상기 적어도 하나의 사용자 화면 데이터의 해상도 변경 여부를 결정할 수 있다.
상기 마스터 VM은, 상기 사전 설정 정보를 기초로, 동일 화면 또는 독립된 화면에 상기 적어도 하나의 사용자 화면 데이터와 상기 마스터 화면 데이터 중에서 선택적으로 출력하거나, 또는 동일 화면에 상기 적어도 하나의 사용자 화면 데이터 및 상기 마스터 화면 데이터를 동시 출력하고, 상기 해상도는, 상기 적어도 하나의 사용자 화면 데이터의 선택적 출력 또는 상기 동시 출력 여부에 따른 비율 및 크기를 기초로 결정될 수 있다.
다른 특징에 따르면, 복수의 VM(Virtual Machine)을 독립된 물리적인 개별 GPU(Graphics Processing Unit)들로 구동하는 컴퓨팅 장치에서 상기 복수의 VM을 구동하는 하이퍼바이저(Hypervisor)가 VM의 화면을 미러링하는 방법으로서, 상기 복수의 VM 중에서 하이퍼바이저 접근 권한이 있는 마스터 VM으로부터 적어도 하나의 사용자 VM에 대한 화면 미러링 요청을 수신하는 단계, 상기 적어도 하나의 사용자 VM에 대응하는 적어도 하나의 사용자 프레임 버퍼로부터 각각의 사용자 단말로 출력할 각각의 사용자 화면 데이터를 인출하여 메인 메모리로 복사하는 단계, 그리고 상기 메인 메모리로부터 화면 미러링이 요청된 적어도 하나의 사용자 화면 데이터를 상기 마스터 VM이 마스터 단말로 출력할 마스터 화면 데이터를 저장하는 마스터 프레임 버퍼로 복사하는 단계를 포함한다.
상기 복사하는 단계 이전에, 또는 상기 복사하는 단계 이후에, 상기 마스터 VM의 요청에 따라 상기 각각의 사용자 화면 데이터의 해상도를 변경하는 단계를 더 포함할 수 있다.
또 다른 특징에 따르면, 하이퍼바이저(Hypervisor)에 의해 복수의 VM(Virtual Machine)을 구동하는 컴퓨팅 장치에서, 상기 하이퍼바이저가 VM의 화면을 미러링하는 방법으로서, 상기 복수의 VM 중에서 하이퍼바이저 접근 권한이 있는 마스터 VM으로부터 적어도 하나의 사용자 VM에 대한 화면 미러링 요청을 수신하는 단계, 그리고 상기 적어도 하나의 사용자 VM이 각각의 사용자 단말로 출력하는 적어도 하나의 사용자 화면 데이터를 상기 마스터 VM으로 전달하는 단계를 포함하고, 상기 마스터 VM은, 상기 적어도 하나의 사용자 화면 데이터를 마스터 단말로 출력하고, 상기 전달하는 단계는, 상기 각각의 사용자 단말로 출력될 사용자 화면 데이터가 저장되는 적어도 하나의 사용자 프레임 버퍼로부터 상기 마스터 단말로 출력될 마스터 화면 데이터가 저장되는 마스터 프레임 버퍼로 상기 적어도 하나의 사용자 화면 데이터를 복사하거나, 또는 상기 적어도 하나의 사용자 프레임 버퍼로부터 메인 메모리로 상기 적어도 하나의 사용자 화면 데이터를 복사하고 상기 메인 메모리로부터 상기 마스터 프레임 버퍼로 상기 적어도 하나의 사용자 화면 데이터를 복사한다.
상기 컴퓨팅 장치는, 물리적인 GPU(Graphics Processing Unit)를 상기 복수의 VM에 대응하는 복수의 vGPU(virtualized GPU)로 구현하고, 상기 전달하는 단계는, 상기 적어도 하나의 사용자 화면 데이터의 해상도 변경이 필요하지 않으면, 상기 적어도 하나의 사용자 프레임 버퍼에 대하여 할당된 적어도 하나의 물리적인 GPU의 메모리 주소를 섀도우 페이지(Shadow page) 테이블로부터 획득하고 상기 획득한 적어도 하나의 메모리 주소를 상기 마스터 VM으로 전달하며, 상기 마스터 VM은, 상기 획득한 적어도 하나의 메모리 주소를 참조하여, 상기 적어도 하나의 사용자 프레임 버퍼로부터 상기 적어도 하나의 사용자 화면 데이터를 인출하여 상기 마스터 단말로 출력한다.
상기 수신하는 단계 이후, 상기 마스터 VM의 설정에 따라 상기 적어도 하나의 사용자 화면 데이터의 해상도를 변경하는 단계를 더 포함하고, 상기 해상도가 변경된 화면 데이터는, 상기 마스터 VM으로 전달될 수 있다.
실시예에 따르면, 복수의 사용자 가상머신에 대응하는 GPU(Graphics Processing Unit) 내 프레임 버퍼값을 마스터 가상머신에 대응하는 GPU의 프레임 버퍼로 복사함으로써, 사용자가 모르게 하면서 관리자가 사용자 가상머신의 출력 화면을 모니터링할 수 있다.
도 1은 본 발명의 실시예가 적용되는 컴퓨팅 장치의 구성도이다.
도 2는 도 1의 컴퓨팅 장치에서 GPU와 CPU간의 메모리 접근을 설명하는 도면이다.
도 3은 본 발명의 한 실시예에 따른 화면 미러링을 수행하는 가상화 컴퓨팅 장치의 구성도이다.
도 4는 도 3의 실시예에 따른 화면 미러링 방법을 나타낸 순서도이다.
도 5는 본 발명의 다른 실시예에 따른 화면 미러링을 수행하는 가상화 컴퓨팅 장치의 구성도이다.
도 6은 도 5의 실시예에 따른 화면 미러링 방법을 나타낸 순서도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
또한, 명세서에 기재된 "…부", "…기", "…모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
본 발명에서 설명하는 장치들은 적어도 하나의 프로세서, 메모리 장치, 통신 장치 등을 포함하는 하드웨어로 구성되고, 지정된 장소에 하드웨어와 결합되어 실행되는 프로그램이 저장된다. 하드웨어는 본 발명의 방법을 실행할 수 있는 구성과 성능을 가진다. 프로그램은 도면들을 참고로 설명한 본 발명의 동작 방법을 구현한 명령어(instructions)를 포함하고, 프로세서와 메모리 장치 등의 하드웨어와 결합하여 본 발명을 실행한다.
본 명세서에서 "전송 또는 제공"은 직접적인 전송 또는 제공하는 것 뿐만 아니라 다른 장치를 통해 또는 우회 경로를 이용하여 간접적으로 전송 또는 제공도 포함할 수 있다.
본 명세서에서 단수로 기재된 표현은 "하나" 또는 "단일" 등의 명시적인 표현을 사용하지 않은 이상, 단수 또는 복수로 해석될 수 있다.
본 명세서에서 도면에 관계없이 동일한 도면번호는 동일한 구성요소를 지칭하며, "및/또는" 은 언급된 구성 요소들의 각각 및 하나 이상의 모든 조합을 포함한다.
본 명세서에서, 제1, 제2 등과 같이 서수를 포함하는 용어들은 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되지는 않는다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를들어, 본 개시의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
본 명세서에서 도면을 참고하여 설명한 흐름도에서, 동작 순서는 변경될 수 있고, 여러 동작들이 병합되거나, 어느 동작이 분할될 수 있고, 특정 동작은 수행되지 않을 수 있다.
도 1은 본 발명의 실시예가 적용되는 컴퓨팅 장치의 구성도이다.
도 1을 참조하면, 컴퓨팅 장치(100)는 CPU(Central Processing Unit)(110), GPU(Graphic Processing Unit)(120), 메인 메모리(130), 비디오 메모리(140), 모니터(150), 키보드(160), 마우스(170) 및 통신 장치(180)를 포함한다.
GPU(120)는 CPU와는 독립적인 프로세서이고 물리적인 하드웨어로서 완전한 독립체이다. GPU(120)는 메인 메모리(130)와 독립된 비디오 메모리(140)를 가진다. 비디오 메모리(140)는 메인 보드가 아닌 그래픽 하드웨어에 부착되어 GPU(120)가 보다 빠르게 접근할 수 있도록 한다.
비디오 메모리(140)에는 모니터에 출력할 화면 데이터가 저장되는 프레임 버퍼가 구비되어 있다. 프레임 버퍼는 GPU(120)가 프레임 단위로 출력하는 화면 데이터를 저장하고, 버퍼링 순서대로 모니터(150)에 화면 데이터를 출력한다. 비디오 메모리(140)의 크기는 해상도나 컬러 뎁스(Color Depth)에 영향을 준다.
비디오 메모리(140)의 값은 메인 메모리(130)와 마찬가지로 접근 가능하며 수정 또한 가능하다. NVIDIA에서 만든 CUDA(Computed Unified Device Architecture)는 CPU(호스트)(110)와 GPU(디바이스)(120)간 메모리 복사를 위한 API(Application Programming Interface)를 제공한다. CPU(110) 및 GPU(120)는 'cudaMemcpy() Function'을 통해 소스(Source)와 목적지(Destination)의 메모리 포인터를 각각 지정해주어 메인 메모리(130)와 비디오 메모리(140)간 메모리 복사가 가능하다.
CUDA 6.0 이상부터는 CPU(110)와 GPU(120)가 하나의 가상 메모리를 사용하는 것처럼 개발 노력을 줄이기 위한 통합 메모리(Unified Memory)를 사용할 수 있다. 즉, 어떤 프로세서에서도 접근 가능한 단일 메모리 주소 스페이스(Single Memory Address Space)를 제공한다.
CUDA 이전에는 GPU(120)가 비디오 메모리(140)에 직접 접근하여 메모리 복사를 수행하였다.
도 2는 도 1의 컴퓨팅 장치에서 GPU와 CPU간의 메모리 접근을 설명하는 도면이다.
도 2를 참조하면, CPU(110)와 GPU(120)는PCIe(PCI Express) 스위치(Switch)를 통해 메모리 주소를 매핑(Mapping)하고 BAR(Base Address Register)를 통해 매핑된 주소를 이용하여 상호 메모리들(130,140)에 접근이 가능하다.
컴퓨팅 장치(100)는 GPU 하드웨어를 가상화할 수 있다.
GPU 하드웨어가 가상화된 환경에서, 컴퓨팅 장치(100)는 복수의 사용자 가상머신(Virtual Machine, 이하, 'VM'으로 통칭함)과 마스터 VM을 구동할 수 있다. 마스터 VM은 사용자 VM의 생성, 수정, 삭제와 같은 VM 관리를 할 수 있다.
물리적인 GPU(120) 자원을 전가상화(Full-virtualization)할 수 있는 경우, 물리적인 GPU 자원(Physical GPU Resource)의 일부분을 가상화하여 VM들에 할당할 수 있다. 만약, 전가상화 자원이 부족하거나, 성능 저하 문제가 있는 자원의 경우 VM들은 Pass-through 기술을 이용하여 독립된 물리적인 GPU 자원을 할당받아 사용할 수 있다. 하지만, Pass-through 기술을 GPU 자원에 적용하는 경우 해당 GPU 자원이 싱글(Single) VM에 할당되어 다른 VM은 사용하지 못하게 된다. 이러한 경우, GPU(120)를 추가로 설치하여 하나의 호스트 머신(Host Machine)에서 다수의 VM을 위한 네이티브 퍼포먼스(Native Performance)를 갖춘 가상화 환경을 제공할 수 있다.
컴퓨팅 장치(100)는 하나의 물리 GPU(120)를 가상화하여 VM 별로 가상화된 GPU(vGPU, virtualized GPU)가 제공되는 전가상화 방식이나, Pass-through를 적용하여 VM 별 물리 GPU를 갖는 반가상화 방식을 사용하여 각 VM에 제공하고자 하는 자원에 대한 성능을 보장받을 수 있다.
사용자 VM이 머신 루트(Machine Root) 권한을 가지는 경우, 사용자가 인지 가능한 영역에서 실행되는 보안 솔루션에 대한 보안 정책을 변경하거나, 보안 솔루션을 강제로 종료하는 등 보안 위협 상황이 있을 수 있다. 따라서, 사용자 VM은 운영체제(OS, Operating System) 루트 권한을 가지고 보안 솔루션을 사용자가 인지 가능한 OS 영역이 아닌 하이퍼바이저 영역이나 별도의 VM에서 실행하도록 할 수 있으며, 보안상의 이유로 이러한 가상환경이 사용자들에게 제공될 필요가 있다.
이를 위하여, 마스터 VM은 사용자 VM들이 출력하는 화면 데이터를 미러링(Mirroring)하여 마스터 VM의 모니터 화면에 출력한다. 이때, 머신 루트 권한을 가지는 마스터 VM만 하이퍼바이저 영역에 대한 접근이 가능하다. 따라서, OS 루트 권한만을 가지는 사용자 VM에서는 가상화 환경을 인지하지 못하므로, 화면 미러링 역시 인지할 수 없다.
한 실시예에 따르면, 컴퓨팅 장치(100)는 하이퍼바이저에 의해 복수의 VM을 구동하고 물리적인 GPU를 복수의 VM에 대응하는 복수의 vGPU로 구현하는 전가상화 방식을 사용한다. 이러한 실시예에 따른 컴퓨팅 장치(100)의 화면 미러링 동작을 도 3 및 도 4를 참조하여 설명한다.
도 3은 본 발명의 한 실시예에 따른 화면 미러링을 수행하는 컴퓨팅 장치의 구성도이다.
도 3을 참조하면, 컴퓨팅 장치(100)는 복수의 VM(101, 103, 105), 각 VM(101, 103, 105)에 대응하는 복수의 vGPU(107, 109, 111), 하이퍼바이저(113) 및 물리 GPU(115)를 포함한다.
복수의 VM(101, 103, 105)은 하이퍼바이저(113) 상에서 동작하며, 단말들(200, 300, 400) 각각의 유저 ID와 매핑될 수 있다. 복수의 VM(101, 103, 105)은 각각의 독립된 운영 체제(Operating System, OS) 및 이러한 운영 체제(OS) 기반에서 실행되는 적어도 하나의 어플리케이션을 실행할 수 있다.
복수의 VM(101, 103, 105)은 실행된 어플리케이션의 화면 데이터를 생성하고, 이를 각각의 단말(200, 300, 400)에 스트리밍 전송한다. 이때, 각각의 단말(200, 300, 400)은 모니터일 수도 있고, 원격지에 위치하여 네트워크를 통해 연결된 클라이언트 단말일 수도 있다.
복수의 VM(101, 103, 105)은 사용자 VM #1(101), 사용자 VM #2(103) 및 마스터 VM(105)을 포함한다. 이때, 사용자 VM은 두개를 제시하였으나, 이는 실시예에 불과하며, 하나이거나 또는 두개 이상일 수 있다.
마스터 VM(105)은 사용자 VM들(101, 103)을 생성 및/또는 관리할 수 있다.
복수의 VM(101, 103, 105)은 어플리케이션(101A, 103A, 105A), 그래픽 라이브러리(101B, 103B, 105B) 및 GPU 드라이버(101C, 103C, 105C)를 포함한다. 어플리케이션(101A, 103A, 105A)은 각각의 단말(200, 300, 400)에 출력할 화면 데이터를 생성하여 이를 그래픽 라이브러리(101B, 103B, 105B)로 전달한다. 그래픽 라이브러리(101B, 103B, 105B)는 화면 데이터를 GPU API 형식(소프트웨어적으로 구현된 Mesa 등과 같은 표준 API를 지원하는 OpenGL 라이브러리)으로 가공하고 이를 GPU 드라이버(101C, 103C, 105C)로 출력한다. GPU 드라이버(101C, 103C, 105C)는 가공된 화면 데이터를 스트리밍 형식으로 각각의 vGPU(107, 109, 111)로 출력한다.
각각의 vGPU(107, 109, 111)는 GPU 드라이버(101C, 103C, 105C)로부터 수신한 각각의 화면 데이터를 물리 GPU(115)에 접근하여 처리한다. 이때, 각각의 vGPU(107, 109, 111)는 소프트웨어이고 물리 GPU(115)는 각각의 vGPU(107, 109, 111)에 해당하는 물리적인 동작을 구현하는 하드웨어를 의미한다.
각각의 vGPU(107, 109, 111)는 vGPU 채널(107A, 109A, 111A), vGPU 코어(107B, 109B, 111B) 및 vGPU 메모리(107C, 109C, 111C)를 포함한다. 물리 GPU(115)는 물리 GPU 채널(117), 물리 GPU 코어(119) 및 물리 GPU 메모리(121)를 포함한다. 물리 GPU 채널(117)은 vGPU 채널(107A, 109A, 111A)에 대응하는 물리 GPU 채널(117A, 117B, 117C)로 구성된다. 물리 GPU 코어(119)는 vGPU 코어(107B, 109B, 111B)에 대응하는 각각의 GPU 코어(119A, 119B, 119C)로 구성된다.
물리 GPU 메모리(121)는 vGPU 메모리(107C, 109C, 111C)에 대응하는 각각의 GPU 메모리(122, 123, 125)로 구성된다. 즉, 물리적인 GPU 메모리 영역은 각 VM 단위로 할당되어 있다. 각각의 GPU 메모리(122, 123, 125)는 각 VM(101, 103, 105)이 각 단말(200, 300, 400)로 출력하는 화면 데이터를 저장하는 프레임 버퍼들(122A, 123A, 125A)에 대하여 할당된 메모리 영역을 포함한다.
vGPU 코어(107B, 109B, 111B)가 각각의 GPU 드라이버(101C, 103C, 105C)로부터 vGPU 채널(107A, 109A, 111A)을 통하여 입력받은 화면 데이터는 vGPU 메모리(107C, 109C, 111C)에 저장된다. vGPU 코어(107B, 109B, 111B)는 vGPU 메모리(107C, 109C, 111C)에 저장된 화면 데이터를 각 단말(200, 300, 400)의 사양(specification)에 맞게 인코딩하고 인코딩된 화면 데이터를 물리 GPU 메모리(121)의 프레임 버퍼(122A, 123A, 125A)로 출력한다.
이때, 하이퍼바이저(113)는 vGPU 메모리(107C, 109C, 111C)의 가상 메모리 주소에 대응하는 물리 GPU 메모리(121)의 물리적인 메모리 주소를 GPU 섀도우 페이지(Shadow page)(113A)에 저장한다. 즉, GPU 섀도우 페이지(113A)는 물리 GPU 메모리(121) 상에 프레임 버퍼(122A, 123A, 125A)를 위하여 할당된 메모리 주소를 저장한다.
하이퍼바이저(113)는 복수의 VM(101, 103, 105)을 구동하며, 예를들어, Xen, Citrix의 XenServer, VMware의 ESX Server, L4 마이크로 커널, TRANGO, IBM의 POWER 하이퍼바이저(PR/SM), 마이크로소프트의 하이퍼-V, 패러럴 서버,Oracle(SUN)의 로지컬 도메인 하이퍼바이저, VMware Server, VMware Workstation, VMware Fusion, QEMU, 마이크로소프트의 버추얼 PC와 버추얼 서버, Oracle(SUN)의 버추얼박스, SWsoft의 Parallels Workstation과Parallels Desktop 중 적어도 하나를 포함할 수 있으나, 이에 국한되는 것은 아니다.
하이퍼바이저(113)는 화면 미러링 제어부(113B) 및 해상도 변환부(113C)를 실행할 수 있다. 화면 미러링 제어부(113B)는 하이퍼바이저(113) 내에서 실행되므로, 머신 루트 권한을 가지는 마스터 VM(105)에서만 접근이 가능하고 OS 루트 권한을 가지는 사용자 VM(101, 103)에서는 접근할 수 없다.
화면 미러링 제어부(113B)는 사용자 VM(101, 103)이 출력하는 화면 데이터와 마스터 VM(105)이 출력하는 화면 데이터 중에서 마스터 단말(200)로 출력할 화면 데이터를 선택할 수 있다. 물론, 디폴트는 마스터 VM(105)이 출력하는 화면 데이터를마스터 단말(200)로 출력하는 것이지만, 마스터 VM(105)의 화면 미러링 요청에 따라 사용자 VM(101, 103)이 출력하는 화면 데이터를 마스터 단말(200)로 출력할 수 있다.
vGPU 코어(107B, 109B, 111B)는 연산을 위해 물리 GPU 메모리(122A, 123A, 125A) 값을 참조하는데, vGPU(107, 109, 111)에 할당된 물리 GPU 메모리 영역을 확인하기 위해서 GPU 섀도우 페이지 테이블(113A)을 참조한다. 이때, 화면 미러링 제어부(113B)는 참조한 물리 GPU 메모리 주소, 즉, 화면 미러링이 요청된 사용자 VM(101, 103)의 사용자 프레임 버퍼(122A, 123A)의 메모리 주소를 기초로, 사용자 프레임 버퍼(122A, 123A)에 저장된 사용자 화면 데이터를 마스터 VM(105)의 마스터 프레임 버퍼(125A)로 복사한다.
그러면, 마스터 단말(200)은 마스터 프레임 버퍼(125A)에 저장된 화면 데이터를 출력하므로, 마스터 VM(105)이 생성한 화면 데이터 뿐만 아니라 미러링된 사용자 화면 데이터를 출력할 수 있다. 이때, 하나의 물리 GPU 메모리 내에서 화면 데이터 복사가 일어나기 때문에 추가적인 하드웨어나 모듈이 필요하지 않다.
또한, 동일한 화면 데이터가 사용자 프레임 버퍼(122A, 123A)와 마스터 프레임 버퍼(125A)에 중복 저장될 수 있다. 이를 막기 위해 화면 미러링 제어부(113B)는 는 사용자 프레임 버퍼(122A, 123A)의 화면 데이터에 대하여 해상도 변환이 필요하지 않은 경우에는 화면 데이터의 복사는 하지 않고, 사용자 프레임 버퍼(122A, 123A)의 메모리 주소를 마스터 VM(105)으로 전달할 수 있다. 그러면, 마스터 VM(105)은 사용자 프레임 버퍼(122A, 123A)의 메모리 주소를 참조하여, 사용자 프레임 버퍼(122A, 123A)로부터 화면 데이터를 인출하여 마스터 단말(200)에 출력할 수 있다. 이렇게 하면, 메모리 주소를 알려주는 단순한 동작만으로 화면 미러링이 가능하면서도 물리 GPU 메모리 공간을 절약할 수 있다.
해상도 변환부(113C)는 화면 미러링 제어부(113B)와 연동하거나 화면 미러링 제어부(113B)에서 실행되며, 사용자 프레임 버퍼(122A, 123A)에서 인출한 화면 데이터를 마스터 VM(105)에서 선택한 해상도로 변환한다. 이러한 해상도 변환은 마스터 프레임 버퍼(125A)로 복사가 이루어지기 전에 이루어지거나 또는 복사가 이루어진 후 마스터 단말(200)로 출력되기 전에 이루어질 수 있다. 즉, 화면 미러링 제어부(113B)는 해상도가 변환된 화면 데이터를 마스터 프레임 버퍼(125A)로 복사하거나 또는 마스터 프레임 버퍼(125A)로 복사된 화면 데이터 중에서 해상도 변환이 필요한 화면 데이터에 한해 해상도 변환을 수행한 후, 이를 마스터 단말(200)로 출력할 수 있다.
마스터 VM(105)은 마스터 단말(200)에 출력할 사용자 VM(101, 103)의 종류를 선택할 수 있고, 화면의 출력을 화면 분할형으로 할지, 윈도우형으로 할지 선택할 수 있다. 이때, 화면 분할이나 윈도우 크기 등 출력에 관련된 설정은 프리셋으로 미리 관리자가 설정할 수 있으며 직접 수정 또한 가능하다.
한 실시예에 따르면, 마스터 VM(105)은 사용자 인터페이스를 통해 입력받은 관리자의 설정 정보를 사전 설정할 수 있다. 사전 설정 정보는 마스터 단말(200)의 스크린 제어 정보로서, 사용자 VM(101, 103)의 화면 데이터를 하나의 화면에서 분할하여 동시 출력할지, 별도의 윈도우를 통해 독립적으로 출력할지, 그리고 어느 사용자 VM(101, 103)을 마스터 단말(200)에 출력할지 등에 관한 정보일 수 있다.
마스터 VM(105)은 사전 설정 정보를 기초로, 동일 화면 또는 독립된 화면에 사용자 VM(101, 103)의 화면 데이터와 마스터 VM(105)이 출력하는 화면 데이터 중에서 선택적으로 출력하거나, 또는 동일 화면에 사용자 VM(101, 103)의 화면 데이터와 마스터 VM(105)를 동시 출력할 수 있다.
해상도 변환부(113C)는 이러한 사전 설정 정보를 이용하여 사용자 VM(101, 103)의 화면 데이터의 상대적인 화면 비율 및 화면 크기를 결정하고, 결정된 화면 비율 및 화면 크기를 기초로 화면 데이터의 해상도를 변환할 수 있다.
도 4는 도 3의 실시예에 따른 화면 미러링 방법을 나타낸 순서도이다.
도 4를 참조하면, 화면 미러링 제어부(113B)는 마스터 VM(105)으로부터 적어도 하나의 사용자 VM(101, 103)에 대한 화면 미러링 요청을 수신한다(S101).
화면 미러링 제어부(113B)는 S101 단계에서 화면 미러링이 요청된 적어도 하나의 사용자 VM(101, 103)에 대응하는 각각의 사용자 프레임 버퍼(122A, 123A)를 위하여 할당된 적어도 하나의 물리적인 GPU(121)의 메모리 주소를 섀도우 페이지 테이블로부터 획득한다(S103).
화면 미러링 제어부(113B)는 화면 미러링이 요청된 적어도 하나의 사용자 VM(101, 103)의 화면 데이터의 해상도 변경이 필요한지 판단한다(S105).
해상도 변경이 필요하다고 판단되면, 화면 미러링 제어부(113B)는 S103 단계에서 획득한 적어도 하나의 물리적인 GPU(121)의 메모리 주소를 참조하여, 각각의 사용자 프레임 버퍼(122A, 123A)로부터 각각의 사용자 화면 데이터를 인출한다(S107).
해상도 변환부(113C)는 화면 미러링 제어부(113B)의 제어에 따라 S107 단계에서 인출한 각각의 사용자 화면 데이터를 마스터 VM(105)의 설정에 따라 선택적으로 해상도를 변환한다(S109).
화면 미러링 제어부(113B)는 해상도가 변환된 사용자 화면 데이터들을 마스터 VM(105)에 대응하는 마스터 프레임 버퍼(125A)로 복사한다(S111).
화면 미러링 제어부(113B)는 S105 단계에서 해상도 변경이 필요하지 않다고 판단되면, S103 단계에서 획득한 적어도 하나의 물리적인 GPU(121)의 메모리 주소를 마스터 VM(105)으로 전달한다(S113).
한편, 다른 실시예에 따르면, 컴퓨팅 장치(100)는 하이퍼바이저에 의해 복수의 VM을 구동하고 복수의 VM을 독립된 물리적인 개별 GPU들로 구현하는 Pass-through 방식을 사용한다. 이러한 경우, 서로 다른 물리 GPU 메모리의 값을 복사해야 하므로 도 1에서 설명한 메인 메모리(130)가 사용된다.
이러한 실시예에 따른 컴퓨팅 장치(100)의 화면 미러링 동작을 도 5 및 도 6을 참조하여 설명한다.
도 5는 본 발명의 다른 실시예에 따른 화면 미러링을 수행하는 컴퓨팅 장치의 구성도이다.
이때, 도 3 및 도 4에서 설명한 내용과 중복되는 설명은 생략하고, 다른 실시예에 해당하는 내용만 설명한다.
도 5를 참조하면, 물리 GPU는 사용자 VM #1(101)에 대하여 할당된 사용자 #1 GPU(127), 사용자 VM #2(103)에 대하여 할당된 사용자 #2 GPU(129), 마스터 VM(105)에 대하여 할당된 마스터 GPU(131)를 포함한다. 사용자 #1 GPU(127), 사용자 #2 GPU(129), 마스터 GPU(131)는 물리적으로 독립되어 있는 개별 GPU 구조를 가진다.
사용자 VM #1(101)은 사용자 #1 GPU(127)와 Pass-through로 연결된다. 사용자 VM #1(101)은 사용자 #2 GPU(129)와 Pass-through로 연결된다. 마스터 VM(105)은 마스터 GPU(131)와 Pass-through로 연결된다.
사용자 #1 GPU(127), 사용자 #2 GPU(129), 마스터 GPU(131)는 각각 물리적인 GPU 채널, 물리적인 GPU 코어 및 물리적인 GPU 메모리를 포함한다. 이때, 각각의 물리적 GPU 메모리에는 VM들(101, 103, 105)이 생성하는 각각의 화면 데이터를 저장하는 프레임 버퍼들(127A, 129A, 131A)의 메모리 영역이 할당되어 있다.
하이퍼바이저(113)는 사용자 VM #1(101), 사용자 VM #2(103) 및 마스터 VM(105)을 구동한다. 하이퍼바이저(113)는 GPU 섀도우 페이지(113A), 화면 미러링 제어부(113B) 및 해상도 변환부(113C)를 포함한다.
화면 미러링 제어부(113B)는 마스터 VM(105)에서 미러링을 요청한 사용자 VM(101, 103)에 대응하는 각각의 프레임 버퍼들(127A, 129A)로부터 각각의 화면 데이터를 인출하여 메인 메모리(130)로 복사한다.
해상도 변환부(113C)는 마스터 VM(105)의 요청에 따라 메인 메모리(130)로 복사된 화면 데이터의 해상도를 변경한다.
화면 미러링 제어부(113B)는 해상도가 변경된 화면 데이터 또는 변경되지 않은 원래 화면 데이터를 마스터 VM(105)과 연결된 마스터 GPU(131)의 메모리 내 프레임 버퍼(131A)로 복사한다. 이처럼, 화면 미러링 제어부(113B)는 사용자 VM #1(101), 사용자 VM #2(103)이 출력하는 각각의 화면 데이터를 메인 메모리(130)를 거쳐 마스터 VM(105)에 할당된 마스터 GPU(131)로 복사하여 마스터 단말(200)에 출력할 수 있다.
도 6은 도 5의 실시예에 따른 화면 미러링 방법을 나타낸 순서도이다.
도 6을 참조하면, 화면 미러링 제어부(113B)는 마스터 VM(105)으로부터 적어도 하나의 사용자 VM(101, 103)에 대한 화면 미러링 요청을 수신한다(S201).
화면 미러링 제어부(113B)는 S201 단계에서 화면 미러링이 요청된 적어도 하나의 사용자 VM(101, 103)에 대응하는 적어도 하나의 사용자 프레임 버퍼(127A, 129A)로부터 각각의 사용자 화면 데이터를 인출(S203)하여 메인 메모리(130)로 복사한다(S205).
화면 미러링 제어부(113B)는 화면 미러링이 요청된 적어도 하나의 사용자 VM(101, 103)의 화면 데이터의 해상도 변경이 필요한지 판단한다(S207).
해상도 변환부(113C)는 화면 미러링 제어부(113B)의 제어에 따라 S205 단계에서 복사한 각각의 사용자 화면 데이터를 마스터 VM(105)의 설정에 따라 선택적으로 해상도를 변환한다(S209).
화면 미러링 제어부(113B)는 S209 단계에서 해상도가 변환된 화면 데이터 또는 S205 단계에서 복사한 화면 데이터를 마스터 프레임 버퍼(131A)로 복사한다(S211).
이상 기술한 바에 따르면, 사용자 VM의 프레임 버퍼에 저장되는 화면 데이터를 마스터 VM의 프레임 버퍼로 복사하거나 또는 사용자 VM의 프레임 버퍼에 저장되는 화면 데이터를 메인 메모리에 복사한 후 이를 마스터 VM의 프레임 버퍼로 복사함으로써, 사용자의 인지없이도 관리자가 사용자 VM의 실행 화면을 미러링할 수 있다. 이러한 VM 화면 미러링 기술은 사용자의 사용 내역이 감시되어야 하는 장소, 예를들어, 관공서, 교육현장 등에서 사용자 인지없이 관리자가 사용 내역을 모니터링하는 방법으로 활용될 수 있다.
이상에서 설명한 본 발명의 실시예는 장치 및 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (10)

  1. 물리적인 GPU(Graphics Processing Unit)를 복수의 VM(Virtual Machine)에 대응하는 복수의 vGPU(virtualized GPU)로 구현하는 컴퓨팅 장치에서 상기 복수의 VM을 구동하는 하이퍼바이저(Hypervisor)가 VM의 화면을 미러링하는 방법으로서,
    상기 복수의 VM 중에서 하이퍼바이저 접근 권한이 있는 마스터 VM으로부터 적어도 하나의 사용자 VM에 대한 화면 미러링 요청을 수신하는 단계,
    상기 적어도 하나의 사용자 VM이 각각의 사용자 단말로 출력할 각각의 사용자 화면 데이터를 저장하는 적어도 하나의 사용자 프레임 버퍼에 대하여 할당된 적어도 하나의 물리적인 GPU의 메모리 주소를 섀도우 페이지(Shadow page) 테이블로부터 획득하는 단계, 그리고
    상기 획득한 적어도 하나의 메모리 주소를 참조하여, 상기 적어도 하나의 사용자 프레임 버퍼로부터 인출한 적어도 하나의 사용자 화면 데이터를 상기 마스터 VM이 마스터 단말로 출력할 마스터 화면 데이터를 저장하는 마스터 프레임 버퍼로 복사하는 단계
    를 포함하는, 화면 미러링 방법.
  2. 제1항에서,
    상기 획득하는 단계 이후,
    상기 마스터 VM의 요청에 따라 상기 적어도 하나의 사용자 화면 데이터의 해상도를 변경할지 결정하고, 해상도를 변경하지 않기로 결정하면 상기 획득한 적어도 하나의 메모리 주소를 상기 마스터 VM으로 전달하는 단계를 더 포함하고,
    상기 마스터 VM은,
    상기 획득한 적어도 하나의 메모리 주소를 참조하여 상기 적어도 하나의 사용자 프레임 버퍼로부터 인출한 적어도 하나의 사용자 화면 데이터를 상기 마스터 단말로 출력하도록 제어하는, 화면 미러링 방법.
  3. 제2항에서,
    상기 획득하는 단계 이후,
    상기 마스터 VM의 요청에 따라 상기 적어도 하나의 사용자 화면 데이터의 해상도를 변경하는 단계를 더 포함하고,
    상기 변경하는 단계는,
    상기 복사하는 단계 이전에 또는 상기 복사하는 단계 이후에 수행되는, 화면 미러링 방법.
  4. 제3항에서,
    상기 마스터 VM은,
    사전 설정 정보를 기초로 상기 적어도 하나의 사용자 화면 데이터의 해상도 변경 여부를 결정하는, 화면 미러링 방법.
  5. 제4항에서,
    상기 마스터 VM은,
    상기 사전 설정 정보를 기초로, 동일 화면 또는 독립된 화면에 상기 적어도 하나의 사용자 화면 데이터와 상기 마스터 화면 데이터 중에서 선택적으로 출력하거나, 또는 동일 화면에 상기 적어도 하나의 사용자 화면 데이터 및 상기 마스터 화면 데이터를 동시 출력하고,
    상기 해상도는,
    상기 적어도 하나의 사용자 화면 데이터의 선택적 출력 또는 상기 동시 출력 여부에 따른 비율 및 크기를 기초로 결정되는, 화면 미러링 방법.
  6. 복수의 VM(Virtual Machine)을 독립된 물리적인 개별 GPU(Graphics Processing Unit)들로 구동하는 컴퓨팅 장치에서 상기 복수의 VM을 구동하는 하이퍼바이저(Hypervisor)가 VM의 화면을 미러링하는 방법으로서,
    상기 복수의 VM 중에서 하이퍼바이저 접근 권한이 있는 마스터 VM으로부터 적어도 하나의 사용자 VM에 대한 화면 미러링 요청을 수신하는 단계,
    상기 적어도 하나의 사용자 VM에 대응하는 적어도 하나의 사용자 프레임 버퍼로부터 각각의 사용자 단말로 출력할 각각의 사용자 화면 데이터를 인출하여 메인 메모리로 복사하는 단계, 그리고
    상기 메인 메모리로부터 화면 미러링이 요청된 적어도 하나의 사용자 화면 데이터를 상기 마스터 VM이 마스터 단말로 출력할 마스터 화면 데이터를 저장하는 마스터 프레임 버퍼로 복사하는 단계
    를 포함하는, 화면 미러링 방법.
  7. 제6항에서,
    상기 복사하는 단계 이전에, 또는 상기 복사하는 단계 이후에,
    상기 마스터 VM의 요청에 따라 상기 각각의 사용자 화면 데이터의 해상도를 변경하는 단계
    를 더 포함하는, 화면 미러링 방법.
  8. 하이퍼바이저(Hypervisor)에 의해 복수의 VM(Virtual Machine)을 구동하는 컴퓨팅 장치에서, 상기 하이퍼바이저가 VM의 화면을 미러링하는 방법으로서,
    상기 복수의 VM 중에서 하이퍼바이저 접근 권한이 있는 마스터 VM으로부터 적어도 하나의 사용자 VM에 대한 화면 미러링 요청을 수신하는 단계, 그리고
    상기 적어도 하나의 사용자 VM이 각각의 사용자 단말로 출력하는 적어도 하나의 사용자 화면 데이터를 상기 마스터 VM으로 전달하는 단계를 포함하고,
    상기 마스터 VM은,
    상기 적어도 하나의 사용자 화면 데이터를 마스터 단말로 출력하고,
    상기 전달하는 단계는,
    상기 각각의 사용자 단말로 출력될 사용자 화면 데이터가 저장되는 적어도 하나의 사용자 프레임 버퍼로부터 상기 마스터 단말로 출력될 마스터 화면 데이터가 저장되는 마스터 프레임 버퍼로 상기 적어도 하나의 사용자 화면 데이터를 복사하거나, 또는 상기 적어도 하나의 사용자 프레임 버퍼로부터 메인 메모리로 상기 적어도 하나의 사용자 화면 데이터를 복사하고 상기 메인 메모리로부터 상기 마스터 프레임 버퍼로 상기 적어도 하나의 사용자 화면 데이터를 복사하는, 화면 미러링 방법.
  9. 제8항에서,
    상기 컴퓨팅 장치는,
    물리적인 GPU(Graphics Processing Unit)를 상기 복수의 VM에 대응하는 복수의 vGPU(virtualized GPU)로 구현하고,
    상기 전달하는 단계는,
    상기 적어도 하나의 사용자 화면 데이터의 해상도 변경이 필요하지 않으면, 상기 적어도 하나의 사용자 프레임 버퍼에 대하여 할당된 적어도 하나의 물리적인 GPU의 메모리 주소를 섀도우 페이지(Shadow page) 테이블로부터 획득하고 상기 획득한 적어도 하나의 메모리 주소를 상기 마스터 VM으로 전달하며,
    상기 마스터 VM은,
    상기 획득한 적어도 하나의 메모리 주소를 참조하여, 상기 적어도 하나의 사용자 프레임 버퍼로부터 상기 적어도 하나의 사용자 화면 데이터를 인출하여 상기 마스터 단말로 출력하는, 화면 미러링 방법.
  10. 제9항에서,
    상기 수신하는 단계 이후,
    상기 마스터 VM의 설정에 따라 상기 적어도 하나의 사용자 화면 데이터의 해상도를 변경하는 단계를 더 포함하고,
    상기 해상도가 변경된 화면 데이터는,
    상기 마스터 VM으로 전달되는, 화면 미러링 방법.

KR1020200131305A 2020-10-12 2020-10-12 가상화 환경에서 사용자 가상머신의 화면을 미러링하는 방법 KR20220048311A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200131305A KR20220048311A (ko) 2020-10-12 2020-10-12 가상화 환경에서 사용자 가상머신의 화면을 미러링하는 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200131305A KR20220048311A (ko) 2020-10-12 2020-10-12 가상화 환경에서 사용자 가상머신의 화면을 미러링하는 방법

Publications (1)

Publication Number Publication Date
KR20220048311A true KR20220048311A (ko) 2022-04-19

Family

ID=81391596

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200131305A KR20220048311A (ko) 2020-10-12 2020-10-12 가상화 환경에서 사용자 가상머신의 화면을 미러링하는 방법

Country Status (1)

Country Link
KR (1) KR20220048311A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114968152A (zh) * 2022-04-29 2022-08-30 麒麟软件有限公司 减少virtio-gpu额外性能损耗的方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114968152A (zh) * 2022-04-29 2022-08-30 麒麟软件有限公司 减少virtio-gpu额外性能损耗的方法

Similar Documents

Publication Publication Date Title
US9396013B2 (en) Method for controlling a virtual machine and a virtual machine system
US10310879B2 (en) Paravirtualized virtual GPU
US8629878B2 (en) Extension to a hypervisor that utilizes graphics hardware on a host
US20130174151A1 (en) Information processing apparatus and method of controlling virtual machine
WO2017024783A1 (zh) 一种虚拟化方法、装置和系统
US20130139155A1 (en) Adjustment During Migration to a Different Virtualization Environment
US20110246988A1 (en) Hypervisor for starting a virtual machine
US9529618B2 (en) Migrating processes between source host and destination host using a shared virtual file system
US20180074956A1 (en) Method, apparatus, and electronic device for modifying memory data of a virtual machine
KR20070100367A (ko) 하나의 가상 머신에서 다른 가상 머신으로 메모리를동적으로 재할당하기 위한 방법, 장치 및 시스템
EP0619898A1 (en) Computer system with two levels of guests
KR20120068573A (ko) 심리스 애플리케이션 통합 장치 및 방법
US10664299B2 (en) Power optimizer for VDI system
US10503659B2 (en) Post-copy VM migration speedup using free page hinting
KR102001641B1 (ko) 가상화 환경에서의 gpu 자원 관리 방법 및 장치
KR20220048311A (ko) 가상화 환경에서 사용자 가상머신의 화면을 미러링하는 방법
US9959842B2 (en) On-screen display at thin client
KR101077908B1 (ko) 서버 가상화 장치
US9684529B2 (en) Firmware and metadata migration across hypervisors based on supported capabilities
KR20230043956A (ko) 벡터 처리
US9104634B2 (en) Usage of snapshots prepared by a different host
US10241821B2 (en) Interrupt generated random number generator states
US8402191B2 (en) Computing element virtualization
US20150277945A1 (en) Virtual computer system
CN117331704B (zh) 图形处理器gpu调度方法、装置和存储介质