가상화 때문에 머리가 너무 아프네요ㅠ
일반적으로 전가상화 (Full Virtualization)과 반가상화 (Para Virtualization) 방법을 사용하는데..
반가상화에서는 Hypervisor에서 제공하는 API가 필요하다고 합니다.
Q. 이런 API가 왜 필요한 건가요?
VMware 같은 guest OS 깔고 그 위에 애플리케이션 동작시키고 하면 되는 것 아닌가요?
(전가상화/반가상화를 구분할 수 있는 대표적인 차이점도 간단히 설명해주시면 고맙겠습니다~)
전가상화 방식에서는,
- Guest OS로부터 하드웨어 제어 명령이 발생되면, CPU 즉 하드웨어에서 이를 확인합니다.
- 하드웨어는 이 명령을 확인하여 VMM (Virtual Machine Monitor)로 전달하고,
- VMM (Hypervisor 역할)은 이를 분석하여 에뮬레이션된 하드웨어에 알리는 과정을 거치게 됩니다.
반면, 반가상화 방식에서는,
- Guest OS로부터 발생된 하드웨어 제어 명령이 CPU가 아닌 VMM으로 전달됩니다.
- VMM은 이를 분석하여 에뮬레이션된 하드웨어에 알리는 과정을 거치게 됩니다.
즉, 반가상화에서는 Guest OS로부터 발생된 하드웨어 제어 명령이 실제 하드웨어가 아닌, VMM으로 전달됩니다.
이렇게 동작하기 위해서는 OS를 수정하여 VMM 즉, Hypervisor로 직접 명령을 전달할 수 있도록 해야하는데요,
이를 위해서 Hypervisor 측에서 제공하는 API를 기반으로 수정 작업이 이루어져야 합니다.
이 때문에 반가상화에서는 API가 필요한 것이구요.
결국, 전가상화와 반가상화의 가장 큰 차이점은 OS의 수정 여부라고도 할 수 있겠네요.
참고로 첫번째로 설명드린 전가상화 방식을 제공하는 대표적인 벤더는 Citrix (Xen)과 Microsoft (Hyper-V)가 있으며,
두번째로 설명드린 반가상화 방식을 제공하는 대표적인 벤더는 Citrix (Xen)가 있습니다.