KR101081907B1 - 가상화 장치 - Google Patents

가상화 장치 Download PDF

Info

Publication number
KR101081907B1
KR101081907B1 KR1020100000376A KR20100000376A KR101081907B1 KR 101081907 B1 KR101081907 B1 KR 101081907B1 KR 1020100000376 A KR1020100000376 A KR 1020100000376A KR 20100000376 A KR20100000376 A KR 20100000376A KR 101081907 B1 KR101081907 B1 KR 101081907B1
Authority
KR
South Korea
Prior art keywords
guest
kernel
host
virtualization
user process
Prior art date
Application number
KR1020100000376A
Other languages
English (en)
Other versions
KR20110080240A (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 KR1020100000376A priority Critical patent/KR101081907B1/ko
Priority to US12/707,808 priority patent/US20110167422A1/en
Publication of KR20110080240A publication Critical patent/KR20110080240A/ko
Application granted granted Critical
Publication of KR101081907B1 publication Critical patent/KR101081907B1/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

가상화 장치는, 게스트 커널 및 게스트 유저 프로세스로 구성되는 하나 이상의 게스트 머신, 호스트 커널 상에 설치되어 게스트 머신의 가상화 장치에 대한 요청을 처리하는 하이퍼바이저 모듈 및 게스트 머신이 호스트 유저 프로세스로 동작하도록 지원하고, 게스트 머신의 스위칭 및 인터럽트를 처리하는 가상화 지원 프로세서를 포함하되, 게스트 커널 및 게스트 유저 프로세서의 주소 공간이 분리되도록 설계된다.

Description

가상화 장치{APPARATUS FOR VIRTUALIZATION}
본 발명은 가상화 장치에 관한 것으로, 더욱 상세하게는 하이퍼바이저(Hypervisor) 기술을 이용하여 게스트 머신을 가상화하는 가상화 장치에 관한 것이다.
가상화 기술(Virtualization Technology)은 한 대의 메인 프레임급 서버를 여러 대의 머신으로 가상적으로 나눠 쓰기 위해 도입된 개념이다. 이는, 서버들의 실제 사용률이 10~20% 내외인 점에 착안하여 여러 서버들을 하나의 물리적인 서버 위에 존재하는 가상 머신에서 동작하게 함으로써, 서버의 실제 사용률을 높이고, 보안성을 유지하기 위한 기술이다.
이러한, 가상화 기술은 호스트 운영체제(host OS) 상에 가상화 계층(Virtualization Layer)을 형성하거나 직접 가상화 계층을 제공하는 가상 머신 모니터(Virtual Machine Monitor; VMM) 혹은 하이퍼바이저를 두고, 이 가상화 계층 상에 복수의 논리적인 가상 머신(Virtual Machine: VM)이 생성되도록 한다. 복수의 가상 머신에는 각각 게스트 운영체제(guest OS)가 설치될 수 있으며, 각각의 게스트 운영체제 상에는 해당 게스트 운영체제에서 지원되는 프로그램이 설치될 수 있다.
이러한 가상화 기술에는 게스트 운영체제의 수정이 필요 없는 전가상화(full-virtualization)와 기존의 게스트 운영체제에 대비하여 성능 저하의 최소화 및 보안성 강화 등의 목적으로 게스트 운영체제의 수정이 요구되는 반가상화(para-virtualization)가 있다.
먼저, 전가상화 기술은 게스트 운영체제를 수정 하지 않고 가상 머신 에서 실행한다. 이를 위해 하드웨어 전체를 소프트웨어로 구현하는 에뮬레이션이나, 특수 권한이 필요한 명령어들을 일반 명령어로 대체하는 코드 변환 기술을 사용한다. 에뮬레이션의 경우, 일반 명령어와 특수 권한 명령어 모두를 소프트웨어로 구현하기 때문에 속도가 느리지만, 다른 프로세서나 하드웨어 플랫폼도 사용이 가능하기 때문에 임베디드 개발 환경을 구성하는데 많이 쓰이고 있다.
다음으로, 반가상화 기술은 운영체제의 소스 코드를 수정하여 하나의 하드웨어에서 여러 개의 운영체제가 실행될 수 있도록 한다. 이를 통해 운영체제 상에서 동작하는 일반 프로세스가 시스템 자원에 접근할 때 시스템 콜을 이용하는 것과 같은 형태를 갖도록 한다. 특히, 실행 모드 전환, 인터럽트/예외 처리 등 특수 권한이 필요한 명령어들을 사용하는 운영체제의 소스 코드를 직접 수정하고, 시스템 콜과 비슷한 형태의 하이퍼 콜로 대체함으로써 게스트 운영체제에서 특수 권한이 필요한 명령어들을 모두 제거한다. 이를 통해 게스트 운영체제는 일반 명령어만으로 구성될 수 있으며, 에뮬레이팅이나 코드 변환 기술을 기초로 수행되는 전가상화 기술과는 달리, 명령어가 프로세서에서 직접 수행되므로 성능 저하가 적다.
그런데, 이러한 가상화 기술을 적용한 종래의 가상화 장치에서는 프로세스와 운영체제가 동일 주소 공간에 존재하여, 호스트 운영체제(커널) 및 호스트 프로세스(유저 프로세스) 간의 메모리 보호와, 호스트 유저 프로세스 간의 메모리 보호만을 고려하여 설계되었다. 따라서, 기존의 설계로는 가상화 장치 내의 호스트와 게스트, 게스트 커널과 게스트 유저 프로세스, 게스트 머신 간의 메모리 보호가 어렵다는 단점이 있었다.
또한, 종래의 가상화 장치에서는 게스트 머신들의 가상화 처리를 수행하는 특정 도메인 또는 프로세서로써의 게스트 머신이 따로 존재하며, 게스트 프로세스(유저 프로세스)의 장치에 대한 요청 또는 인터럽트 등을 게스트 운영체제(커널), 하이퍼바이저, 호스트를 거쳐 처리하게 되는 복잡한 처리 절차에 의해 가상화 처리의 속도가 늦다는 단점이 있었다.
본 발명의 실시예는 게스트 머신이 호스트의 유저 모드에서 작동하도록 구현하여 프로세서, 메모리 및 장치 가상화의 처리 구조를 단순화할 수 있는 가상화 장치를 제공한다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 발명의 일 측면은 게스트 커널 및 게스트 유저 프로세스로 구성되는 하나 이상의 게스트 머신, 호스트 커널 상에 설치되어 상기 게스트 머신의 가상화 장치에 대한 요청을 처리하는 하이퍼바이저 모듈 및 상기 게스트 머신이 호스트 유저 프로세스로 동작하도록 지원하고, 게스트 머신의 스위칭 및 인터럽트를 처리하는 가상화 지원 프로세서를 포함하되, 상기 게스트 커널 및 게스트 유저 프로세서의 주소 공간이 분리되도록 설계되는 가상화 장치를 제공한다.
전술한 본 발명의 과제 해결 수단에 의하면, 게스트 머신이 호스트 유저 프로세스로 작동하도록 구현하여 호스트-게스트 전환, 인터럽트 처리, 메모리 페이징 및 장치 관리의 절차가 감소되어 가상화 처리 속도가 향상되는 효과가 있다.
또한, 본 발명의 과제 해결 수단에 의하면, 게스트 커널 및 게스트 유저 프로세스 간의 주소 공간을 분리하여 호스트와 게스트, 게스트 커널 및 게스트 유저 프로세스, 게스트 유저 프로세스 간에 효과적인 메모리 보호가 가능하다.
도 1은 본 발명의 실시예에 따른 가상화 장치를 도시한 도면이다.
도 2는 본 발명의 실시예에 따른 가상화 장치의 메모리 보호 방식을 설명하기 위한 구조도이다.
도 3은 본 발명의 실시예에 따른 가상화 장치의 호스트-게스트 전환 과정을 설명하기 위한 도면이다.
도 4는 본 발명의 실시예에 따른 가상화 장치의 인터럽트 전달 과정을 설명하기 위한 도면이다.
도 5는 본 발명의 실시예에 따른 가상화 장치의 섀도우 페이징 방식을 설명하기 위한 도면이다.
도 6은 본 발명의 실시예에 따른 가상화 장치의 가상 드라이버를 이용한 장치 가상화 방식을 설명하기 위한 도면이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 1은 본 발명의 실시예에 따른 가상화 장치를 도시한 도면이다.
그리고, 도 2는 본 발명의 실시예에 따른 가상화 장치(100)의 메모리 보호 방식을 설명하기 위한 구조도이다.
도 1에서와 같이, 본 발명의 실시예에 따른 가상화 장치(100)는 게스트 머신의 가상화를 위한 가상화 지원 프로세서(115)가 구현되고 가상 장치 관리 및 제어 동작을 수행하는 가상 드라이버(114)를 포함하는 적어도 하나의 호스트 유저 프로세스(111, 112, 113), 호스트 유저 프로세스로서 동작하는 적어도 하나의 게스트 머신의 반가상화를 지원하는 하이퍼바이저 모듈(121)을 포함하는 호스트 커널(120) 및 물리 장치(130)을 포함한다.
참고로, 본 발명의 실시예에 따른 도 1에 도시된 구성 요소들은 소프트웨어 또는 FPGA(Field Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit)와 같은 하드웨어 구성 요소를 의미하며, 소정의 역할들을 수행한다. 그렇지만 '구성 요소들'은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니며, 각 구성 요소는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다.
따라서, 일 예로서 구성 요소는 소프트웨어 구성 요소들, 객체지향 소프트웨어 구성 요소들, 클래스 구성 요소들 및 태스크 구성 요소들과 같은 구성 요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다.
구성 요소들과 해당 구성 요소들 안에서 제공되는 기능은 더 작은 수의 구성 요소들로 결합되거나 추가적인 구성 요소들로 더 분리될 수 있다.
한편, 본 발명이 실시예에 따른 가상화 장치(100)에서 게스트 머신은 가상 아키텍처인 가상화 지원 프로세서(115) 상에서 동작하도록 구현되어 호스트 유저 프로세서로서 동작한다.
도 1에서는 원래의 호스트 유저인 호스트 유저 프로세스(111)와 각각 제 1 게스트 머신 및 제 2 게스트 머신이 설치된 호스트 유저 프로세스(112, 113)가 호스트 커널(120)의 상위 층에 구현된 것을 예로서 나타내었다.
이때, 각 게스트 머신은 게스트 유저 프로세스 및 게스트 커널로 구성된다. 예를 들어, 도 1에서 나타낸 바와 같이 제 1 게스트 머신은 제 1 게스트 유저 프로세스 및 제 1 게스트 커널을 포함하며, 제 2 게스트 머신은 제1 게스트 유저 프로세스 및 제 2 게스트 커널을 포함한다.
호스트 커널(120)은 게스트 머신의 가상화를 지원하기 위해 하이퍼콜 기능, 섀도우 페이징 기능 및 인터럽트 전달 기능을 수행하는 하이퍼바이저 모듈(121)을 포함한다.
물리 장치(130)는 CPU, 메모리, 디스크, 네트워크 인터페이스 등을 포함한다.
특히, 본 발명의 실시예에 따른 가상화 장치(100)에서는 게스트 머신의 게스트 커널과 게스트 유저 프로세스 간 주소 공간이 분리되는 구조로 설계되어 메모리 보호가 가능하다.
구체적으로, 도 2에서와 같이 게스트 커널과 게스트 유저 프로세스는 호스트 유저 모드에서 동작하기 때문에 호스트 커널을 임의로 접근할 수 없다. 또한, 게스트 커널과 게스트 유저 프로세스는 메모리맵 상에 독립적으로 존재하므로 서로 직접적인 접근이 불가능하다. 이처럼, 게스트 커널과 게스트 유저 프로세스 간 주소 공간이 분리됨으로써 가상화 장치(100) 내의 호스트와 게스트, 게스트 커널과 게스트 유저 프로세스, 게스트 머신 간의 메모리 보호가 가능하다.
또한, 본 발명의 실시예에 따른 가상화 장치(100)에서는 모든 접근에 대한 처리가 호스트 커널의 주소 변환 기능을 이용하여 처리된다. 따라서, 본 발명에 따르면 기존의 Intel의 x86 프로세서 등에서 네 개의 특권 레벨을 사용하여 접근을 처리하던 방식과는 달리, 호스트 커널 모드 및 호스트 유저 모드로 구분되는 두 개의 런 레벨만으로도 효율적인 메모리 보호가 가능하다는 장점이 있다.
한편, 본 발명의 실시예에 따른 가상화 장치(100)에서는 프로세서 가상화, 메모리 가상화 및 장치 가상화를 수행한다.
이하, 도 3 내지 도 6을 참조하여 본 발명의 실시예에 따른 가상화 장치의 가상화 방식에 대해서 설명하도록 한다.
먼저, 도 3 및 도 4를 참조하여 가상화 장치(100)의 프로세서 가상화 방식에 대해서 설명하도록 한다.
도 3은 본 발명의 실시예에 따른 가상화 장치의 호스트-게스트 전환 과정을 설명하기 위한 도면이다.
그리고, 도 4는 본 발명의 실시예에 따른 가상화 장치의 인터럽트 전달 과정을 설명하기 위한 도면이다.
본 발명의 실시예에 따른 가상화 장치(100)에서는 호스트 유저 프로세스(112) 상에 구현된 가상화 지원 프로세서(115)가 프로세서 반가상화를 위하여 스위칭 및 인터럽트 처리 등을 지원한다.
일반적으로, 가상화 장치(100)에서는 하드웨어 인터럽트가 발생하여 호스트가 이를 처리해야 할 때, 혹은 게스트가 페이지 디렉토리를 변경하거나 문맥 전환을 위해 커널 모드 스택을 변경할 때, 그리고 가상 장치를 이용할 때 등 호스트의 도움이 필요한 일들이 생길 때마다 호스트-게스트 전환이 수시로 발생한다.
이때, 본 발명의 실시예에 따른 가상화 장치(100)에서 게스트 커널은 호스트 유저 프로세스로 동작하므로 코드 수정 없이 호스트-게스트 변환(즉, 스위칭)이 빠르게 수행된다.
구체적으로, 도 3에서 나타낸 바와 같이, 게스트 유저 프로세스 간 전환은 게스트 커널의 switch_to 함수를 이용하여 수행되고, 호스트 유저 프로세스로서 동작하는 게스트 커널과 원래의 호스트 유저 프로세스 간 전환은 호스트 커널의 switch_to 함수를 이용하여 수행된다.
이때, 도 3에서는 호스트 커널 계층 상에 구현된 호스트 커널(120)이 호스트 유저 프로세스 계층 상에 구현된 제 1 게스트 머신이 설치된 호스트 유저 프로세스(112) 및 원래의 호스트 유저 프로세스(111) 간의 전환을 수행하는 것을 나타내었다. 또한, 제 1 게스트 머신(112)에 포함된 제 1 게스트 커널이 제 1 게스트 유저 프로세스들의 전환을 수행하는 것을 나타내었다.
또한, 가상화 장치(100)에서는 하드웨어 인터럽트 발생 시 우선적으로 호스트 커널이 인터럽트를 직접 처리한 후 하이퍼바이저 모듈(121)을 통해 게스트 커널로 인터럽트를 전달한다. 이때, 게스트 커널은 호스트 유저 모드에서 동작하므로 상기 전달된 인터럽트에 대한 실제 하드웨어 처리를 수행하지 않으며, 이로써 불필요한 오버헤드가 발생하지 않는다.
그리고, 가상화 장치(100)에서는 소프트웨어 인터럽트 발생 시 게스트 커널 및 게스트 유저 프로세스의 주소 공간 분리에 따라 게스트 유저 프로세스의 게스트 커널에 대한 인터럽트가 호스트 커널을 통해 처리된다.
구체적으로, 도 4에서 나타낸 바와 같이, 게스트 유저 프로세스의 sys_open 함수를 이용한 시스템 콜 호출 시 호스트 커널의 하이퍼바이저 모듈(121)을 통해 시스템 콜 핸들러에서 게스트 유저 프로세스의 시스템 콜을 처리한다. 이때, 호스트 커널은 syscall_to_guest 함수를 통해 게스트 커널로 시스템 콜 발생을 전달한다. 그러면, 게스트 커널은 게스트 유저 프로세스의 시스템 콜을 처리한 후 sys_handler를 통해 iret hyper call을 이용하여 호스트 커널에 게스트 프로세스 전환 요청을 한다. 이에 따라, 호스트 커널은 게스트 유저 프로세스로 제어권을 넘긴다.
다음으로, 도 5를 참조하여 본 발명의 실시예에 따른 가상화 장치의 메모리 가상화 방식에 대해서 설명하도록 한다.
도 5는 본 발명의 실시예에 따른 가상화 장치의 섀도우 페이징 방식을 설명하기 위한 도면이다.
본 발명의 실시예에 따른 가상화 장치(100)는 게스트 머신의 분리된 주소 공간을 효과적으로 관리하기 위하여 섀도우 페이징 방식을 통해 메모리를 가상화한다.
이때, 본 발명의 실시예에 따른 가상화 장치(100)에서 게스트 커널은 부팅 시 할당된 가상의 물리 메모리 공간을 관리하는 페이지 디렉터리와 페이지 테이블을 생성한다. 그리고, 게스트 커널 및 게스트 유저 프로세스는 상기 생성된 페이지 디렉터리와 페이지 테이블에 따라 가상의 물리 메모리 공간에서 동작한다. 참고로, 페이지는 가상 메모리 공간을 일정 크기를 가진 블록으로 분할하며, 이러한 블록을 페이지라 한다. 또한, 페이지 테이블은 프로세스의 페이지 정보 즉, 가상 어드레스와 물리 어드레스가 매칭되어 저장되며, 하나의 프로세스 당 하나의 페이지 테이블을 가진다.
본 발명의 실시예에 따른 가상화 장치(100)에서 호스트 커널은 게스트 커널의 페이지 테이블에 대응하는 섀도우 페이지 테이블을 관리한다.
예를 들어, 도 5에서 나타낸 바와 같이, 게스트 가상 메모리 어드레스는 게스트 물리 메모리 어드레스와 매칭되며, 이와 같은 게스트 가상 및 물리 메모리 어드레스 간의 매칭 정보가 게스트 페이지 테이블에 저장된다. 또한, 본 발명의 실시예에서는 게스트 물리 메모리 어드레스가 호스트 가상 메모리 어드레스와 매칭되며, 이와 같은 게스트 물리 메모리 어드레스와 호스트 가상 메모리 어드레스 간의 매칭 정보가 섀도우 페이지 테이블에 저장된다. 또한, 호스트 가상 메모리 어드레스가 다시 호스트 물리 메모리 어드레스 즉, 실제 물리 메모리 어드레스에 매칭되며, 이와 같은 호스트 가상 및 물리 메모리 어드레스 간의 매칭 정보가 호스트 페이지 테이블에 저장된다.
그리고, 본 발명의 실시예에 따른 하이퍼바이저 모듈(121)은 게스트 커널의 페이지 테이블(즉, 게스트 페이지 테이블)과 섀도우 페이지 테이블의 동기화를 위하여 페이지 폴트 처리를 수행한다.
구체적으로, 본 발명의 실시예에 따른 호스트 커널의 하이퍼바이저 모듈(121)은 페이지 폴트 발생 시, 발생한 주소가 게스트 주소인 경우 게스트 커널로 페이지 폴트를 전달한다. 그러면, 게스트 커널의 페이지 폴트 핸들러는 호스트 유저 모드에서 동작하기 때문에 실제 페이지 폴트 핸들링 대신 get_user_pages 함수를 이용하여 새로운 페이지를 할당 받는다. 즉, 게스트 커널은 get_user_pages 함수를 통해 호스트 커널로 하이퍼콜을 요청하여 페이지 요청을 수행한다. 그러면, 호스트 커널은 요청된 하이퍼콜에 대해 실제 물리 메모리의 페이지를 할당하고, 섀도우 페이지 테이블을 동기화 한다.
다음으로, 도 6을 참조하여 본 발명의 실시예에 따른 가상화 장치의 장치 가상화 방식에 대해서 설명하도록 한다.
도 6은 본 발명의 실시예에 따른 가상화 장치의 가상 드라이버를 이용한 장치 가상화 방식을 설명하기 위한 도면이다.
본 발명의 실시예에 따른 가상화 장치(100)에서 게스트 머신은 호스트 유저 프로세스로 동작하므로, 게스트 머신의 장치 접근은 다른 호스트 유저 프로세스(즉, 원래의 호스트 유저 프로세스)와 동일하게 파일 디스트립터(file descriptor)를 통해 Input/Output 시스템 콜을 통해 제어된다. 즉, 게스트 유저 프로세스는 호스트가 제공하는 파일 디스트립터(106)를 실제 하드웨어 장치로 인식한다.
구체적으로, 도 6에서 나타낸 바와 같이, 본 발명의 실시예에 따른 가상화 장치(100)에서 게스트 커널의 가상 드라이버(114)는 파일 디스크립터(106)를 추상화(abstraction)하여 게스트 유저 프로세스에 제공한다. 이때, 본 발명의 실시예에 따른 가상화 장치(100)에서는 가상 드라이버(114)의 특성에 따라 콘솔, 블록, 네트워크, 프레임 버퍼 등의 가상 드라이버를 제공할 수 있다.
이와 같이 함으로써, 종래의 Xen 등의 가상화 장치에서와 같이 드라이버 기능을 담당하는 특정 게스트 머신이 필요하지 않으며, 게스트 간의 드라이버 처리를 위한 IDC(Inter Domain Communication) 통신도 필요하지 않다. 따라서, 게스트 머신의 수와 관계 없이 효율적인 장치 관리가 가능하다.
본 발명의 일 실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
본 발명의 방법 및 시스템은 특정 실시예와 관련하여 설명되었지만, 그것들의 구성 요소 또는 동작의 일부 또는 전부는 범용 하드웨어 아키텍쳐를 갖는 컴퓨터 시스템을 사용하여 구현될 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
111, 112, 113: 호스트 유저 프로세스
114: 게스트 커널 115: 가상화 지원 프로세서
121: 하이퍼바이저 모듈 122: 장치 드라이버
106: 파일 디스크립터

Claims (6)

  1. 가상화 장치에 있어서,
    게스트 커널 및 게스트 유저 프로세스로 구성되는 하나 이상의 게스트 머신;
    호스트 커널 상에 설치되어 상기 게스트 머신의 가상화 장치에 대한 요청을 처리하는 하이퍼바이저 모듈; 및
    상기 게스트 머신이 호스트 유저 프로세스로 동작하도록 지원하고, 상기 게스트 머신의 스위칭 및 인터럽트를 처리하는 가상화 지원 프로세서를 포함하되,
    상기 게스트 커널은 상기 호스트 유저 프로세스의 파일 디스크립터를 추상화하여 상기 게스트 유저 프로세스가 상기 파일 디스크립터를 실제 장치로 인식하도록 지원하는 가상 드라이버를 포함하고,
    상기 게스트 커널 및 상기 게스트 유저 프로세스의 주소 공간이 분리되도록 설계되는 가상화 장치.
  2. 제 1 항에 있어서,
    상기 게스트 커널 및 게스트 유저 프로세서의 각 상위 주소에는 상기 호스트 커널이 위치하는 가상화 장치.
  3. 제 1 항에 있어서,
    상기 가상화 지원 프로세서는,
    상기 게스트 유저 프로세스에서 발생된 인터럽트를 상기 호스트 커널을 통해 상기 게스트 커널에 전달하여 상기 인터럽트가 처리되도록 하는 가상화 장치.
  4. 삭제
  5. 제 1 항에 있어서,
    상기 하이퍼바이저 모듈은,
    상기 게스트 머신의 주소에 상응하는 페이지 폴트 발생 시 상기 게스트 커널로 페이지 폴트를 전달하고 그에 대한 응답으로 새로운 페이지를 요청하는 하이퍼 콜을 수신하여 실제 물리 페이지를 할당하는 가상화 장치.
  6. 제 5 항에 있어서,
    상기 하이퍼바이저 모듈은,
    상기 게스트 커널의 페이지 테이블과 매칭되는 섀도우 페이지 테이블을 생성하고,
    상기 실제 물리 페이지를 할당한 후 상기 섀도우 페이지 테이블을 동기화 하는 가상화 장치.
KR1020100000376A 2010-01-05 2010-01-05 가상화 장치 KR101081907B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100000376A KR101081907B1 (ko) 2010-01-05 2010-01-05 가상화 장치
US12/707,808 US20110167422A1 (en) 2010-01-05 2010-02-18 Virtualization apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100000376A KR101081907B1 (ko) 2010-01-05 2010-01-05 가상화 장치

Publications (2)

Publication Number Publication Date
KR20110080240A KR20110080240A (ko) 2011-07-13
KR101081907B1 true KR101081907B1 (ko) 2011-11-09

Family

ID=44225470

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100000376A KR101081907B1 (ko) 2010-01-05 2010-01-05 가상화 장치

Country Status (2)

Country Link
US (1) US20110167422A1 (ko)
KR (1) KR101081907B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101387986B1 (ko) * 2012-05-24 2014-04-22 성균관대학교산학협력단 가상화 장치
KR20160111637A (ko) * 2015-03-17 2016-09-27 엘지전자 주식회사 모바일 환경에서 그래픽 처리 장치를 가상화하는 방법 및 기록 매체

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102402472A (zh) * 2010-09-17 2012-04-04 鸿富锦精密工业(深圳)有限公司 内存检测系统及其检测方法
US8973144B2 (en) * 2011-10-13 2015-03-03 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US9069586B2 (en) 2011-10-13 2015-06-30 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US20130204924A1 (en) * 2012-02-03 2013-08-08 Nokia Corporation Methods and apparatuses for providing application level device transparency via device devirtualization
WO2013134206A1 (en) * 2012-03-05 2013-09-12 The Board Of Regents, The University Of Texas System Automatically bridging the semantic gap in machine introspection
US8745745B2 (en) 2012-06-26 2014-06-03 Lynuxworks, Inc. Systems and methods involving features of hardware virtualization such as separation kernel hypervisors, hypervisors, hypervisor guest context, hypervisor context, rootkit detection/prevention, and/or other features
US9384024B2 (en) 2012-12-18 2016-07-05 Dynavisor, Inc. Dynamic device virtualization
WO2015081308A2 (en) 2013-11-26 2015-06-04 Dynavisor, Inc. Dynamic i/o virtualization
US9292686B2 (en) * 2014-01-16 2016-03-22 Fireeye, Inc. Micro-virtualization architecture for threat-aware microvisor deployment in a node of a network environment
US9921865B2 (en) * 2014-01-30 2018-03-20 Red Hat Israel, Ltd. Population of system tables by hypervisor
US10031767B2 (en) 2014-02-25 2018-07-24 Dynavisor, Inc. Dynamic information virtualization
WO2015176048A1 (en) 2014-05-15 2015-11-19 Lynx Software Technologies, Inc. Aspects of hardware virtualization, hypervisors, code detection
WO2016004263A1 (en) 2014-07-01 2016-01-07 Lynx Software Technologies, Inc. Systems and methods involving aspects of hardware virtualization such as separation kernel hypervisors, hypervisors, hypervisor guest context, hypervisor context, anti-fingerprinting, and/or other features
WO2015176029A1 (en) 2014-05-15 2015-11-19 Lynx Software Technologies, Inc. Systems and methods involving features of hardware virtualization such as hypervisor, pages of interest, and/or other features
US9213840B2 (en) 2014-05-15 2015-12-15 Lynx Software Technologies, Inc. Systems and methods involving features of hardware virtualization, hypervisor, APIs of interest, and/or other features
US11782745B2 (en) 2014-07-01 2023-10-10 Lynx Software Technologies, Inc. Systems and methods involving aspects of hardware virtualization such as separation kernel hypervisors, hypervisors, hypervisor guest context, hypervisor context, anti-fingerprinting and/or other features
US9934376B1 (en) 2014-12-29 2018-04-03 Fireeye, Inc. Malware detection appliance architecture
US20160299712A1 (en) * 2015-04-07 2016-10-13 Microsoft Technology Licensing, Llc Virtual Machines Backed by Host Virtual Memory
US10395029B1 (en) 2015-06-30 2019-08-27 Fireeye, Inc. Virtual system and method with threat protection
US10642753B1 (en) 2015-06-30 2020-05-05 Fireeye, Inc. System and method for protecting a software component running in virtual machine using a virtualization layer
US10454950B1 (en) 2015-06-30 2019-10-22 Fireeye, Inc. Centralized aggregation technique for detecting lateral movement of stealthy cyber-attacks
US11113086B1 (en) 2015-06-30 2021-09-07 Fireeye, Inc. Virtual system and method for securing external network connectivity
US10726127B1 (en) 2015-06-30 2020-07-28 Fireeye, Inc. System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer
US10216927B1 (en) 2015-06-30 2019-02-26 Fireeye, Inc. System and method for protecting memory pages associated with a process using a virtualization layer
US10033759B1 (en) 2015-09-28 2018-07-24 Fireeye, Inc. System and method of threat detection under hypervisor control
US20170123996A1 (en) * 2015-11-02 2017-05-04 Microsoft Technology Licensing, Llc Direct Mapped Files in Virtual Address-Backed Virtual Machines
US10447728B1 (en) 2015-12-10 2019-10-15 Fireeye, Inc. Technique for protecting guest processes using a layered virtualization architecture
US10846117B1 (en) 2015-12-10 2020-11-24 Fireeye, Inc. Technique for establishing secure communication between host and guest processes of a virtualization architecture
US10108446B1 (en) 2015-12-11 2018-10-23 Fireeye, Inc. Late load technique for deploying a virtualization layer underneath a running operating system
US9952890B2 (en) * 2016-02-29 2018-04-24 Red Hat Israel, Ltd. Kernel state data collection in a protected kernel environment
US10191861B1 (en) 2016-09-06 2019-01-29 Fireeye, Inc. Technique for implementing memory views using a layered virtualization architecture
CN112400170A (zh) 2018-06-24 2021-02-23 海克斯伍安全公司 配置、实施和监控可信执行环境的分离
US11074182B2 (en) 2019-08-22 2021-07-27 Micron Technology, Inc. Three tiered hierarchical memory systems
US10929301B1 (en) 2019-08-22 2021-02-23 Micron Technology, Inc. Hierarchical memory systems
US11016903B2 (en) 2019-08-22 2021-05-25 Micron Technology, Inc. Hierarchical memory systems
US11169928B2 (en) 2019-08-22 2021-11-09 Micron Technology, Inc. Hierarchical memory systems to process data access requests received via an input/output device
US11106595B2 (en) 2019-08-22 2021-08-31 Micron Technology, Inc. Hierarchical memory systems
US11036434B2 (en) 2019-08-22 2021-06-15 Micron Technology, Inc. Hierarchical memory systems
US11036633B2 (en) 2019-08-22 2021-06-15 Micron Technology, Inc. Hierarchical memory apparatus
US10789094B1 (en) 2019-08-22 2020-09-29 Micron Technology, Inc. Hierarchical memory apparatus
US10996975B2 (en) 2019-08-22 2021-05-04 Micron Technology, Inc. Hierarchical memory systems
US11789653B2 (en) 2021-08-20 2023-10-17 Micron Technology, Inc. Memory access control using a resident control circuitry in a memory device

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7281102B1 (en) * 2004-08-12 2007-10-09 Vmware, Inc. Restricting memory access to protect data when sharing a common address space
US7506096B1 (en) * 2005-10-06 2009-03-17 Parallels Software International, Inc. Memory segment emulation model for virtual machine
JP5100133B2 (ja) * 2007-01-19 2012-12-19 株式会社東芝 情報処理装置
US8677351B2 (en) * 2007-03-29 2014-03-18 Vmware, Inc. System and method for delivering software update to guest software on virtual machines through a backdoor software communication pipe thereof
US8117373B2 (en) * 2009-04-30 2012-02-14 Kimon Berlin VM host responding to initiation of a page swap by transferring pages from host-but-non-guest-addressable RAM to host-and-guest-addressable RAM
US8429648B2 (en) * 2009-05-28 2013-04-23 Red Hat, Inc. Method and apparatus to service a software generated trap received by a virtual machine monitor
US8312468B2 (en) * 2009-06-09 2012-11-13 Open Kernel Labs Methods and apparatus for fast context switching in a virtualized system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101387986B1 (ko) * 2012-05-24 2014-04-22 성균관대학교산학협력단 가상화 장치
KR20160111637A (ko) * 2015-03-17 2016-09-27 엘지전자 주식회사 모바일 환경에서 그래픽 처리 장치를 가상화하는 방법 및 기록 매체
KR102358752B1 (ko) 2015-03-17 2022-02-07 엘지전자 주식회사 모바일 환경에서 그래픽 처리 장치를 가상화하는 방법 및 기록 매체

Also Published As

Publication number Publication date
KR20110080240A (ko) 2011-07-13
US20110167422A1 (en) 2011-07-07

Similar Documents

Publication Publication Date Title
KR101081907B1 (ko) 가상화 장치
US11016798B2 (en) Multi-hypervisor virtual machines that run on multiple co-located hypervisors
Bugnion et al. Hardware and software support for virtualization
US8868880B2 (en) Virtualization with multiple shadow page tables
US9529650B2 (en) Method and apparatus for accessing hardware resource
US9971623B2 (en) Isolation method for management virtual machine and apparatus
Semnanian et al. Virtualization technology and its impact on computer hardware architecture
US10768962B2 (en) Emulating mode-based execute control for memory pages in virtualized computing systems
Bazargan et al. State-of-the-art of virtualization, its security threats and deployment models
US10489185B2 (en) Hypervisor-assisted approach for locating operating system data structures based on attribute matching
US11995459B2 (en) Memory copy during virtual machine migration in a virtualized computing system
US20180267818A1 (en) Hypervisor-assisted approach for locating operating system data structures based on notification data
US10620985B2 (en) Transparent code patching using a hypervisor
US11734048B2 (en) Efficient user space driver isolation by shallow virtual machines
WO2016101282A1 (zh) 一种i/o任务处理的方法、设备和系统
Lee Virtualization basics: Understanding techniques and fundamentals
Stoica et al. Virtual Machines Disco and Xen (Lecture 10, cs262a)
KR101077908B1 (ko) 서버 가상화 장치
KR101564293B1 (ko) 장치 가상화 방법 및 장치
Senthilvelan et al. Study of content-based sharing on the xen virtual machine monitor
Alliance Virtualization: State of the art
Semnanian A study on virtualization technology and its impact on computer hardware
Hu Towards an Extensible Ecosystem for Hypervisor-Level Services
Flavin APPLICATION PERFORMANCE IN THE CLOUD
Hammoud et al. Virtualizing Resources for the Cloud.

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: 20140923

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151102

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee