top of page
작성자 사진Paran Lee

01. Xen CPU Virtualization (1)


  1. 전통적인 하이퍼 바이저 구현: Trap and Emulate



특정 아키텍쳐에서는 Priviledge Instruction / Non-Privliedge Instruction 이 모호한 명령어들이 있었음

POPF: ALU (Zero) Flag + System(Interrupt Enable / Disable) Flag -> Non-Privliedge Mode 에서 실행하면 ALU Flag 만 변경함.

Ex) Guest OS 가 Non-Privliedge Mode 에서 실행 -> System Flag 를 바꿀 수 없어서 Interrupt Disable 을 못함 -> Guest OS 자체적으로 오류에 빠짐.

Trap and Emulate 방식으로 하이퍼 바이저 구현을 어렵게 하는 명령어가 X86 아키텍쳐에 약 17개 있음


2. Binay Translation vs Hyper Call

VMware: Binary Translation

OS 코드의 이미지를 하이퍼바이저가 스캔해서 문제의 소지가 있는 명령어를 검출하고, 적절하게 수정하여 CPU 가 동작하게 하고 Translation Overhead 가 있음


Xen: Hyper Call

직접 운영체제의 소스를 수정(공통 API 에 매크로로 대응하여 구현함)하여 오류가 발생할 수 있는 명령어를 제거한다.

그리고 하이퍼바이저를 호출할 수 있는 Hyper Call 로 바꾸어서 문제의 소지가 있는 명령어를 실행할 때 하이퍼바이저로 제어권을 넘긴다. 하이퍼바이저는 운영체제의 요청(VM Exit)을 받아서 적절히 처리하고 다시 게스트 운영체제로 제어권을 넘긴다(VM Entry).

Para Virtualization 기술의 일종임


3. Hardware Accelation

운영체제의 소스코드 수정(Hyper Call) 또는 Binary Translation 없이도 Trap and Emulate 방식으로으로 Hypervisor 를 구현할 수 있도록 하드웨어 기능을 추가함.


Intel: VT-x

VT is composed of VT-x, which encompasses the core side features; VT-d, which encompasses the IOMMU; and VT-c


AMD: AMD-V

AMD markets its core side virtualization offerings under the label AMD-V while the IOMMU is marketed under AMD-Vi


ARM:

Armv8.1 introduces virtualization host extensions (VHE), which provide enhanced support for Type 2 hypervisors. Armv8.1-VHE also provides basic address translation, and Armv8.3-NV added support for nested virtualization.


The next-generation Arm architecture, dubbed Armv9, was announced in March 2021 and focuses on architecture for secure AI and machine learning (ML) workloads. Armv9-A includes features for memory tagging, branch target identification and cache clean to point of deep persistence. Armv9.1-A offers fine-grained traps for virtualization and a high precision generic timer. With Armv9.2-A, admins have access to branch-record recording.


CPU 가상화 이외에 메모리, IO 가상화는 나중에 살펴보자


4. Paravirt Operation

Xen: Hyper Call, VMware: VMI, KVM


Linux Common API: pv_*_ops (Paravirt * Operation)




조회수 56회댓글 0개

관련 게시물

전체 보기

Comments


bottom of page