KR20130068588A - 호스트 기반 단말 가상화 환경에서 공유 메모리를 이용한 입출력 디바이스 가상화 장치 및 방법 - Google Patents

호스트 기반 단말 가상화 환경에서 공유 메모리를 이용한 입출력 디바이스 가상화 장치 및 방법 Download PDF

Info

Publication number
KR20130068588A
KR20130068588A KR1020110135875A KR20110135875A KR20130068588A KR 20130068588 A KR20130068588 A KR 20130068588A KR 1020110135875 A KR1020110135875 A KR 1020110135875A KR 20110135875 A KR20110135875 A KR 20110135875A KR 20130068588 A KR20130068588 A KR 20130068588A
Authority
KR
South Korea
Prior art keywords
input
operating system
output
data
command
Prior art date
Application number
KR1020110135875A
Other languages
English (en)
Other versions
KR101751936B1 (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 KR1020110135875A priority Critical patent/KR101751936B1/ko
Priority to US13/480,009 priority patent/US8863123B2/en
Publication of KR20130068588A publication Critical patent/KR20130068588A/ko
Application granted granted Critical
Publication of KR101751936B1 publication Critical patent/KR101751936B1/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/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
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 이동단말기에 복수의 운영체제를 동시 실행하기 위한 호스트 기반 단말 가상화 환경에서 공유 메모리를 이용하여 다양한 입출력 디바이스를 가상화하는 기술에 관한 것으로, 소정의 입출력 데이터 전달을 위한 공유 메모리, 및 운영체제 간 이벤트 전달을 위한 이벤트 채널을 포함하고, 상기 게스트 운영체제부에서 입출력 요청 신호가 수신되면, 상기 수신된 입출력 요청 신호에 대응하는 명령 및 데이터를 상기 공유 메모리에 저장하고, 상기 저장된 명령 및 데이터를 상기 이벤트 채널을 통하여 호스트 운영체제로 전달하는 가상 머신 모니터부를 이용하여, 게스트 운영체제와 호스트 운영체제가 데이터 입출력 요청 신호에 따른 데이터 송수신을 수행할 수 있도록 하여, 다양한 입출력 디바이스를 쉽게 가상화할 수 있는 방법을 제공한다

Description

호스트 기반 단말 가상화 환경에서 공유 메모리를 이용한 입출력 디바이스 가상화 장치 및 방법{APPARATUS AND METHOD FOR VIRTUALIZATION OF I/O DEVICE USING SHARED MEMORY IN HOST-BASED TERMINAL VIRTUALIZATION ENVIRONMENT}
본 발명은 이동단말기에 복수의 운영체제를 동시 실행하기 위한 호스트 기반 단말 가상화 환경에서 공유 메모리를 이용하여 다양한 입출력 디바이스를 가상화하는 기술에 관한 것이다.
현재 이동단말기에서는 비디오, 오디오, 디스크, 네트워크 등의 입출력을 위한 다양한 디바이스가 사용되고 있다. 이러한 환경에서 복수의 운영체제를 동시 실행시키기 위하여 호스트 기반 단말 가상화 기술을 적용하면 호스트 운영체제는 모든 하드웨어 자원에 대한 제어권을 가지고 있고 게스트 운영체제는 호스트 운영체제 내에서 가상머신으로 실행되게 된다.
이러한 경우, 게스트 운영체제가 정상적으로 동작되기 위해서는, 게스트 운영체제 역시 모든 비디오, 오디오, 디스크, 네트워크 등의 입출력 디바이스 자원에 대한 제어가 가능해야 한다.
그러나, 호스트 운영체제와 게스트 운영체제가 동시에 동일한 입출력 디바이스를 제어할 경우 데이터가 손상되는 등의 문제점이 발생한다.
따라서, 이를 해결하기 위해 게스트 운영체제는 각 디바이스에 대한 가상 디바이스 드라이버를 사용하여 호스트 운영체제를 통해 제어를 하게 된다. 다만, 이동단말기에는 다양한 입출력 디바이스가 사용되고 있고 각 입출력 디바이스를 제어하는 방법이 장치마다 다르기 때문에 모든 입출력 디바이스를 각각 가상화해야 하는 문제점이 있다.
본 발명은 전술한 종래기술의 문제점을 해결하기 위하여, 호스트 기반 단말 가상화 환경에서 호스트 운영체제에서 할당 받은 공유메모리를 이용하여 다양한 입출력 장치를 쉽게 가상화할 수 있는 장치 및 방법을 제공하는 데 그 목적이 있다.
본 발명의 목적을 달성하기 위한, 본 발명의 실시 예에 따른 입출력 디바이스 가상화 장치는, 단말기의 입출력 장치를 제어하는 하드웨어 장치 제어부, 가상 머신을 통하여 응용프로그램을 실행하기 위한 게스트 운영체제를 구동시키는 게스트 운영체제부, 소정의 입출력 데이터 전달을 위한 공유 메모리, 및 운영체제 간 이벤트 전달을 위한 이벤트 채널을 포함하고, 상기 게스트 운영체제부에서 입출력 요청 신호가 수신되면, 상기 수신된 입출력 요청 신호에 대응하는 명령 및 데이터를 상기 공유 메모리에 저장하고, 상기 저장된 명령 및 데이터를 상기 이벤트 채널을 통하여 호스트 운영체제로 전달하는 가상 머신 모니터부, 상기 가상 머신 모니터부에 상기 공유 메모리를 할당하기 위한 동작, 및 상기 이벤트 채널을 생성하기 위한 동작을 수행하고, 상기 이벤트 채널을 통하여 입출력 명령이 수신되면, 상기 하드웨어 장치 제어부를 통하여 상기 수신된 입출력 명령에 대응되는 동작을 수행한 후, 상기 동작 수행의 결과를 상기 공유 메모리에 저장하여 상기 동작 수행 결과가 상기 이벤트 채널을 통하여 상기 게스트 운영체제부로 전송될 수 있도록 하는 호스트 운영체제부를 포함한다.
또한, 본 발명의 다른 실시 예에 따른 입출력 디바이스 가상화 방법은, 가상 머신을 통하여 응용 프로그램을 실행하는 게스트 운영체제를 구동하는 게스트 운영체제가, 소정의 입출력 데이터 전달을 위한 공유 메모리, 및 운영체제 간 이벤트 전달을 위한 이벤트 채널을 포함하는 가상 머신 모니터로 상기 이벤트 채널을 통하여 입출력 요청 신호를 전송하는 단계, 상기 입출력 요청 신호가 상기 가상 머신 모니터에 수신되면, 가상 머신 모니터가 상기 수신된 입출력 요청 신호에 대응하는 명령 및 데이터를 상기 공유 메모리에 저장하고, 상기 저장된 명령 및 데이터를 상기 이벤트 채널을 통하여 호스트 운영체제로 전달하는 단계, 상기 이벤트 채널을 통하여 상기 입출력 명령이 상기 호스트 운영체제로 수신되면, 호스트 운영체제는 하드웨어 장치를 제어하여 상기 수신된 입출력 명령에 대응되는 동작을 수행하는 단계; 및 상기 호스트 운영체제가 상기 동작 수행의 결과를 상기 공유 메모리에 저장하고, 상기 가상 머신 모니터는 상기 저장된 결과를 상기 게스트 운영체제로 전송하는 단계를 포함한다.
상기한 바와 같이 본 발명은 호스트 기반 단말 가상화 환경에서 공유 메모리를 이용하여 입출력 디바이스를 가상화 하기 위하여 원본 디바이스 드라이버를 최대한 재사용하여 게스트 운영체제와 호스트 운영체제가 사용할 가상 디바이스 드라이버를 만들고 가상 머신 모니터의 공유 메모리와 이벤트 채널을 이용하여 입출력 요청을 처리함으로써 다양한 입출력 디바이스를 쉽게 가상화할 수 있는 방법을 제공한다.
도 1은 본 발명의 실시 예에 따른 가상 머신 모니터를 도시한 도면이다.
도 2는 본 발명의 실시 예에 따른 가상 머신을 통한 입출력 동작이 수행되는 드라이버의 구성을 도시한 도면이다.
도 3은 본 발명의 실시 예에 따른 가상 머신을 통한 입출력 동작이 수행되는 과정을 도시한 순서도이다.
도 4는 본 발명의 다른 실시 예에 따른 가상 머신을 통한 입출력 동작이 수행되는 과정을 도시한 순서도이다.
이하에서는 첨부된 도면을 참조하여 본 발명의 여러 가지 실시 예들을 보다 상세히 설명하도록 하겠다. 나아가, 이하의 설명에서 사용되는 구성요소에 대한 접미사 "부", “모듈” 및 "장치"는 단순히 본 명세서 작성의 용이함을 고려하여 부여되는 것으로서, 상기 "부", “모듈” 및 "장치"는 서로 혼용되어 사용될 수 있으며, 하드웨어 또는 소프트웨어로 설계 가능하다.
나아가, 이하 첨부 도면들 및 첨부 도면들에 기재된 내용들을 참조하여 본 발명의 실시 예를 상세하게 설명하지만, 본 발명이 실시 예들에 의해 제한되거나 한정되는 것은 아니다.
도 1은 본 발명의 실시 예에 따른 가상 머신 모니터를 도시한 도면이다.
실시 예에 따라, 호스트 기반 단말 가상화 환경에서 입출력 장치 가상화 시스템은 단말기의 입출력 디바이스를 포함하는 하드웨어 장치 제어부(400), 모든 하드웨어 디바이스에 대한 제어권을 가지고 게스트 운영체제부(200)의 동작 환경을 제공하는 호스트 운영체제부(100), CPU, 메모리, 입출력 가상화를 지원하여 게스트 운영체제을 실행 시키면서 각 운영체제의 실행환경을 격리시키는 가상 머신 모니터부(300), 가상 머신 모니터부의 지원을 통해 실행되고, 가상 머신을 통하여 응용 프로그램을 실행하기 위한 게스트 운영체제를 구동시키는 게스트 운영체제부(200)를 포함할 수 있다.
따라서, 가상화되어 있는 환경에서 게스트 운영체제가 입출력 디바이스를 이용하도록 하기 위하여 게스트 운영체제 내에서는 게스트 운영체제 가상 디바이스 드라이버(210, 220, 230)를 이용하고 호스트 운영체제에서는 게스트 운영체제의 각 가상 디바이스 드라이버에 대응되는 호스트 운영체제 가상 디바이스 드라이버(120, 130, 140)가 게스트 운영체제에서 요청된 입출력 디바이스 요청을 받아 원본 디바이스 드라이버(150, 160, 170)게 전달하고 그 결과를 다시 게스트 운영체제의 가상 디바이스 드라이버에 전달할 수 있다.
또한, 가상 머신 모니터부는 두 가상 디바이스 드라이버의 데이터 및 이벤트 전달을 지원하기 위하여 호스트 운영체제에서 할당 받은 공유메모리(310)와 운영체제 간 이벤트 전달을 위한 이벤트 채널(320)을 포함할 수 있다.
또한, 가상 머신 모니터부는, 상기 게스트 운영체제부에서 입출력 요청 신호가 수신되면, 상기 수신된 입출력 요청 신호에 대응하는 명령 및 데이터를 상기 공유 메모리에 저장하고, 상기 저장된 명령 및 데이터를 상기 이벤트 채널을 통하여 호스트 운영체제로 전달할 수 있고, 상기 저장된 명령의 동작 수행 결과가 호스트 운영 체제부를 통하여 공유 메모리에 저장되면, 상기 이벤트 채널을 통하여 상기 동작 수행 결과를 상기 게스트 운영체제부로 전송할 수 있다.
또한, 호스트 운영 체제부는, 상기 가상 머신 모니터부에 상기 공유 메모리를 할당하기 위한 동작, 및 상기 이벤트 채널을 생성하기 위한 동작을 수행할 수 있고, 상기 이벤트 채널을 통하여 입출력 명령이 수신되면, 상기 하드웨어 장치 제어부를 통하여 상기 수신된 입출력 명령에 대응되는 동작을 수행한 후, 상기 동작 수행의 결과를 상기 공유 메모리에 저장하여 상기 동작 수행 결과가 상기 이벤트 채널을 통하여 상기 게스트 운영체제부로 전송되도록 할 수 있다.
또한, 호스트 운영 체제부는, 상기 이벤트 채널을 통하여 수신되는 입출력 명령이 데이터 쓰기 명령인 경우, 상기 데이터 입력 명령에 따라, 상기 하드웨어 장치 제어부를 통하여 상기 공유 메모리에 저장된 입력 데이터를 물리 디바이스에 기록하기 위한 동작을 수행할 수 있고, 반면에, 상기 이벤트 채널을 통하여 수신되는 입출력 명령이 데이터 읽기 명령인 경우, 상기 데이터 읽기 명령에 따라, 상기 하드웨어 장치 제어부를 통하여 물리 디바이스에 저장된 데이터를 추출하여 상기 공유메모리에 저장하기 위한 동작을 수행할 수 있다.
또한, 호스트 운영 체제부는, 소정의 입출력 명령이 수신되면, 상기 수신된 입출력 명령이 이벤트 채널을 통하여 상기 게스트 운영체제부로부터 수신된 것인지 여부를 판단하고, 상기 판단 결과, 상기 수신된 입출력 명령이 상기 게스트 운영체제로부터 수신된 것이 아닌 경우에는 상기 가상 머신 모니터 부에 액세스하지 않고, 상기 하드웨어 장치 제어부만을 통하여 상기 입출력 명령에 대응하는 동작을 수행할 수 있다. 즉, 상기 수신된 입출력 명령이 상기 게스트 운영체제로부터 수신된 것이 아닌 경우에는, 일반적인 입출력 디바이스 장치와 동일하게 동작한다.
또한, 게스트 운영체제부는, 하나 이상의 게스트 운영체제 가상 디바이스 드라이버를 포함하여 상기 게스트 운영체제 가상 디바이스 드라이버를 이용하여 상기 입출력 요청 신호를 상기 이벤트 채널을 통하여 상기 가상 머신 모니터부로 전송 할 수 있고, 실시 예에 따라, 상기 게스트 운영체제에서 입출력 가능한 데이터의 종류에 따라 서로 다른 게스트 운영체제 가상 디바이스 드라이버를 이용할 수 있다.
또한, 호스트 운영체제부는, 하나 이상의 호스트 운영체제 가상 디바이스 드라이버를 포함하여 상기 호스트 운영체제 가상 디바이스 드라이버를 이용하여 상기 수신된 입출력 명령에 대응되는 동작이 수행되도록 할 수 있고, 실시 예에 따라, 상기 하드웨어 장치 제어부를 통하여 입출력 가능한 데이터의 종류에 따라 서로 다른 호스트 운영체제 가상 디바이스 드라이버를 이용하도록 할 수 있다.
도 2는 본 발명의 실시 예에 따른 가상 머신을 통한 입출력 동작이 수행되는 드라이버의 구성을 도시한 도면이다.
실시 예에 따라, 원본 디바이스 드라이버를 최대한 재사용하여 가상 디바이스 드라이버를 만들기 위하여 원본 디바이스 드라이버에서 사용자로부터 받은 디바이스 읽기/쓰기 요청(121)을 메모리 쓰기/읽기 시작(122) 부분을 기준으로 상위 부분을 게스트 운영체제 가상 디바이스 드라이버(120)으로 이용하고, 나머지 하위 부분 중 메모리 쓰기/읽기 종료(131) 이후 디바이스 읽기/쓰기 수행(132)을 수행하는 부분 까지를 호스트 운영체제 가상 디바이스 드라이버(130)로 이용할 수 있다.
따라서, 두 가상 디바이스 드라이버에서 메모리에 요청을 쓰고 그 결과를 처리하는 부분을 가상 머신 모니터의 공유 메모리와 이벤트 채널을 이용하는 방법으로 대체하면 두 가상 디바이스 드라이버를 쉽게 생성할 수 있다.
즉, 호스트 운영체제와 게스트 운영체제에서 사용하는 가상 디바이스 드라이버를 만들기 위하여 기존의 디바이스 드라이버를 재사용한다. 게스트 운영체제의 디바이스 드라이버는 기존 디바이스 드라이버에서 물리 디바이스에 데이터를 쓰거나 읽는 전 단계까지를 그대로 재사용하고 호스트 운영체제에서 사용하는 가상 디바이스 드라이버는 전달된 데이터를 물리 디바이스에 쓰거나 읽는 부분을 재사용한다.
결국, 물리 디바이스에 데이터를 읽고 쓰기 위해 운영체제 내 메모리에 데이터를 쓰거나 읽는 곳을 기준으로 게스트 운영체제 가상 디바이스 드라이버와 호스트 운영체제 가상 디바이스 드라이버를 나누고, 메모리에 데이터를 쓰거나 읽는 부분을 공유메모리와 이벤트 채널로 대체하는 것이다.
따라서, 기존의 디바이스 드라이버를 재사용하여 게스트 운영체제와 호스트 운영체제가 사용하는 가상 디바이스 드라이버를 생성함으로써 물리 디바이스에 대한 가상 디바이스 드라이버를 만들기 위한 노력을 최소화 할 수 있으며, 공유 메모리, 이벤트 채널을 이용하여 모든 입출력 디바이스에 대한 가상화 방법을 공통화함으로써 다양한 물리 입출력 디바이스를 쉽게 가상화 할 수 있다.
도 3은 본 발명의 실시 예에 따른 가상 머신을 통한 입출력 동작이 수행되는 과정을 도시한 순서도이다.
실시 예에 따라, 도 3(a)에 도시된 바와 같이, 가상 입출력 디바이스를 통하여 데이터 쓰기 동작을 수행할 수 있다.
먼저, 가상 머신을 통하여 응용 프로그램을 실행하는 게스트 운영체제를 구동하는 게스트 운영체제가, 소정의 입출력 데이터 전달을 위한 공유 메모리, 및 운영체제 간 이벤트 전달을 위한 이벤트 채널을 포함하는 가상 머신 모니터로 상기 이벤트 채널을 통하여 입출력 요청 신호를 전송한다(S301).
다음으로, 상기 입출력 요청 신호가 상기 가상 머신 모니터에 수신되면, 가상 머신 모니터가 상기 수신된 입출력 요청 신호에 대응하는 명령 및 데이터를 상기 공유 메모리에 저장하고, 상기 저장된 명령 및 데이터를 상기 이벤트 채널을 통하여 호스트 운영체제로 전달한다(S302).
또한, 실시 예에 따라, 하나 이상의 게스트 운영체제 가상 디바이스 드라이버를 포함하는 게스트 운영체제에서, 상기 게스트 운영체제 가상 디바이스 드라이버를 이용하여 상기 입출력 요청 신호의 전송을 수행할 수 있고, 상기 게스트 운영체제에서 입출력 가능한 데이터의 종류에 따라 서로 다른 게스트 운영체제 가상 디바이스 드라이버를 이용하여 상기 입출력 요청 신호의 전송을 수행할 수 있다.
다음으로, 상기 이벤트 채널을 통하여 상기 입출력 명령이 상기 호스트 운영체제로 수신되면, 호스트 운영체제는 하드웨어 장치를 제어하여 상기 수신된 입출력 명령에 대응되는 동작을 수행한다.
즉, 상기 데이터 입력 명령에 따라, 상기 하드웨어 장치를 제어하여 상기 공유 메모리에 저장된 입력 데이터를 물리 디바이스에 기록하기 위한 동작을 수행할 수 있다(S303).
또한, 호스트 운영체제부, 하나 이상의 호스트 운영체제 가상 디바이스 드라이버를 포함하여 상기 호스트 운영체제 가상 디바이스 드라이버를 이용하여 상기 수신된 입출력 명령에 대응되는 동작이 수행되도록 할 수 있고, 실시 예에 따라, 상기 하드웨어 장치 제어부를 통하여 입출력 가능한 데이터의 종류에 따라 서로 다른 호스트 운영체제 가상 디바이스 드라이버를 이용하도록 할 수 있다.
다음으로, 상기 호스트 운영체제가 상기 동작 수행의 결과를 상기 공유 메모리에 저장하고, 상기 가상 머신 모니터는 상기 저장된 결과를 상기 게스트 운영체제로 전송하여(S304) 데이터 쓰기 동작의 수행을 완료할 수 있다.
또한, 다른 실시 예에 따라, 도 3(b)에 도시된 바와 같이, 가상 입출력 디바이스를 통하여, 데이터 읽기 동작을 수행할 수 있다.
데이터 읽기 동작을 수행하는 경우, 입출력 요청을 전송하는 단계(S301), 및 이벤트를 통하여 데이터 읽기 수행을 요청하는 단계(S312)는, 도 3(a)의 단계(S301), 및 단계(S302)와 동일하다.
다음으로, 상기 이벤트 채널을 통하여 상기 입출력 명령이 상기 호스트 운영체제로 수신되면, 호스트 운영체제는 하드웨어 장치를 제어하여 상기 수신된 입출력 명령에 대응되는 동작을 수행한다.
즉, 상기 데이터 읽기 명령에 따라, 상기 하드웨어 장치를 제어하여 물리 디바이스에 저장된 데이터를 추출하여 상기 공유메모리에 저장하기 위한 동작을 수행할 수 있다(S313).
다음으로, 상기 호스트 운영체제가 상기 동작 수행의 결과를 상기 공유 메모리에 저장하고, 상기 가상 머신 모니터는 상기 저장된 결과를 상기 게스트 운영체제로 전송하여(S314), 데이터 읽기 동작을 완료할 수 있다.
도 4는 본 발명의 다른 실시 예에 따른 가상 머신을 통한 입출력 동작이 수행되는 과정을 도시한 순서도이다.
실시 예에 따라, 입출력 디바이스에 대한 입출력 요청(S401)이 수신되면, 상기 입출력 요청이 게스트 운영체제에서 발생했는지 여부를 확인한다(S402).
상기 판단(S402) 결과, 상기 입출력 요청이, 게스트 운영체제가 아닌 호스트 운영체에서 발생한 요청인 경우, 원본 디바이스 드라이버를 이용하여 요청을 처리한다(S407).
즉, 일반적인 입출력 디바이스 장치와 동일하게 동작하도록 한다.
반면에, 상기 판단(S402) 결과, 상기 입출력 요청이, 게스트 운영체제에서 발생한 요청인 경우 입출력 요청을 읽어서(S403) 공유 메모리에 쓰고(S404) 호스트 운영체제의 가상 디바이스 드라이버에게 이벤트를 전달한다(S405).
다음으로, 호스트 운영체제 가상 디바이스 드라이버는 공유 메모리를 이용하여 전달된 입출력 요청을 읽어서, 원본 디바이스 드라이버에게 전달한 후(S406), 상기 요청을 처리한다(S407).
또한, 처리된 결과를 전달해야 할 대상이 호스트 운영체제인지 여부를 판단하고(S408), 상기 판단 결과, 처리된 결과를 전달해야 할 대상이 호스트 운영체제인 경우 그 결과를 바로 호스트 운영체제로 반환한다(S413).
반면에, 상기 판단(S408) 결과, 처리된 결과를 전달해야 할 대상이 게스트 운영체제인 경우, 호스트 운영체제의 가상 디바이스 드라이버가 입출력 요청에 대한 결과를 전달 받아(S409) 그 내용을 공유 메모리에 쓰고(S410) 게스트 운영체제의 가상 디바이스 드라이버에게 이벤트를 전달한다(S411).
다음으로, 게스트 운영체제의 가상 디바이스 드라이버는 공유 메모리로부터 결과를 읽은 후(S412), 결과를 반환한다(S413).
또한, 이상에서는 본 발명의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해돼서는 안 될 것이다.
100: 호스트 운영체제부
120, 130, 140: 호스트 운영체제 가상 디바이스 드라이버
150, 160, 170: 호스트 운영체제 원본 디바이스 드라이버
200: 게스트 운영체제부
210, 220, 230: 게스트 운영체제 가상 디바이스 드라이버
300: 가상 머신 모니터부
310: 공유 메모리
320: 이벤트 채널
400: 하드웨어 장치 제어부
410, 420, 430: 입출력 드라이버

Claims (11)

  1. 단말기의 입출력 장치를 제어하는 하드웨어 장치 제어부;
    가상 머신을 통하여 응용프로그램을 실행하기 위한 게스트 운영체제를 구동시키는 게스트 운영체제부;
    소정의 입출력 데이터 전달을 위한 공유 메모리, 및 운영체제 간 이벤트 전달을 위한 이벤트 채널을 포함하고, 상기 게스트 운영체제부에서 입출력 요청 신호가 수신되면, 상기 수신된 입출력 요청 신호에 대응하는 명령 및 데이터를 상기 공유 메모리에 저장하고, 상기 저장된 명령 및 데이터를 상기 이벤트 채널을 통하여 호스트 운영체제로 전달하는 가상 머신 모니터부; 및
    상기 가상 머신 모니터부에 상기 공유 메모리를 할당하기 위한 동작, 및 상기 이벤트 채널을 생성하기 위한 동작을 수행하고, 상기 이벤트 채널을 통하여 입출력 명령이 수신되면, 상기 하드웨어 장치 제어부를 통하여 상기 수신된 입출력 명령에 대응되는 동작을 수행하고, 상기 동작 수행의 결과를 상기 공유 메모리에 저장하여 상기 동작 수행 결과가 상기 이벤트 채널을 통하여 상기 게스트 운영체제부로 전송되도록 제어 하는 호스트 운영체제부
    를 포함하는 것을 특징으로 하는 입출력 디바이스 가상화 장치.
  2. 청구항 1에 있어서,
    상기 게스트 운영체제부는,
    하나 이상의 게스트 운영체제 가상 디바이스 드라이버를 포함하고, 상기 게스트 운영체제 가상 디바이스 드라이버를 이용하여 상기 입출력 요청 신호를 상기 이벤트 채널을 통하여 상기 가상 머신 모니터부로 전송하고,
    상기 호스트 운영체제부는,
    하나 이상의 호스트 운영체제 가상 디바이스 드라이버를 포함하고, 상기 호스트 운영체제 가상 디바이스 드라이버를 이용하여 상기 수신된 입출력 명령에 대응되는 동작이 수행되도록 하는 것을 특징으로 하는 입출력 디바이스 가상화 장치.
  3. 청구항 2에 있어서,
    상기 게스트 운영체제부는,
    상기 게스트 운영체제에서 입출력 가능한 데이터의 종류에 따라 서로 다른 게스트 운영체제 가상 디바이스 드라이버를 이용하고,
    상기 호스트 운영체제부는,
    상기 하드웨어 장치 제어부를 통하여 입출력 가능한 데이터의 종류에 따라 서로 다른 호스트 운영체제 가상 디바이스 드라이버를 이용하도록 하는 것을 특징으로 하는 입출력 디바이스 가상화 장치.
  4. 청구항 1에 있어서,
    상기 호스트 운영체제부는,
    상기 이벤트 채널을 통하여 수신되는 입출력 명령이 데이터 쓰기 명령인 경우, 상기 데이터 입력 명령에 따라, 상기 하드웨어 장치 제어부를 통하여 상기 공유 메모리에 저장된 입력 데이터를 물리 디바이스에 기록하기 위한 동작을 수행하는 것을 특징으로 하는 입출력 디바이스 가상화 장치.
  5. 청구항 1에 있어서,
    상기 호스트 운영체제부는,
    상기 이벤트 채널을 통하여 수신되는 입출력 명령이 데이터 읽기 명령인 경우, 상기 데이터 읽기 명령에 따라, 상기 하드웨어 장치 제어부를 통하여 물리 디바이스에 저장된 데이터를 추출하여 상기 공유메모리에 저장하기 위한 동작을 수행하는 것을 특징으로 하는 입출력 디바이스 가상화 장치.
  6. 청구항 1항에 있어서,
    상기 가상 머신 모니터부는,
    상기 동작 수행의 결과가 상기 공유 메모리에 저장되면, 상기 이벤트 채널을 통하여 상기 동작 수행 결과를 상기 게스트 운영체제부로 전송하는 것을 특징으로 하는 입출력 디바이스 가상화 장치.
  7. 가상 머신에서 구동되는 게스트 운영체제가, 소정의 입출력 데이터 전달을 위한 공유 메모리, 및 운영체제 간 이벤트 전달을 위한 이벤트 채널을 포함하는 가상 머신 모니터로 상기 이벤트 채널을 통하여 입출력 요청 신호를 전송하는 단계;
    상기 입출력 요청 신호가 상기 가상 머신 모니터에 수신되면, 가상 머신 모니터가 상기 수신된 입출력 요청 신호에 대응하는 명령 및 데이터를 상기 공유 메모리에 저장하고, 상기 저장된 명령 및 데이터를 상기 이벤트 채널을 통하여 호스트 운영체제로 전달하는 단계;
    상기 이벤트 채널을 통하여 상기 입출력 명령이 상기 호스트 운영체제로 수신되면, 호스트 운영체제는 하드웨어 장치를 제어하여 상기 수신된 입출력 명령에 대응되는 동작을 수행하는 단계; 및
    상기 호스트 운영체제가 상기 동작 수행의 결과를 상기 공유 메모리에 저장하고, 상기 가상 머신 모니터는 상기 저장된 결과를 상기 게스트 운영체제로 전송하는 단계
    를 포함하는 것을 특징으로 하는 입출력 디바이스 가상화 방법.
  8. 청구항 7에 있어서,
    상기 입출력 요청 신호를 전송하는 단계는,
    하나 이상의 게스트 운영체제 가상 디바이스 드라이버를 포함하는 게스트 운영체제가 상기 게스트 운영체제 가상 디바이스 드라이버를 이용하여 상기 입출력 요청 신호의 전송을 수행하는 단계
    를 포함하고,
    상기 수신된 입출력 명령에 대응되는 동작을 수행하는 단계는,
    하나 이상의 호스트 운영체제 가상 디바이스 드라이버를 포함하는 호스트 운영체제가 상기 호스트 운영체제 가상 디바이스 드라이버를 이용하여 상기 수신된 입출력 명령에 대응되는 하드웨어 장치 제어를 수행하는 단계
    를 포함하는 것을 특징으로 하는 입출력 디바이스 가상화 방법.
  9. 청구항 8에 있어서,
    상기 입출력 요청 신호를 전송하는 단계는,
    상기 게스트 운영체제에서 입출력 가능한 데이터의 종류에 따라 서로 다른 게스트 운영체제 가상 디바이스 드라이버를 이용하여 상기 입출력 요청 신호의 전송을 수행하는 단계
    를 포함하고,
    상기 수신된 입출력 명령에 대응되는 동작을 수행하는 단계는,
    상기 하드웨어 장치를 통하여 입출력 가능한 데이터의 종류에 따라 서로 다른 호스트 운영체제 가상 디바이스 드라이버를 이용하여 상기 수신된 입출력 명령에 대응되는 하드웨어 장치 제어를 수행하는 단계
    를 포함하는 것을 특징으로 하는 입출력 디바이스 가상화 방법.
  10. 청구항 8에 있어서,
    상기 수신된 입출력 명령에 대응되는 동작을 수행하는 단계는,
    상기 이벤트 채널을 통하여 수신되는 입출력 명령이 데이터 쓰기 명령인 경우, 상기 데이터 입력 명령에 따라, 상기 하드웨어 장치를 제어하여 상기 공유 메모리에 저장된 입력 데이터를 물리 디바이스에 기록하기 위한 동작을 수행하는 단계
    를 포함하는 것을 특징으로 하는 입출력 디바이스 가상화 방법.
  11. 청구항 8에 있어서,
    상기 수신된 입출력 명령에 대응되는 동작을 수행하는 단계는,
    상기 이벤트 채널을 통하여 수신되는 입출력 명령이 데이터 읽기 명령인 경우, 상기 데이터 읽기 명령에 따라, 상기 하드웨어 장치를 제어하여 물리 디바이스에 저장된 데이터를 추출하여 상기 공유메모리에 저장하기 위한 동작을 수행하는 단계
    를 포함하는 것을 특징으로 하는 입출력 디바이스 가상화 방법.
KR1020110135875A 2011-12-15 2011-12-15 호스트 기반 단말 가상화 환경에서 공유 메모리를 이용한 입출력 디바이스 가상화 장치 및 방법 KR101751936B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110135875A KR101751936B1 (ko) 2011-12-15 2011-12-15 호스트 기반 단말 가상화 환경에서 공유 메모리를 이용한 입출력 디바이스 가상화 장치 및 방법
US13/480,009 US8863123B2 (en) 2011-12-15 2012-05-24 Apparatus and method for virtualizing input/output devices using shared memory in host-based mobile terminal virtualization environment

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110135875A KR101751936B1 (ko) 2011-12-15 2011-12-15 호스트 기반 단말 가상화 환경에서 공유 메모리를 이용한 입출력 디바이스 가상화 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20130068588A true KR20130068588A (ko) 2013-06-26
KR101751936B1 KR101751936B1 (ko) 2017-07-12

Family

ID=48611624

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110135875A KR101751936B1 (ko) 2011-12-15 2011-12-15 호스트 기반 단말 가상화 환경에서 공유 메모리를 이용한 입출력 디바이스 가상화 장치 및 방법

Country Status (2)

Country Link
US (1) US8863123B2 (ko)
KR (1) KR101751936B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101489870B1 (ko) * 2013-08-19 2015-02-06 성균관대학교산학협력단 가상화 장치 및 그 메모리 관리 방법

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10514938B2 (en) * 2012-12-18 2019-12-24 Dynavisor, Inc. Making direct calls to a native device driver of a hypervisor using dynamic device driver virtualization
US9858097B2 (en) 2013-06-07 2018-01-02 American Megatrends, Inc. Methods, devices and computer readable storage devices for emulating rotation events in a guest operating system from a host operating system
US9378038B2 (en) 2013-06-07 2016-06-28 American Megatrends, Inc. Methods, devices and computer readable storage devices for emulating a gyroscope in a guest operating system from a host operating system
US20140366022A1 (en) * 2013-06-07 2014-12-11 American Megatrends, Inc. Methods, Devices and Computer Readable Storage Devices for Emulating a Magnetometer in a Guest Operating System from a Host Operating System
US20150199210A1 (en) * 2014-01-15 2015-07-16 American Megatrends, Inc. Methods, Devices and Computer Readable Storage Devices for Confluence of Multiple Operating Systems
US20140366021A1 (en) * 2013-06-07 2014-12-11 American Megatrends, Inc. Methods, Devices and Computer Readable Storage Devices for Emulating an Accelerometer in a Guest Operating System from a Host Operating System
US9430182B2 (en) 2014-03-06 2016-08-30 American Megatrends, Inc. Methods, systems and computer readable storage devices for presenting screen content
CN104360921A (zh) * 2014-10-17 2015-02-18 微梦创科网络科技(中国)有限公司 一种移动端性能监控方法、装置及系统
KR102301937B1 (ko) * 2014-12-22 2021-09-15 삼성전자주식회사 가상 머신 환경에서의 입출력 방법
KR102389028B1 (ko) 2016-01-04 2022-04-22 한국전자통신연구원 가상 데스크탑 간의 데이터 고속 전송 장치 및 방법
WO2018154967A1 (ja) * 2017-02-24 2018-08-30 株式会社東芝 制御装置
CN107402802A (zh) * 2017-07-27 2017-11-28 郑州云海信息技术有限公司 一种基于虚拟机的视频监控存储系统
WO2019127476A1 (zh) * 2017-12-29 2019-07-04 深圳前海达闼云端智能科技有限公司 虚拟系统蓝牙通信方法及装置、虚拟系统、存储介质及电子设备
KR102203648B1 (ko) * 2018-03-20 2021-01-15 미쓰비시덴키 가부시키가이샤 정보 처리 장치, 방법, 및 프로그램
US10846123B2 (en) * 2018-09-25 2020-11-24 Microsoft Technology Licensing, Llc Audio rendering from virtual machine
CN111796944B (zh) * 2019-04-08 2024-06-14 维塔科技(北京)有限公司 切换共享内存区的方法和装置、存储介质和电子设备
CN110083465B (zh) * 2019-04-26 2021-08-17 上海连尚网络科技有限公司 一种寄宿应用间的数据传递方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100472452C (zh) * 2006-06-23 2009-03-25 联想(北京)有限公司 一种虚拟机系统及其硬件设备的切换方法
US7529867B2 (en) * 2006-11-01 2009-05-05 Inovawave, Inc. Adaptive, scalable I/O request handling architecture in virtualized computer systems and networks
KR101321369B1 (ko) * 2007-03-21 2013-10-28 삼성전자주식회사 디스크 블록 액세스 처리 방법 및 시스템
US8763115B2 (en) * 2007-08-08 2014-06-24 Vmware, Inc. Impeding progress of malicious guest software
US8555081B2 (en) * 2007-10-30 2013-10-08 Vmware, Inc. Cryptographic multi-shadowing with integrity verification
US8677352B2 (en) * 2007-10-31 2014-03-18 Vmware, Inc. Interchangeable guest and host execution environments
US8521966B2 (en) * 2007-11-16 2013-08-27 Vmware, Inc. VM inter-process communications
JP5245539B2 (ja) * 2008-05-27 2013-07-24 富士通株式会社 仮想マシンの入出力エミュレーション機構
JP4854710B2 (ja) 2008-06-23 2012-01-18 株式会社東芝 仮想計算機システム及びネットワークデバイス共有方法
US8302094B2 (en) * 2009-06-26 2012-10-30 Vmware, Inc. Routing a physical device request using transformer stack to an equivalent physical device in a virtualized mobile device
US8327059B2 (en) * 2009-09-30 2012-12-04 Vmware, Inc. System and method to enhance memory protection for programs in a virtual machine environment
KR101636878B1 (ko) 2010-02-18 2016-07-06 삼성전자주식회사 가상화 환경에서의 데이터 처리 방법 및 드라이버
CN102262557B (zh) * 2010-05-25 2015-01-21 运软网络科技(上海)有限公司 通过总线架构构建虚拟机监控器的方法及性能服务框架
US9201677B2 (en) * 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US9268678B2 (en) * 2011-12-02 2016-02-23 Vmware, Inc. Memory defragmentation in a hosted hypervisor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101489870B1 (ko) * 2013-08-19 2015-02-06 성균관대학교산학협력단 가상화 장치 및 그 메모리 관리 방법

Also Published As

Publication number Publication date
US8863123B2 (en) 2014-10-14
US20130160005A1 (en) 2013-06-20
KR101751936B1 (ko) 2017-07-12

Similar Documents

Publication Publication Date Title
KR101751936B1 (ko) 호스트 기반 단말 가상화 환경에서 공유 메모리를 이용한 입출력 디바이스 가상화 장치 및 방법
TWI506445B (zh) 用於虛擬作業系統的直接記憶體存取篩選器的電腦系統、方法及電腦可讀取儲存媒體
CN107003892B (zh) Gpu虚拟化方法、装置、系统及电子设备、计算机程序产品
CN102077188B (zh) 用于虚拟化操作系统的直接存储器访问过滤器
KR101495862B1 (ko) 제로 클라이언트를 지원하는 가상화 서버 및 가상 머신 관리 방법
US9798565B2 (en) Data processing system and method having an operating system that communicates with an accelerator independently of a hypervisor
KR101521778B1 (ko) 가상화 환경에서 i/o 동작을 처리하는 방법 및 장치
US7454756B2 (en) Method, apparatus and system for seamlessly sharing devices amongst virtual machines
US10754715B2 (en) Application program control method and apparatus, terminal, and storage medium
US9697024B2 (en) Interrupt management method, and computer implementing the interrupt management method
US20150135173A1 (en) Virtual machine migration with swap pages
US10459802B2 (en) Backup image restore
US10289564B2 (en) Computer and memory region management method
CN103282881A (zh) 通过虚拟化直接共享智能设备
US9454397B2 (en) Data processing systems
JPH10283210A (ja) 仮想計算機システム間の仮想計算機移動制御方式
KR20070100367A (ko) 하나의 가상 머신에서 다른 가상 머신으로 메모리를동적으로 재할당하기 위한 방법, 장치 및 시스템
US20190317784A1 (en) Display method for use in multi-operating systems and electronic device
US20150160963A1 (en) Scheduling of processes using a virtual file system
CN105786589A (zh) 一种云渲染系统、服务器及方法
CN111213127B (zh) 用于直接分配的设备的虚拟化操作
WO2019028682A1 (zh) 一种多系统共享内存的管理方法及装置
CN112352221A (zh) 用以支持虚拟化环境中的ssd设备驱动器与物理ssd之间的sq/cq对通信的快速传输的共享存储器机制
CN113419845A (zh) 计算加速方法和装置、计算系统、电子设备及计算机可读存储介质
CN115202827A (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