earticle

논문검색

[논문]

KVM/ARM의 가상화 민감 명령어에 대한 개선된 처리 기법

원문정보

An Improved Method for Handling Virtualization Sensitive Instructions on KVM/ARM

이창훈, 신동하

피인용수 : 0(자료제공 : 네이버학술정보)

초록

영어

Recently, KVM/ARM that runs multiple guest ARM Linuxes on a host has been introduced. KVM/ARM adds an SWI instruction in front of each virtualization sensitive instruction at compile time to generate an exception while a kernel is running. Once an SWI instruction generates an exception, a virtualization sensitive instruction next to the SWI instruction is emulated in an exception handling routine. There are some problems with handling virtualization sensitive instructions in the current KVM/ARM. Firstly, there is an incompleteness issue such that cannot detect some virtualization sensitive instructions generated by C and ARM assembler macro expansion. Secondly, there is a drawback that kernel size is increased by added SWI instructions. It is undesirable for embedded systems. Thirdly, we have to manually locate and modify some parts of kernel codes pushed back because of added SWI instructions. It causes engineering costs when diverse versions of kernel are to be virtualized. In this paper, we propose an improved method for handling virtualization sensitive instructions on KVM/ARM. We completely detects virtualization sensitive instructions by tracking C and ARM assembly macro expansion at compile time, and encoding a virtualization sensitive instruction to an undefined instruction. Our method keeps kernel size the same and is unnecessary to modify kernel by hand. Our method is applied to KVM/ARM source codes and implemented to virtualize various versions of ARM Linux.

한국어

최근 호스트 ARM 리눅스 상에서 다수의 게스트 ARM 리눅스를 수행하는 KVM/ARM이 소개되었다. KVM/ARM은 커널 컴파일 시간에 커널 소스 파일에 존재하는 가상화 민감 명령어 앞에 SWI 명령어를 추가로 삽입하여, 커널 수행 시간에 가상화 민감 명령어 수행 전 예외가 발생되게 만든 후, 예외 처리 루틴에서 SWI 명령어 다음에 나타나는 가상화 민감 명령어는 수행하지 않고 에뮬레이션 한다. 현재 구현된 KVM/ARM의 가상화 민감 명령어 처리 방법에는 다음과 같은 문제점이 있다. 첫째, 커널 컴파일 시간에 가상화 민감 명령어를 찾는 과정에서 커널의 소스 파일 만을 단순 스캔하기 때문에 C 및 ARM 어셈블러 매크로 확장 후 나타날 수 있는 가상화 민감 명령어를 찾지 못하는 오류가 있다. 둘째, SWI 명령어의 추가 삽입으로 인하여 기존 커널의 크기가 커지는 단점이 있다. 이는 임베디드 시스템 상에서 바람직하지 않다. 셋째, SWI 명령어 삽입으로 인하여 ARM 어셈블러 언어로 작성된 커널 코드의 일부가 뒤로 밀려서 제대로 수행되지 않는 부분이 존재하기 때문에 이 부분을 사람이 찾아서 수작업으로 수정하여야 한다. 이는 다양한 버전의 커널을 가상화하고자 할 때 공학적 비용 발생의 요인이 된다. 본 논문에서는 이러한 문제점을 개선하는 새로운 가상화 민감 명령어 처리 방법을 제안한다. 본 연구에서 제안하는 방법은 커널 컴파일 시간에 C 및 어셈블러 매크로 확장을 추적하여 모든 가상화 민감 명령어를 찾을 수 있도록 하였고, 하나의 가상화 민감 명령어를 하나의 미정의(undefined) 명령어로 인코딩하여 커널의 크기가 변화되지 않게 하였으며, 이로 인하여 커널 코드를 수작업으로 수정하여야 하는 공학적 비용이 발생하지 않게 하였다. 본 연구에서 제안하는 방법은 현재 KVM/ARM 소스 코드에 반영하였으며 수행 결과 다양한 버전의 ARM 리눅스를 쉽게 가상화할 수 있었다.

목차

요약
 Abstract
 1. 서론
 2. 관련연구
  2.1 가상화 민감 명령어 및 트랩 및 에뮬레이션(trap-and-emulation)
  2.2 ARMv6의 가상화 민감 명령어
  2.3 KVM/ARM의 문제점
 3. 설계
  3.1 가상화 민감 명령어 탐지
  3.2 가상화 민감 명령어 변환
 4. 적용 및 수행
 5. 결론
 참고문헌

저자정보

  • 이창훈 Chang hun Lee. 상명대학교 일반대학원 컴퓨터과학과
  • 신동하 Dong ha Shin. 상명대학교 소프트웨어대학 컴퓨터과학부

참고문헌

자료제공 : 네이버학술정보

    함께 이용한 논문

      0개의 논문이 장바구니에 담겼습니다.