R&D/Hypervisor

[Summary] Intel Virtualization Technology: Hardware Support for Efficient Processor Virtualization

sunshout 2013. 11. 4. 23:08


IntelVirtTechnology.pdf


Introduction

VMM 은 Host 머신의 모든 resource 를 접근가능하여, Guest OS에게 virtual platform interfaces를 제공한다.


IA-32 Architecture가 가상화 하기 어렸웠던 문제점들

- IA-32는 2 bit privilege level을 제공함.

- 그 중에서 Ring 0는 OS가 사용하고, Ring 3은 Application이 사용하도록 개발됨

- 하지만 이런상황에서 VMM을 개발하면, VMM이 Ring0에서 동작해야 하며,Guest OS는 VMM 보다 낮은 privilege level을 가져야 한다. (ring deprivileging)

- 따라서 가능한 모델은 VMM/GuestOS/GuestApplication (0/1/3 또는 0/3/3) 모델이 가능하다.

  . (0/1/3 모델이 simple한데, ring compression 때문에 64bit mode IA-32 에서는 불가능하다)


 

Ring Aliasing

- Guest OS가 자신이 알고 있는 privilege level(OS:ring0, App:ring3)로 동작하지 않을 때 발생하는 문제


Address-Space Compression

- VMM은 Guest Virtual Address(GVA)에 일부를 reserve 하거나, 이에 대한 접근이 가능해야 하는데, 이를 Guest가 모르게 해야 함 (Guest가 VMM가 reserve한 곳을 write하면 안됨)


Non-Faulting Access to Privilege State

- Privilege level에 맞지 않지만, fault 가 발생하지 않음


Adverse Impact on Guest System Call

- Guest OS가 SYSENTER, SYSEXIT를 수행하면, Guest OS Kernel이 아닌 VMM 으로 변경될 수 있음


Interrupt Virtualization

- VMM이 Guest interrupt를 제어해 줘야 함


Access to Hidden State

- IA-32 Arch에서 Software가 알지 못하는 hidden descriptor caches 가 존재함


Ring Compression

- 64 bit mode에서는 paging만 제공하는데, paging은 privilege level 0-2를 구분못함. 따라서 guest OS가 ring 3에서 동작해야 함


Frequent Access to Privilege Resources