Kernel-level Software instrumentation via Light-weight Dynamic Binary Translation

경량 동적 코드 변환을 이용한 커널 수준 소프트웨어 계측에 관한 연구

  • 이동우 (성균관대학교 휴대폰학과) ;
  • 김지홍 (성균관대학교 휴대폰학과) ;
  • 엄영익 (성균관대학교 정보통신공학부)
  • Received : 2011.04.15
  • Accepted : 2011.07.15
  • Published : 2011.10.31

Abstract

Binary translation is a kind of the emulation method which converts a binary code compiled on the particular instruction set architecture to the new binary code that can be run on another one. It has been mostly used for migrating legacy systems to new architecture. In recent, binary translation is used for instrumenting programs without modifying source code, because it enables inserting additional codes dynamically, For general application, there already exists some instrumentation software using binary translation, such as dynamic binary analyzers and virtual machine monitors. On the other hand, in order to be benefited from binary translation in kernel-level, a few issues, which include system performance, memory management, privileged instructions, and synchronization, should be treated. These matters are derived from the structure of the kernel, and the difference between the kernel and user-level application. In this paper, we present a scheme to apply binary translation and dynamic instrumentation on kernel. We implement it on Linux kernel and demonstrate that kernel-level binary translation adds an insignificant overhead to performance of the system.

코드변환 기법은 특정 명령어 집합 구조에서 작성된 프로그램 코드를 다른 구조에서 실행할 수 있도록 변환하는 일종의 에뮬레이션 기법이다. 이 기법은 주로 구형 시스템에서 동작하는 응용프로그램을 새로운 시스템에서 동작시키기 위해 사용되었다. 코드를 변환하는 과정에서 동적으로 코드를 삽입하는 것이 가능하기 때문에 소스코드의 수정 없이 기존 응용프로그램을 계측할 수 있다. 이미 응용프로그램 분야에서는 동적코드분석과 가상머신에서 이러한 기법이 널리 활용되고 있다. 반면에 운영체제의 커널은 일반적인 유저 수준의 응용프로그램과는 다른 특성을 지니기 때문에 커널 수준에서 이러한 코드변환 기법을 사용하려면 시스템 성능, 메모리 관리, 특권 명령어 처리 및 동기화와 관련된 문제가 다루어져야 한다. 본 논문에서는 커널 수준의 동적코드변환 기법을 설계하고 코드삽입을 통한 소프트웨어 계측을 제안한다. 제안기법을 리눅스 커널에 적용하여 실험을 수행하고 그 결과를 통해 본 제안기법이 커널수준에서 소프트웨어 계측에 적은 성능 부하만을 야기함을 확인하였다.

Keywords

References

  1. M. Probst, "Dynamic Binary Translation," In Proc. Of the UKUUG Linux Developers' Conf., Jul. 2002.
  2. M. Probst, "Fast Machine-Adaptable Dynamic binary Translation," ACM SIGPLAN Not., Vol. 35, no. 7, pp.41-51 https://doi.org/10.1145/351403.351414
  3. N. Nethercote and J. Seward, "Valgrind: A Program Supervision Framework," Electronic Notes in Theoretical Computer Science, Vol. 89, no.2, pp.44-66, 2003. https://doi.org/10.1016/S1571-0661(04)81042-9
  4. N. Nethercote and J. Seward, "Valgrind: a framework for heavyweight dynamic binary instrumentation," in Proc. Of the 2007 PLDI Conf., Vol. 42, pp.89-100, 2007.
  5. CK. Luk, R. Cohn, R. Muth, H. Patil, A. Klauser, G. Lowney, S. Wallace, VJ. Reddi and K. Hazzelwood, "Pin: building customized program analysis tools with dynamic 계측," in Proc. of the 2005 ACM SIGPLAN PLDI conf., pp.190-200, 2007.
  6. V. Bala, E. Duesterwald and S. Banerjia, "Dynamo: a transparent dynamic optimization system," ACM SIGPLAN Not., Vol. 35, no. 5, pp.1-12, 2000. https://doi.org/10.1145/358438.349303
  7. O. Agesen, A. Garthwaite, J. Sheldon and P. Subrahmanyam, "The Evolution of an x86 Virtual Machine Monitor," ACM SIGOPS Operating Systems Review, Vol. 44, no. 4, pp.3-18, Dec. 2010. https://doi.org/10.1145/1899928.1899930
  8. F. Bellard, "QEMU, a fast and portable dynamic translator," In Proc. Of the 3rd Ann. Haifa Experimental Systems Conf., pp.24-26, May 2010
  9. B. Dragovic, K. Fraser, S. Hand, T. Harris, A. Ho, I. Pratt, A. Warfield, P. Barham, and R. Neugebauer, "Xen and the Art of Virtualization," In Proc. Of the ACM Symp. on Operating System Principles Oct. 2003
  10. D. Bruening, T. Garnett, and S. Amarasinghe. "An infrastructure for adaptive dynamic optimization." In Proc. Of Intl. Symp. on Code Generation and Optimization, pp.265-276, Mar. 2003.
  11. P. P. Bungale, S. Sridhar, and J. S. Shapiro, "Supervisor-Mode Virtualization for x86 in VDebug," Tech. Rep. SRL2004-01, Johns Hopkins University Systems Research Laboratory, May 2004.
  12. P. Feiner, A. D. Brown, and A. Goel, "Transparent Fault Isolation using Dynamic Compilation," Poster at 15th Int. Conf. on Architectural Support for Programming Languages and Operating Systems, Mar. 2010.
  13. S. Sridhar, J. S. Shapiro and P. P. Bungale, 'HDTrans: an open source, low-level dynamic 계측 system," In Proc. of 2006 Int. Conf. on Virtual Execution Environments (VEE), pp.175-185, Ottawa, Ontario, Canada, Jun. 2006.
  14. S. Sridhar, J. S. Shapiro, P. P. Bungale, "HDTrans: a low-overhead dynamic translator," ACM Computer Architecture News, vol.35, no.1, pp.135-140, Mar. 2007. https://doi.org/10.1145/1241601.1241602
  15. 김지홍, 김인혁, 엄영익, "Indirection 기법을 이용한 경량 동적 코드 변환 기법,", 정보과학회논문지 : 컴퓨팅의 실제 및 레터 Vol. 17, no. 3, pp.170-174, 2011. 03.
  16. Z. Cai, A. Liang, Z. Qi, L. Jiang, X, Li, H, Guan and Y. Chen, "Performance Comparison of Register Allocation Algorithms in Dynamic Binary Translation," In Proc. Of Int. Conf. on Knowledge and Systems Engineering, pp.113-119, 2009.