콘텐츠로 이동

준가상화 (Paravirtualization)

Jan 28, 2026

준가상화(Paravirtualization)는 게스트 OS를 수정하여 VMM(Hypervisor)과 직접 협력하게 함으로써, 전체 하드웨어 에뮬레이션 없이 효율적으로 가상화하는 기법이다. x86 하드웨어 가상화 지원(VT-x/AMD-V) 이전에 효율적인 가상화를 위해 개발되었으며, Xen 프로젝트가 대표적 구현이다.

비유하면, 번역가와 협력하는 외국인과 같다. 모든 문장을 번역하는 대신, 자주 쓰는 표현은 미리 약속한 신호(hypercall)로 대체한다.

준가상화 구조 (hypercall 기반 통신)
Modified Guest OS hypercall로 VMM 호출
Xen VMM hypercall 처리, 하드웨어 제어

Guest OS의 동작 변환:

동작변환 방식
일반 명령어네이티브 실행
페이지 테이블 변경hypercall 호출
I/O 요청shared buffer에 기록
  1. 게스트에게 실제 하드웨어가 아닌 유사하지만 다른 시스템 제공
  2. 게스트 OS가 VMM과 협력하도록 커널 수정
  3. 특권 명령어 대신 hypercall로 VMM 호출
  4. 단순하고 명확한 디바이스 추상화 제공
// 일반 시스템콜 (User → Kernel)
int result = syscall(SYS_read, fd, buf, count);
// Hypercall (Guest Kernel → Hypervisor)
int result = HYPERVISOR_mmu_update(reqs, count, ...);

가상 디바이스 대신 Shared circular buffer를 사용하여 요청/응답을 교환한다. 게스트가 Request Queue에 요청을 기록하면 Xen이 처리 후 Response Queue에 결과를 반환한다.

  • 게스트가 자체 페이지 테이블을 관리 (read-only)
  • 페이지 테이블 변경 시 hypercall로 Xen에 요청
  • 여러 변경을 비동기적으로 큐잉 후 일괄 처리 가능
특성Full VirtualizationParavirtualization
게스트 OS 수정불필요필요
하드웨어 에뮬레이션완전 에뮬레이션최소화
성능상대적 낮음높음
호환성모든 OS수정 가능한 OS만

하드웨어 지원 가상화(VT-x, AMD-V) 등장 후 순수 paravirtualization의 필요성이 감소했다. Xen도 unmodified guest를 지원하게 되었다. 다만 Type 0 하이퍼바이저나 성능 최적화가 중요한 특수 환경에서는 여전히 사용된다.

  • 일반 가상화: 게스트가 특권 명령어 실행 → 트랩 → VMM 에뮬레이션
  • 준가상화: 게스트가 hypercall 호출 → VMM이 직접 처리 (트랩 없이)