Implementation of Hypervisor for Virtualizing uC/OS-II Real Time Kernel

uC/OS-II 실시간 커널의 가상화를 위한 하이퍼바이저 구현

  • 신동하 (상명대학교 소프트웨어학부) ;
  • 김지연 (상명대학교 대학원 컴퓨터과학과)
  • Published : 2007.11.30

Abstract

In this paper, we implement a hypervisor that runs multiple uC/OS-II real-time kernels on one microprocessor. The hypervisor virtualizes microprocessor and memory that are main resources managed by uC/OS-II kernel. Microprocessor is virtualized by controlling interrupts that uC/OS-II real-time kernel handles and memory is virtualized by partitioning physical memory. The hypervisor consists of three components: interrupt control routines that virtualize timer interrupt and software interrupt, a startup code that initializes the hypervisor and uC/OS-II kernels, and an API that provides communication between two kernels. The original uC/OS-II kernel needs to be modified slightly in source-code level to run on the hypervisor. We performed a real-time test and an independent computation test on Jupiter 32-bit EISC microprocessor and showed that the virtualized kernels run without problem. The result of our research can reduce the hardware cost, the system space and weight, and system power consumption when the hypervisor is applied in embedded applications that require many embedded microprocessors.

본 논문은 uC/OS-II 실시간 커널이 관리하는 주 자원인 마이크로프로세서와 메모리를 가상화하여 하나의 마이크로프로세서 상에서 다수의 uC/OS-II 실시간 커널을 수행시키는 하이퍼바이저를 구현하였다. 마이크로프로세서는 uC/OS-II 실시간 커널이 처리하는 인터럽트들을 제어하는 알고리즘을 적용하여 가상화하고 메모리는 물리적 메모리를 파티션하는 방식을 사용하여 가상화한다. 개발된 하이퍼바이저 프로그램은 타이머 인터럽트와 소프트웨어 인터럽트를 가상화하는 인터럽트 제어 루틴들, 하이퍼바이저와 각 커널을 정상 수행 상태까지 유도하는 코드, 그리고 가상화된 두 커널 사이에 데이터 전달을 제공하는 API로 구성되어 있다. 기존의 uC/OS-II 실시간 커널은 개발한 하이퍼바이저 상에서 수행되기 위하여 소스 코드 레벨에서 수정이 필요하다. 구현된 하이퍼바이저는 Jupiter 32비트 EISC 마이크로프로세서 상에서 실시간 동작 시험 및 독립 수행 환경 시험을 거친 결과 가상화 커널이 정상적으로 수행되는 것을 확인하였다. 본 연구 결과는 다수의 내장형 마이크로프로세서가 요구되는 응용 분야에 활용될 경우 하드웨어 가격 절감효과를 얻을 수 있으며 내장형 시스템의 부피, 무게 및 전력 소비량을 줄이는 효과가 있음을 확인하였다.

Keywords