Abstract
Guest operating systems running over the virtual machines share a variety of resources. Since CPU is allocated in a time division manner it consequently leads them to having the unknown physical time. It is not regarded as a serious problem in the server virtualization fields. However, it becomes critical in embedded systems because it prevents guest OS from executing real time tasks when it does not occupy CPU. In this paper we propose a hypercall to register a timer service to notify the timer request related real time. It enables hypervisor to schedule a virtual machine which has real time tasks to execute, and allows guest OS to take CPU on time to support real time. The following experiment shows its implementation on Xen-Arm and para-virtualized Linux. We also analyze the real time performance with response time of test application and frames per second of Mplayer.
가상화 환경에서는 여러 개의 게스트 운영체제가 자원을 공유하고 있는데 특히 CPU는 시간 분할 방식에 의해 분배 된다. 따라서 각 가상 머신은 모든 물리 시간을 점유하지 못하고, 이는 CPU를 점유하지 못한 시간에 동작해야 하는 태스크 실행이 보장되지 못하는 결과를 야기시킨다. 이와 같은 응답성의 저하는 기존의 서버 가상화에서 치명적인 문제가 되지 않으나 임베디드 시스템에서 동작하는 실시간 태스크 측면에서는 중요하게 다루어 져야 하는 요구사항이 된다. 본 논문에서 우리는 실시간성과 관련된 타이머를 가상 머신 모니터에 등록할 수 있는 하이퍼콜을 제안한다. 이 하이퍼콜을 통하여 등록된 타이머는 만료된 시점에 해당 가상 머신이 실행되게 한다. 따라서 실시간성을 요하는 태스크들이 의도된 시간에 실행 가능하게 하며 다른 가상 머신의 기아 현상을 완화시켜 준다. 이어지는 실험에서는 Xen-Arm에 이를 구현하여 게스트 운영체제인 리눅스에서의 실시간성을 평가한다. 특히 테스트 응용과 Mplayer의 응답성 및 초당 프레임 수를 측정하여 한 개의 게스트 운영체제만이 동작하는 환경에서와 비슷한 실시간성이 지원될 수 있음을 보인다.