개요
Hypercall (하이퍼 콜)은 가상머신에서 Guest operating system에서 특정 Host operating system의 기능을 부를때 사용하는 콜기법이다. 하이퍼 콜은 소프트웨어 트랩으로서, Guest operating system이 Hypervisor을 깨워서 특정 로직을 수행하게 만든다. 이러한 기능은 마치 User level, Kernel level domain change를 일으키는 시스템콜과 비슷한 방식으로 작동한다. Page table업데이트와 같은 보호받아야 하는 작업을 Hypercall을 통해서 수행하면, 빠르게 수행될 수 있다. 예를 들어서 System을 Shutdown시키는 것과 같은 인스트럭션들은 하이퍼콜을 통해서 이루어지게 되어 있다 (PIO를 쏘아 날리는 방식으로도 끌 수 있는데, 결국 하이퍼 바이저로의 context change가 이루어 진다).
x86 아키텍쳐에서는 vmcall
라는 Instruction을 통해서 Hypercall을 일으킨다. Hypercall의 정의는 Hypervisor마다 다를 수 있지만 POSIX System call처럼 정해진 규칙에 따라 작성하는 것이 Generality를 위해서 일반적이다.