KR101387986B1 - Virtualiztion apparatus - Google Patents

Virtualiztion apparatus Download PDF

Info

Publication number
KR101387986B1
KR101387986B1 KR1020120055662A KR20120055662A KR101387986B1 KR 101387986 B1 KR101387986 B1 KR 101387986B1 KR 1020120055662 A KR1020120055662 A KR 1020120055662A KR 20120055662 A KR20120055662 A KR 20120055662A KR 101387986 B1 KR101387986 B1 KR 101387986B1
Authority
KR
South Korea
Prior art keywords
input
virtual machine
request
interrupt
hypervisor module
Prior art date
Application number
KR1020120055662A
Other languages
Korean (ko)
Other versions
KR20130131812A (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 KR1020120055662A priority Critical patent/KR101387986B1/en
Publication of KR20130131812A publication Critical patent/KR20130131812A/en
Application granted granted Critical
Publication of KR101387986B1 publication Critical patent/KR101387986B1/en

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

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

Abstract

본 발명에 따른 가상화 장치는 게스트 커널과 하나 이상의 게스트 유저 프로세스를 포함하며 하나 이상의 물리 장치의 입출력을 위한 입출력 요청을 공유 큐에 삽입하는 가상 머신 및 상기 가상 머신을 구동시키는 하이퍼바이저 모듈과 상기 물리장치를 위한 하나 이상의 장치 드라이버를 포함하는 호스트 커널을 포함하되, 상기 게스트 커널은 상기 하이퍼바이저 모듈과 상호작용하기 위한 하나 이상의 장치 드라이버 및 프로세서간 인터럽트 핸들러를 포함하고, 상기 하이퍼바이저 모듈은 상기 공유 큐에 삽입된 입출력 요청이 있는지 여부를 확인하고, 상기 입출력 요청을 장치 에뮬레이션 쓰레드로 전달하는 폴링 쓰레드 및 상기 입출력 요청을 처리하고, 상기 프로세서간 인터럽트 핸들러를 통해 CPU에 완료 메시지를 전달하는 장치 에뮬레이션 쓰레드를 포함하는 가상화 장치에 해당된다.The virtualization apparatus according to the present invention comprises a virtual machine including a guest kernel and one or more guest user processes and inserting input / output requests for input and output of one or more physical devices into a shared queue, a hypervisor module for driving the virtual machine, and the physical device. A host kernel comprising one or more device drivers for the guest kernel, wherein the guest kernel includes one or more device drivers and an interprocessor interrupt handler for interacting with the hypervisor module, the hypervisor module in the shared queue. A device emulation thread that checks whether there is an inserted I / O request, handles the polling thread that passes the I / O request to the device emulation thread, and processes the I / O request, and delivers a completion message to the CPU through the interprocessor interrupt handler. It corresponds to a virtualization apparatus including a.

Description

가상화 장치{VIRTUALIZTION APPARATUS}Virtualization Device {VIRTUALIZTION APPARATUS}

본 발명은 가상화 장치에 관한 것이다.
The present invention relates to a virtualization device.

가상화 기술(Virtualization technology)은 한 대의 메인 프레임급 서버를 여러 대의 머신으로 가상적으로 나눠 쓰기 위해 도입된 개념이다. 최근 작은 모바일 장치에서부터 클라우드 서비스를 제공하는 큰 규모의 클러스터 컴퓨팅 환경까지 가상화 기술은 폭넓게 이용되고 있다. 가상화는 장치를 효율적으로 사용할 수 있게 하며, 다른 기종간 이식성뿐만 아니라 시스템이 실행 중에 다른 머신으로 이전(migration)이 가능하게 하는 등의 장점을 가지고 있다. Virtualization technology is a concept introduced to virtually divide one mainframe server into several machines. Recently, virtualization technology has been widely used, ranging from small mobile devices to large clustered computing environments that provide cloud services. Virtualization makes devices more efficient to use and has the advantages of portability between different machines, as well as the ability to migrate to another machine while the system is running.

가장 기본적인 장치 가상화 방법은 전통적인 트랩-엔드-에뮬레이트(trap-end-emulate) 방식이다. 게스트 운영체제의 장치 드라이버에서 I/O를 요청할 때 게스트 모드에서 직접 실행할 수 없는 특권명령(privileged instruction)을 사용하기 때문에, 하이퍼바이저(hypervisor)로의 전환이 발생하게 된다. 하이퍼바이저는 해당 요청을 장치 에뮬레이션 기능을 통해 처리한다. 또한 요청에 대한 처리가 끝난 경우에는 반대의 과정을 거쳐 게스트에게 인터럽트가 전달된다. 이와 같이 가상화 환경에서의 I/O는 베어메탈(Bare-metal) 환경에 비해 매우 복잡한 과정을 거친다.The most basic device virtualization method is the traditional trap-end-emulate method. When the device driver of the guest operating system requests I / O, the switch to the hypervisor occurs because it uses privileged instructions that cannot be executed directly in guest mode. The hypervisor handles the request through device emulation. In addition, when the request is completed, the interrupt is delivered to the guest through the reverse process. As such, I / O in a virtual environment is more complicated than bare-metal environment.

한편, 잦은 모드 전환에 의한 장치 가상화의 부하로 인해 I/O에 중점을 둔 워크로드는 가상화 환경에서 매우 낮은 성능을 보인다. 장치 가상화 과정의 각 부분에서 발생하는 모드전환은 그 자체의 비용뿐만 아니라 하드웨어 캐시를 오염시키는 등 간접적인 비용도 발생시키며, 또한 가상 머신 전체를 멈춤으로써 이에 따른 비용도 발생시킨다. On the other hand, due to the load of device virtualization due to frequent mode switching, I / O-intensive workloads perform very poorly in virtualized environments. Mode switching in each part of the device virtualization process not only costs itself, but also indirect costs, such as polluting the hardware cache, as well as the cost of stopping the entire virtual machine.

구체적으로 장치가상화의 모드전환은 발생하는 시점에 따라 크게 세가지 과정으로 나눌 수 있다. 가상화 환경에서의 I/O 요청 과정, 실제 장치를 에뮬레이션 하는 과정, I/O가 수행된 후 완료 메시지를 전달하는 과정이다. Specifically, the mode switching of device virtualization can be largely divided into three processes according to the timing of occurrence. It is the process of requesting I / O in virtualized environment, emulating real device, and delivering completion message after I / O is performed.

I/O 요청 과정에서 게스트 운영체제는 I/O 명령을 직접 처리할 수 없으므로 특별한 처리가 필요하다. 전통적인 트랩-엔드-에뮬레이트 방식을 사용한 장치 가상화 방법에서 이러한 게스트 운영체제의 I/O 요청은 하드웨어적인 예외를 발생시키게 된다. 하이퍼바이저는 이러한 예외를 이용해 I/O의 발생 여부를 알아낸다. 다만, 이러한 방법은 가상 머신과 하이퍼바이저 간의 모드전환을 수반한다. 또한, 모드 전환 시 TLB((Translation Look aside Buffer)의 플러시가 발생하고 하드웨어 캐시가 오염되는데, 이는 지역성을 활용하는 캐시의 장점을 완전히 배제하여 시스템 성능이 저하된다. 또한, 가상화 환경에서의 모드전환은 I/O를 요청한 유저 프로세스뿐 만 아니라, I/O 요청과 전혀 관련 없는 모든 프로세스들까지 동작하지 못하게 된다.During the I / O request process, the guest operating system cannot process I / O commands directly, so special processing is required. In the device virtualization method using the traditional trap-end-emulation method, I / O requests of such guest operating systems generate hardware exceptions. The hypervisor uses these exceptions to determine if I / O has occurred. However, this method involves mode switching between the virtual machine and the hypervisor. In addition, the translation look aside buffer (TLB) is flushed and the hardware cache is polluted when the mode is switched, which completely excludes the advantage of a cache that utilizes locality, thereby degrading system performance. Will not only run the user process that requested I / O, but all processes that have nothing to do with it.

장치 에뮬레이션과 완료 메시지 전달과정에서도 유사한 형태의 모드전환이 발생하여 가상화 성능을 제약한다. 이때 모드전환으로 인한 비용은 세 가지 분류로 나눌 수 있다. 첫 번째로 모드전환은 이를 수행하는 데에 프로세서 자원을 사용한다. 이로 인해 발생하는 비용을 직접 비용(direct cost) 이라 한다. 두 번째는 프로세서가 모드전환 이전과 이후 서로 다른 컨텍스트를 사용하는 코드를 실행하기 때문에 발생하는 간접비용(indirect cost)이다. 모드전환 시 하드웨어 캐시가 더럽혀지며(cache pollution), TLB의 플러시가 발생하게 된다. 이는 지역성을 활용하는 캐시성능에 큰 영향을 미치므로 많은 부하를 야기한다. 세 번째는 해당 모드전환으로 인해 직접적으로 관련 없는 부분까지 수행되지 못함으로써 발생하는 동기화 비용(synchronization cost) 이다.Similar modes of mode switching occur in device emulation and completion message delivery, limiting virtualization performance. At this time, the cost of mode switching can be divided into three categories. First, mode switching uses processor resources to accomplish this. The resulting costs are called direct costs. The second is the indirect cost incurred because the processor executes code that uses different contexts before and after the mode switch. When switching modes, the hardware cache is dirty and a TLB flushes. This has a large impact on cache performance utilizing locality, which causes a lot of load. The third is the synchronization cost incurred by not being able to perform the part that is not directly related to the mode change.

이와 같이 모드전환에 의해 발생하는 비용은 직접 비용보다 이로 인한 간접비용 및 동기화 비용이 훨씬 더 높은 것으로 나타났다. 따라서 가상 머신의 I/O 성능을 베어메탈 성능에 가깝게 향상 시키기 위해서는 가상화 환경에서 장치가상화 과정의 모드 전환 횟수를 줄여야 한다.As such, the costs incurred by mode switching are much higher indirect and synchronization costs than direct costs. Therefore, in order to improve I / O performance of virtual machines to bare metal performance, it is necessary to reduce the number of mode switching in the device virtualization process in the virtualization environment.

이와 관련하여 한국 공개특허 제10-2011-0041087호(발명의 명칭: 서버 가상화 장치)에는 컴퓨터의 CPU에 의해 지원되는 가상화 모듈을 통해 호스트-게스트 전환을 수행하며, 게스트 머신의 제어 자료를 갖는 제어 하이퍼바이저 모듈을 포함하는 서버 가상화 장치를 개시하고 있다. In this regard, Korean Patent Laid-Open Publication No. 10-2011-0041087 (name of the invention: server virtualization apparatus) performs a host-guest conversion through a virtualization module supported by a CPU of a computer, and controls the control data of a guest machine. A server virtualization apparatus including a hypervisor module is disclosed.

또한 일본 공개특허 제2009-288864호(발명의 명칭: 가상 머신의 입출력 에뮬레이션 기구)에는 게스트-호스트 디바이스의 동작에 따른 액세스에 필요한 시간을 단축하기 위한 방법으로 폴링 기법을 사용하여, I/O 명령 요청을 에뮬레이션에게 전달하는 과정이 개시되어 있다.
In addition, Japanese Patent Laid-Open No. 2009-288864 (name of the invention: an input / output emulation mechanism of a virtual machine) uses an polling technique as a method for shortening the time required for access according to the operation of a guest-host device, and using an I / O instruction. The process of passing a request to the emulation is disclosed.

본 발명은 전술한 종래 기술의 문제점을 해결하기 위한 것으로서, 본 발명의 일부 실시예는 I/O 요청 시 발생하는 모드전환, I/O 에뮬레이션 과정의 모드전환, 인터럽트 처리과정의 모드전환을 제거한 가상화 장치를 제공하는 것을 그 목적으로 한다.The present invention is to solve the above-mentioned problems of the prior art, some embodiments of the present invention is a virtualization eliminating the mode switching occurs when the I / O request, mode switching of the I / O emulation process, mode switching of the interrupt processing process It is an object to provide a device.

상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 발명의 제 1 측면에 따른 가상화 장치는 게스트 커널과 하나 이상의 게스트 유저 프로세스를 포함하며 하나 이상의 물리 장치의 입출력을 위한 입출력 요청을 공유 큐에 삽입하는 가상 머신 및 상기 가상 머신을 구동시키는 하이퍼바이저 모듈과 상기 물리장치를 위한 하나 이상의 장치 드라이버를 포함하는 호스트 커널을 포함하되, 상기 게스트 커널은 상기 하이퍼바이저 모듈과 상호작용하기 위한 하나 이상의 장치 드라이버 및 프로세서간 인터럽트 핸들러를 포함하고, 상기 하이퍼바이저 모듈은 상기 공유 큐에 삽입된 입출력 요청이 있는지 여부를 확인하고, 상기 입출력 요청을 장치 에뮬레이션 쓰레드로 전달하는 폴링 쓰레드 및 상기 입출력 요청을 처리하고, 상기 프로세서간 인터럽트 핸들러를 통해 CPU에 완료 메시지를 전달하는 장치 에뮬레이션 쓰레드를 포함한다. As a technical means for achieving the above-described technical problem, the virtualization apparatus according to the first aspect of the present invention includes a guest kernel and one or more guest user processes and inserting input and output requests for input and output of one or more physical devices to the shared queue A host kernel including a virtual machine and a hypervisor module for driving the virtual machine and one or more device drivers for the physical device, wherein the guest kernel includes one or more device drivers and a processor for interacting with the hypervisor module. And an interrupt handler, wherein the hypervisor module checks whether there is an I / O request inserted in the shared queue, processes a polling thread that passes the I / O request to a device emulation thread, and processes the I / O request. Interrupt Through the handler and a device emulation thread passing a completion message to the CPU.

또한, 본 발명의 제 2 측면에 따른 가상화 장치에서의 가상화 방법은 가상 머신이 물리 장치의 입출력을 위해 입출력 요청을 공유 큐에 삽입하는 단계, 기 공유 큐에 삽입된 상기 입출력 요청을 하이퍼바이저 모듈에 포함된 폴링 쓰레드가 확인하는 단계, 상기 입출력 요청이 상기 공유 큐에 있는 경우 상기 폴링 쓰레드가 상기 입출력 요청을 상기 하이퍼바이저 모듈에 포함된 장치 에뮬레이션 쓰레드로 전달하는 단계, 상기 장치 에뮬레이션 쓰레드가 직접 상기 입출력 요청을 처리하는 단계 및 상기 장치 에뮬레이션 쓰레드가 상기 입출력 요청을 처리한 후, 상기 가상 머신 내의 게스트 커널에 포함된 프로세서간 인터럽트 핸들러를 통해 CPU로 완료 메세지를 보내는 단계를 포함한다.In addition, the virtualization method in the virtualization apparatus according to the second aspect of the present invention comprises the steps of the virtual machine to insert the input / output request to the shared queue for the input and output of the physical device, the input and output request inserted in the shared queue to the hypervisor module Checking by an included polling thread; if the input / output request is in the shared queue, the polling thread forwards the input / output request to a device emulation thread included in the hypervisor module; and directly by the device emulation thread Processing the request and after the device emulation thread processes the input / output request, sending a completion message to the CPU through an interprocessor interrupt handler included in a guest kernel in the virtual machine.

전술한 본 발명의 과제 해결 수단의 어느 실시예에 의하면, 모드전환에 의해 발생하는 비용을 줄여 베어메탈에 근접한 성능을 낼 수 있다. 즉, I/O 요청 시에 발생하는 모드전환은 전환 없는 I/O 요청 기법으로 제거하고, I/O 에뮬레이션 과정의 모드전환은 하이퍼바이저 내부 장치 에뮬레이션 기법으로 제거하며, 인터럽트 처리과정의 모드전환은 전환 없는 I/O 완료 처리 기법을 통해 제거할 수 있다. 이 세가지 기법을 통해 멀티코어 아키텍처에서 모드전환을 제거함으로써 장치 가상화로 인한 부하를 줄일 수 있다.
According to one embodiment of the above-described problem solving means of the present invention, it is possible to reduce the cost incurred by the mode switching to achieve the performance close to the bare metal. In other words, the mode change that occurs during I / O request is eliminated by the I / O request technique without switching, and the mode change of the I / O emulation process is removed by the internal device emulation technique of the hypervisor, and the mode change in the interrupt processing is Elimination can be achieved through a switchless I / O completion processing technique. These three techniques reduce the burden of device virtualization by eliminating mode switching in multicore architectures.

도 1은 본 발명의 일 실시예에 따른 가상화 장치를 도시한 도면이다.
도2는 본 발명의 일 실시예에 따른 가상화 장치에서의 가상화 방법을 도시한 도면이다.
도3은 본 발명의 일 실시예에 따른 가상화 장치가 인터럽트를 처리하는 순서를 도시한 도면이다.
1 is a diagram illustrating a virtualization apparatus according to an embodiment of the present invention.
2 is a diagram illustrating a virtualization method in a virtualization apparatus according to an embodiment of the present invention.
3 is a diagram illustrating a procedure of processing an interrupt by a virtualization apparatus according to an exemplary embodiment of the present invention.

아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings, which will be readily apparent to those skilled in the art. The present invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. In order to clearly illustrate the present invention, parts not related to the description are omitted, and similar parts are denoted by like reference characters throughout the specification.

명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.Throughout the specification, when a part is referred to as being "connected" to another part, it includes not only "directly connected" but also "electrically connected" with another part in between . Also, when an element is referred to as "comprising ", it means that it can include other elements as well, without departing from the other elements unless specifically stated otherwise.

도 1은 본 발명의 일 실시예에 따른 가상화 장치를 도시한 도면이다.1 is a diagram illustrating a virtualization apparatus according to an embodiment of the present invention.

본 발명에 따른 가상화 장치(100)는 하이퍼바이저 모듈(112) 및 하나 이상의 장치 드라이버(114)를 포함하는 호스트 커널(110)과 게스트 커널(122) 및 하나 이상의 게스트 유저 프로세스(124)를 포함하는 가상 머신(120)을 포함한다. 이때, 하이퍼바이저 모듈(112)은 폴링 쓰레드(116) 및 장치 에뮬레이션 쓰레드(115)를 포함한다. 또한 게스트 커널(122)은 프로세서간 인터럽트 핸들러(126) 및 하나 이상의 장치 드라이버(125)를 포함한다.The virtualization apparatus 100 according to the present invention includes a host kernel 110 including a hypervisor module 112 and one or more device drivers 114 and a guest kernel 122 and one or more guest user processes 124. Virtual machine 120. At this time, the hypervisor module 112 includes a polling thread 116 and a device emulation thread 115. Guest kernel 122 also includes an interprocessor interrupt handler 126 and one or more device drivers 125.

참고로, 본 발명의 실시예에 따른 도 1에 도시된 구성 요소들은 소프트웨어 또는 FPGA(Field Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit)와 같은 하드웨어 구성 요소를 의미하며, 소정의 역할들을 수행한다.1 refers to a hardware component such as software or an FPGA (Field Programmable Gate Array) or an ASIC (Application Specific Integrated Circuit), and performs predetermined roles .

그렇지만 '구성 요소들'은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니며, 각 구성 요소는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다.However, 'components' are not meant to be limited to software or hardware, and each component may be configured to reside on an addressable storage medium and configured to play one or more processors.

따라서, 일 예로서 구성 요소는 소프트웨어 구성 요소들, 객체지향 소프트웨어 구성 요소들, 클래스 구성 요소들 및 태스크 구성 요소들과 같은 구성 요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다.Thus, by way of example, an element may comprise components such as software components, object-oriented software components, class components and task components, processes, functions, attributes, procedures, Routines, segments of program code, drivers, firmware, microcode, circuitry, data, databases, data structures, tables, arrays, and variables.

구성 요소들과 해당 구성 요소들 안에서 제공되는 기능은 더 작은 수의 구성 요소들로 결합되거나 추가적인 구성 요소들로 더 분리될 수 있다.The components and functions provided within those components may be combined into a smaller number of components or further separated into additional components.

하이퍼바이저 모듈(112)은 가상 머신(120)을 구동시키는 역할을 수행한다. 구체적으로, 하이퍼바이저 모듈(112)과 상호작용하기 위한 장치 드라이버(125)는 가상 머신(120) 의 게스트 커널(122) 내에 포함되어 있다. 가상 머신(120)에서 물리 장치(130)의 입출력을 위해 장치 드라이버(125)를 통해 입출력 요청을 공유 큐(미도시됨)에 삽입하면, 하이퍼바이저 모듈(112)은 폴링 쓰레드(116)를 통해 입출력 요청이 있는지 확인한 후, 이를 처리하기 위해 입출력 요청을 장치 에뮬레이션 쓰레드(115)로 전달한다. 여기서, 공유 큐란 하이퍼바이저 모듈(112)에 위치하여 하이퍼바이저 모듈(112)과 가상머신(120)간의 추가적인 복제 없이 데이터를 전달하는 역할을 한다. The hypervisor module 112 serves to drive the virtual machine 120. In particular, the device driver 125 for interacting with the hypervisor module 112 is contained within the guest kernel 122 of the virtual machine 120. When the virtual machine 120 inserts an input / output request into the shared queue (not shown) through the device driver 125 for input and output of the physical device 130, the hypervisor module 112 through the polling thread 116. After checking whether there is an I / O request, the I / O request is forwarded to the device emulation thread 115 to process it. Here, the shared queue is located in the hypervisor module 112 and serves to transfer data without additional replication between the hypervisor module 112 and the virtual machine 120.

즉, 본 발명의 일 실시예에 따른 가상화 장치(100)는 입출력 요청 시 반가상화 기법을 사용한 장치 드라이버(125)를 사용하여 공유 큐를 통해 하이퍼바이저 모듈(112)과 상호작용하게 된다. 이를 전환 없는 입출력 요청 기법이라 한다. That is, the virtualization apparatus 100 according to an embodiment of the present invention interacts with the hypervisor module 112 through a shared queue using the device driver 125 using a paravirtualization technique when an input / output request is made. This is called a switchless I / O request technique.

한편, 게스트 운영체제에서 입출력 요청은 가상 머신이 직접 처리할 수 있는 명령이 아니므로, 종래에는 많은 비용이 발생하는 하이퍼바이저 모듈로 모드전환을 통해 처리해야 했다. 다만, 본 발명의 일 실시예에 따른 가상화 장치(100)는 입출력 요청 시 모드전환이 발생하지 않으므로 효과적으로 공유 큐로부터 해당 요청을 꺼내어 다음 처리과정으로 전달할 수 있다. On the other hand, since the I / O request in the guest operating system is not a command that can be directly processed by the virtual machine, it has to be handled through a mode switch to a hypervisor module which is expensive in the past. However, since the virtual device 100 according to an embodiment of the present invention does not generate a mode switch when an input / output request occurs, the virtual device 100 may effectively remove the request from the shared queue and transfer the request to the next process.

하이퍼바이저 모듈(112)에 포함된 장치 에뮬레이션 쓰레드(115)는 폴링 쓰레드(116)가 전달한 입출력 요청을 처리한다. 즉, 장치 에뮬레이션 쓰레드(115)는 장치 드라이버(114)를 통해 해당 물리 장치(130)를 에뮬레이션 한다. 이때, 장치 에뮬레이션 쓰레드(115)는 하이퍼바이저 모듈(112)과 같은 컨텍스트를 사용하므로 추가적인 모드전환을 필요로 하지 않는다. 이를 하이퍼바이저 내부 장치 에뮬레이션 기법이라 한다.The device emulation thread 115 included in the hypervisor module 112 processes the input / output request transmitted by the polling thread 116. That is, the device emulation thread 115 emulates the corresponding physical device 130 through the device driver 114. In this case, since the device emulation thread 115 uses the same context as the hypervisor module 112, no additional mode switching is required. This is called the hypervisor internal device emulation technique.

한편, 종래의 가상화 장치에서는 입출력 요청을 다소 복잡한 과정을 통해 처리하였다. 예를 들어, Xen에서는 독립적인 장치 도메인을 통해 처리하였으며, QEMU는 유저 프로세스를 통해 입출력 요청을 에뮬레이션 하였다. 이와 같은 처리 방법은 도메인간 혹은 유저-커널 간의 추가적인 스위칭이 필요하므로 장치 에뮬레이션 비용을 증가시키게 된다. 반면, 본 발명의 일 실시예에 따른 가상화 장치(100)는 장치 응답속도를 감소시키기 위해 다른 도메인이나 유저 프로세스의 도움 없이 하이퍼바이저 모듈(112) 내에서 직접 입출력 요청을 처리할 수 있다.Meanwhile, in the conventional virtualization apparatus, input / output requests are processed through a rather complicated process. For example, Xen handled it through an independent device domain, and QEMU emulated I / O requests through a user process. This approach increases the device emulation cost because additional switching between domains or between user-kernels is required. On the other hand, the virtualization apparatus 100 according to an embodiment of the present invention may process the input / output request directly in the hypervisor module 112 without the help of other domains or user processes in order to reduce the device response speed.

본 발명의 일 실시예에 따른 가상화 장치(100)를 적용하여 순차 읽기 및 임의 읽기 속도를 측정한 실험 결과는 다음과 같다.Experimental results of measuring the sequential read and random read rates by applying the virtualization apparatus 100 according to an embodiment of the present invention are as follows.

전환 없는 입출력 요청 기법을 통해 순차 읽기와 임의 읽기 속도를 각각 4%와 13%를 향상시켰으며, 하이퍼바이저 내부 장치 에뮬레이션 기법만을 통해 순차 읽기와 임의 읽기 속도를 각각 2%와 11% 향상시켰다. 즉, 가상화 장치(100)를 통해 위 기법을 적용하지 않았을 경우에 비해 순차 읽기 속도를 6%, 임의 읽기 속도를 24% 향상시킴으로써 베어메탈 성능에 거의 근접한 성능을 가질 수 있다.The sequential read and random read speeds are improved by 4% and 13%, respectively, using the switchless I / O request method, and the sequential and random read speeds are increased by 2% and 11%, respectively, using only the hypervisor internal device emulation method. That is, compared to the case where the above technique is not applied through the virtualization apparatus 100, the sequential read speed may be improved by 6% and the random read speed by 24%, thereby having a performance close to that of bare metal performance.

상술한 바와 같이 장치 에뮬레이션 쓰레드(115)가 입출력 요청을 처리한 후, 장치 에뮬레이션 쓰레드(115)는 가상 머신(120) 내의 게스트 커널(122)에 포함된 프로세서간 인터럽트 핸들러(126)를 통해 CPU로 완료 메세지를 보낸다. After the device emulation thread 115 processes the input / output request as described above, the device emulation thread 115 passes to the CPU through the interprocessor interrupt handler 126 included in the guest kernel 122 in the virtual machine 120. Send a completion message.

이때, 종래의 가상화 장치에 사용되는 프로세서간 인터럽트는 두 번의 모드전환이 발생된다. 첫 번째 모드전환은 가상 머신에 인터럽트를 전달할 때 발생된다. 인터럽트 처리를 위해 가상 머신에 전달된 인터럽트는 모드전환을 통해 다시 하이퍼바이저 모듈로 전달된다. 하이퍼바이저 모듈은 가상 머신에게 전달되어야 하는 인터럽트인지 여부를 판단한 후 다시 가상 머신에게 인터럽트를 전달하여 처리할 수 있도록 한다. 두 번째 모드전환은 인터럽트 처리가 끝난 후 이를 LAPIC(Local Advanced Programmable Interrupt Controller)에 알릴 때 발생된다. 게스트 운영체제에서 EOI(End-Of-Interrupt) 레지스터에 접근하는 것은 입출력 요청과 마찬가지로 가상 머신에서 처리할 수 없는 명령이므로 모드전환이 필요하게 된다.At this time, the inter-processor interrupt used in the conventional virtualization apparatus generates two mode switching. The first mode switch occurs when an interrupt is sent to the virtual machine. Interrupts sent to the virtual machine for interrupt handling are passed back to the hypervisor module through mode switching. The hypervisor module determines whether the interrupt should be delivered to the virtual machine, and then passes the interrupt back to the virtual machine for processing. The second mode switch occurs when the LAPIC (Local Advanced Programmable Interrupt Controller) is notified after the interrupt has been processed. Accessing the end-of-interrupt (EOI) registers from the guest operating system is a command that cannot be processed by the virtual machine like I / O requests, so mode switching is required.

본 발명의 일 실시예에 따른 가상화 장치(100)는 하기와 같은 방법을 사용하여 인터럽트 처리과정의 모드전환을 제거한다. The virtualization apparatus 100 according to an embodiment of the present invention removes the mode switching of the interrupt process using the following method.

첫 번째 모드전환은 게스트 운영체제의 인터럽트 디스크립터 테이블(IDT)을 수정하여 제거할 수 있다. 즉, 가상 머신(120)이 가상 머신(120)에 포함된 게스트 운영체제의 인터럽트 디스크립터 테이블을 입출력 요청에 따른 입출력을 완료하였다는 인터럽트를 직접 받을 수 있도록 수정함으로써 모드전환을 제거할 수 있다.The first mode switch can be removed by modifying the interrupt descriptor table (IDT) of the guest operating system. That is, the mode switch can be removed by modifying the interrupt descriptor table of the guest operating system included in the virtual machine 120 to directly receive an interrupt indicating that the I / O is completed according to the I / O request.

두 번째 모드전환은 x2APIC을 이용하여 제거할 수 있다. x2APIC은 기존의 포트 입출력 또는 메모리 입출력 방법 대신 머신 특수 레지스터(MSR)을 사용하여 가상 머신(120)이 하이퍼바이저 모듈(112)을 거치지 않고 CPU에 인터럽트 처리 종료 메시지를 전달할 수 있는 새로운 버전의 LAPIC이다. X2APIC을 통해 EOI를 모드전환 없이 인터럽트 처리 종료 메시지를 전달할 수 있다. 상기 두 번의 모드전환을 제거하는 방법을 전환 없는 입출력 완료 처리 기법이라 한다.The second mode switch can be removed using x2APIC. x2APIC is a new version of LAPIC that allows the virtual machine 120 to send an interrupt handling termination message to the CPU without going through the hypervisor module 112 using machine special registers (MSRs) instead of traditional port I / O or memory I / O methods. . Through X2APIC, EOI can be sent an interrupt processing termination message without changing mode. The method of eliminating the two mode switching is referred to as an input / output completion processing technique without switching.

이와 같은 전환 없는 입출력 완료 처리 기법은 개별적으로 적용할 수 있지만, 이미 상술한 2가지 기법(전환 없는 입출력 요청 기법 및 하이퍼바이저 내부 장치 에뮬레이션 기법)과 동시에 적용할 수 있다. 본 발명에서 전환 없는 입출력 완료 처리 기법을 적용하면, 독립적으로 혹은 위 2가지 기법과 상호 작용하여, 순차 읽기 속도와 임의 읽기 속도를 더욱 향상시킴으로써 베어메탈과 동등한 성능을 얻을 수 있다. Although the above-described switching-free input / output completion processing technique can be applied separately, it can be applied simultaneously with the above-described two techniques (switch-less input / output request technique and hypervisor internal device emulation technique). When the input / output completion processing technique without switching is applied in the present invention, the performance equivalent to bare metal can be obtained by further improving the sequential read speed and the random read speed independently or by interacting with the above two techniques.

도2는 본 발명의 일 실시예에 따른 가상화 장치에서의 가상화 방법을 도시한 도면이다.2 is a diagram illustrating a virtualization method in a virtualization apparatus according to an embodiment of the present invention.

먼저, 가상 머신(120)이 물리장치(130)의 입출력을 위한 입출력 요청을 하면(S210), 가상 머신(120) 내 포함된 장치 드라이버(125)는 입출력 요청을 공유 큐에 삽입시킨다(S220). 즉, 입출력 요청은 공유 큐에 입출력 요청을 삽입(enqueu)하는 것과 같다. First, when the virtual machine 120 makes an input / output request for input / output of the physical device 130 (S210), the device driver 125 included in the virtual machine 120 inserts an input / output request into the shared queue (S220). . In other words, an I / O request is like enqueuing an I / O request to a shared queue.

다음으로, 하이퍼바이저 모듈(112) 내에 포함된 폴링 쓰레드(116)가 입출력 요청이 공유 큐에 있는지 여부를 확인한 후, 입출력 요청을 장치 에뮬레이션 쓰레드(115)로 전달한다(S230). 장치 에뮬레이션 쓰레드(115)는 폴링 쓰레드(116)로부터 전달된 입출력 요청을 직접 처리한다(S240).Next, the polling thread 116 included in the hypervisor module 112 checks whether the input / output request is in the shared queue, and then transmits the input / output request to the device emulation thread 115 (S230). The device emulation thread 115 directly processes the input / output request transmitted from the polling thread 116 (S240).

다음으로, 장치 에뮬레이션 쓰레드(115)가 인터럽트 프로세서간 핸들러(IPI)(126)를 통해 게스트 운영체제가 실행중인 CPU에 완료 메세지를 전달한다(S250).Next, the device emulation thread 115 transmits a completion message to the CPU running the guest operating system through the interrupt interprocessor handler (IPI) 126 (S250).

도3은 본 발명의 일 실시예에 따른 가상화 장치가 인터럽트를 처리하는 순서를 도시한 도면이다.3 is a diagram illustrating a procedure of processing an interrupt by a virtualization apparatus according to an exemplary embodiment of the present invention.

물리 장치(130)는 가상 머신(120)의 입출력 요청에 따른 입출력을 완료하면 인터럽트를 발생시킨다(S310).The physical device 130 generates an interrupt when the input / output according to the input / output request of the virtual machine 120 is completed (S310).

다음으로, 가상 머신이 가상 머신(120)의 인터럽트 디스크립터 테이블을 수정하여 인터럽트를 처리한다(S320). 종래의 가상 머신은 인터럽트를 처리하지 못하므로 추가적인 모드전환이 발생된다. 반면, 본 발명의 일 실시예에 따른 가상화 장치(100)는 가상 머신이 인터럽트 디스크립터 테이블을 입출력 요청에 따른 입출력을 완료하였다는 인터럽트를 직접 받을 수 있도록 수정함으로써 인터럽트를 직접 받아 처리하므로 모드전환을 제거할 수 있다.Next, the virtual machine modifies the interrupt descriptor table of the virtual machine 120 to process the interrupt (S320). Conventional virtual machines do not handle interrupts, so additional mode switching occurs. On the other hand, the virtualization apparatus 100 according to an embodiment of the present invention corrects the interrupt descriptor table to directly receive an interrupt indicating that the I / O is completed according to the I / O request, thereby directly processing the interrupt and thus eliminating the mode change. can do.

다음으로, 인터럽트를 처리한 후 x2APIC을 이용해 EOI 레지스터에 가상 머신(120)이 직접 접근하여 모드전환 없이 CPU에 인터럽트 처리 종료 메시지를 전달한다(S330). 이때, x2APIC은 머신 특수 레지스터를 사용하여 하이퍼바이저 모듈(112)의 도움 없이 CPU에 인터럽트 처리 종료 메시지를 전달할 수 있다.Next, after processing the interrupt, the virtual machine 120 directly accesses the EOI register using the x2APIC to transfer an interrupt processing end message to the CPU without mode switching (S330). In this case, the x2APIC may transmit an interrupt processing end message to the CPU without the help of the hypervisor module 112 using the machine special register.

본 발명의 일 실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다. One embodiment of the present invention may also be embodied in the form of a recording medium including instructions executable by a computer, such as program modules, being executed by a computer. Computer readable media can be any available media that can be accessed by a computer and includes both volatile and nonvolatile media, removable and non-removable media. In addition, the computer-readable medium may include both computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Communication media typically includes any information delivery media, including computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave, or other transport mechanism.

본 발명의 방법 및 시스템은 특정 실시예와 관련하여 설명되었지만, 그것들의 구성 요소 또는 동작의 일부 또는 전부는 범용 하드웨어 아키텍쳐를 갖는 컴퓨터 시스템을 사용하여 구현될 수 있다. While the methods and systems of the present invention have been described in connection with specific embodiments, some or all of those elements or operations may be implemented using a computer system having a general purpose hardware architecture.

전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.The foregoing description of the present invention is intended for illustration, and it will be understood by those skilled in the art that the present invention may be easily modified in other specific forms without changing the technical spirit or essential features of the present invention. will be. It is therefore to be understood that the above-described embodiments are illustrative in all aspects and not restrictive. For example, each component described as a single entity may be distributed and implemented, and components described as being distributed may also be implemented in a combined form.

본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
The scope of the present invention is defined by the appended claims rather than the detailed description and all changes or modifications derived from the meaning and scope of the claims and their equivalents are to be construed as being included within the scope of the present invention do.

100: 가상화 장치 110: 호스트 커널
112: 하이퍼바이저 모듈 114: 장치 드라이버
115: 장치 에뮬레이션 쓰레드 116: 폴링 쓰레드
120: 가상 머신 122: 게스트 커널
124: 게스트 유저 프로세스 125: 장치 드라이버
126: 프로세서간 인터럽트 핸들러
100: virtualization device 110: host kernel
112: hypervisor module 114: device driver
115: device emulation thread 116: polling thread
120: virtual machine 122: guest kernel
124: Guest User Process 125: Device Driver
126: Interprocessor Interrupt Handler

Claims (6)

가상화 장치에 있어서,
게스트 커널과 하나 이상의 게스트 유저 프로세스를 포함하며 하나 이상의 물리 장치의 입출력을 위한 입출력 요청을 공유 큐에 삽입하는 가상 머신 및
상기 가상 머신을 구동시키는 하이퍼바이저 모듈과 상기 물리장치를 위한 하나 이상의 장치 드라이버를 포함하는 호스트 커널을 포함하되,
상기 게스트 커널은 상기 하이퍼바이저 모듈과 상호작용하기 위한 하나 이상의 장치 드라이버 및 프로세서간 인터럽트 핸들러를 포함하고,
상기 하이퍼바이저 모듈은
상기 공유 큐,
상기 공유 큐에 삽입된 입출력 요청이 있는지 여부를 확인하고, 상기 입출력 요청을 장치 에뮬레이션 쓰레드로 전달하는 폴링 쓰레드 및
상기 입출력 요청을 처리하고, 상기 프로세서간 인터럽트 핸들러를 통해 CPU에 완료 메시지를 전달하는 장치 에뮬레이션 쓰레드를 포함하는 가상화 장치.
In the virtualization device,
A virtual machine including a guest kernel and one or more guest user processes and inserting input and output requests for input and output of one or more physical devices to a shared queue;
A host kernel including a hypervisor module for driving the virtual machine and one or more device drivers for the physical device,
The guest kernel includes one or more device drivers and an interprocessor interrupt handler for interacting with the hypervisor module,
The hypervisor module
The shared queue,
A polling thread that checks whether there is an input / output request inserted in the shared queue, and passes the input / output request to a device emulation thread;
And a device emulation thread that processes the input / output request and delivers a completion message to a CPU through the interprocessor interrupt handler.
제 1 항에 있어서,
상기 가상 머신은 상기 가상 머신에 포함된 게스트 운영체제의 인터럽트 디스크립터 테이블을 상기 입출력 요청에 따른 입출력을 완료하였다는 인터럽트를 직접 받을 수 있도록 수정한 가상화 장치.
The method according to claim 1,
The virtual machine has modified the interrupt descriptor table of the guest operating system included in the virtual machine to directly receive the interrupt that completed the input and output according to the input and output request.
제 1 항에 있어서,
인터럽트 처리 후 상기 가상 머신은 상기 하이퍼바이저 모듈을 거치지 않고 머신 특수 레지스터(MSR)를 사용하여 CPU에 인터럽트 처리 종료 메시지를 전달하는 가상화 장치.
The method according to claim 1,
After the interrupt processing, the virtual machine transfers the interrupt processing end message to the CPU using a machine special register (MSR) without passing through the hypervisor module.
가상화 장치에서의 가상화 방법에 있어서,
가상 머신이 물리 장치의 입출력을 위해 입출력 요청을 하이퍼바이저 모듈에 포함된 공유 큐에 삽입하는 단계,
상기 공유 큐에 삽입된 상기 입출력 요청을 상기 하이퍼바이저 모듈에 포함된 폴링 쓰레드가 확인하는 단계,
상기 입출력 요청이 상기 공유 큐에 있는 경우 상기 폴링 쓰레드가 상기 입출력 요청을 상기 하이퍼바이저 모듈에 포함된 장치 에뮬레이션 쓰레드로 전달하는 단계,
상기 장치 에뮬레이션 쓰레드가 직접 상기 입출력 요청을 처리하는 단계 및
상기 장치 에뮬레이션 쓰레드가 상기 입출력 요청을 처리한 후, 상기 가상 머신 내의 게스트 커널에 포함된 프로세서간 인터럽트 핸들러를 통해 CPU로 완료 메세지를 보내는 단계를 포함하는 가상화 장치에서의 가상화 방법.
In the virtualization method in the virtualization device,
The virtual machine inserting an I / O request into the shared queue included in the hypervisor module for the I / O of the physical device,
Checking, by the polling thread included in the hypervisor module, the I / O request inserted into the shared queue;
If the input / output request is in the shared queue, the polling thread forwarding the input / output request to a device emulation thread included in the hypervisor module;
The device emulation thread directly processing the input / output request; and
And after the device emulation thread processes the input / output request, sending a completion message to a CPU through an interprocessor interrupt handler included in a guest kernel in the virtual machine.
제 4 항에 있어서,
상기 가상 머신은 상기 가상 머신에 포함된 게스트 운영체제의 인터럽트 디스크립터 테이블을 상기 입출력 요청에 따른 입출력을 완료하였다는 인터럽트를 직접 받을 수 있도록 수정한 가상화 장치에서의 가상화 방법.
5. The method of claim 4,
And the virtual machine modifies the interrupt descriptor table of the guest operating system included in the virtual machine to directly receive an interrupt indicating that the I / O is completed according to the I / O request.
제 4 항에 있어서,
인터럽트 처리 후 상기 가상 머신은 상기 하이퍼바이저 모듈을 거치지 않고 머신 특수 레지스터(MSR)를 사용하여 CPU에 인터럽트 처리 종료 메시지를 전달하는 가상화 장치에서의 가상화 방법.
5. The method of claim 4,
After the interrupt processing, the virtual machine transfers the interrupt processing end message to the CPU using a machine special register (MSR) without passing through the hypervisor module.
KR1020120055662A 2012-05-24 2012-05-24 Virtualiztion apparatus KR101387986B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120055662A KR101387986B1 (en) 2012-05-24 2012-05-24 Virtualiztion apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120055662A KR101387986B1 (en) 2012-05-24 2012-05-24 Virtualiztion apparatus

Publications (2)

Publication Number Publication Date
KR20130131812A KR20130131812A (en) 2013-12-04
KR101387986B1 true KR101387986B1 (en) 2014-04-22

Family

ID=49980849

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120055662A KR101387986B1 (en) 2012-05-24 2012-05-24 Virtualiztion apparatus

Country Status (1)

Country Link
KR (1) KR101387986B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190014451A (en) * 2017-08-02 2019-02-12 삼성전자주식회사 A hybrid framework of nvme-based storage system in cloud computing environment

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102301937B1 (en) * 2014-12-22 2021-09-15 삼성전자주식회사 Input and output method in virtual machine environment
CN107807843B (en) 2017-10-26 2019-05-24 北京百度网讯科技有限公司 I/O request processing method, equipment and computer-readable medium in virtual machine
KR102498319B1 (en) * 2018-06-04 2023-02-08 삼성전자주식회사 Semiconductor device
KR102240996B1 (en) * 2019-10-14 2021-04-16 성균관대학교산학협력단 Methods and apparatuses for processing input/output completion in virtualization system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060047772A (en) * 2004-06-30 2006-05-18 마이크로소프트 코포레이션 Systems and methods for initializing multiple virtual processors within a single virtual machine
KR100958303B1 (en) * 2007-12-12 2010-05-19 한국전자통신연구원 A System and A Method for Dynamic Loading and Execution of Module Devices using Inter-Core-Communication Channel in Multicore system environment
KR20110115889A (en) * 2010-04-16 2011-10-24 성균관대학교산학협력단 Partial virtual machine and device driver processing method using the same
KR101081907B1 (en) * 2010-01-05 2011-11-09 성균관대학교산학협력단 Apparatus for virtualization

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060047772A (en) * 2004-06-30 2006-05-18 마이크로소프트 코포레이션 Systems and methods for initializing multiple virtual processors within a single virtual machine
KR100958303B1 (en) * 2007-12-12 2010-05-19 한국전자통신연구원 A System and A Method for Dynamic Loading and Execution of Module Devices using Inter-Core-Communication Channel in Multicore system environment
KR101081907B1 (en) * 2010-01-05 2011-11-09 성균관대학교산학협력단 Apparatus for virtualization
KR20110115889A (en) * 2010-04-16 2011-10-24 성균관대학교산학협력단 Partial virtual machine and device driver processing method using the same

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190014451A (en) * 2017-08-02 2019-02-12 삼성전자주식회사 A hybrid framework of nvme-based storage system in cloud computing environment
KR102264513B1 (en) 2017-08-02 2021-06-14 삼성전자주식회사 A hybrid framework of nvme-based storage system in cloud computing environment

Also Published As

Publication number Publication date
KR20130131812A (en) 2013-12-04

Similar Documents

Publication Publication Date Title
US8032680B2 (en) Lazy handling of end of interrupt messages in a virtualized environment
Kivity et al. kvm: the Linux virtual machine monitor
US7209994B1 (en) Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests
US7707341B1 (en) Virtualizing an interrupt controller
US10996968B2 (en) Support for application transparent, high available GPU computing with VM checkpointing
US7478180B1 (en) Virtualizing a communications channel in which blocks of data are divided into multiple sub-blocks for conveyance
CN107273199B (en) Architecture and method for managing interrupts in a virtualized environment
EP2024826B1 (en) Launching hypervisor under running operating system
US9043562B2 (en) Virtual machine trigger
US20110153909A1 (en) Efficient Nested Virtualization
US9442754B1 (en) Deferred asynchronous actions for virtual devices
US20160048676A1 (en) Apparatus and method thereof for efficient execution of a guest in a virtualized environment
US10049064B2 (en) Transmitting inter-processor interrupt messages by privileged virtual machine functions
US9792136B2 (en) Hardware assisted inter hypervisor partition data transfers
US10346330B2 (en) Updating virtual machine memory by interrupt handler
KR101387986B1 (en) Virtualiztion apparatus
WO2005098616A2 (en) Providing support for single stepping a virtual machine in a virtual machine environment
US11301283B1 (en) Virtualization extension modules
KR20160033517A (en) Hybrid virtualization scheme for interrupt controller
US20160253196A1 (en) Optimized extended context management for virtual machines
CN104618158A (en) Embedded network virtualization environment VirtIO (virtual input and output) network virtualization working method
KR20230084300A (en) Chip system, virtual interrupt processing method and corresponding device
US20170177377A1 (en) Starting application processors of a virtual machine
TW201027349A (en) Input-output virtualization technique
US20120072638A1 (en) Single step processing of memory mapped accesses in a hypervisor

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
FPAY Annual fee payment

Payment date: 20170329

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180406

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee