DOI QR코드

DOI QR Code

An Implementation of Dynamic Software Update System for C Application Programs

C 응용 프로그램의 동적 소프트웨어 업데이트 시스템 개발

  • Shin, Dongha (Division of Computer Science, Sangmyung University) ;
  • Kim, Ji-Hyeon (Department of Computer Science, the Graduate School)
  • 신동하 (상명대학교 컴퓨터과학부) ;
  • 김지현 (상명대학교 일반대학원 컴퓨터과학과)
  • Received : 2013.01.31
  • Accepted : 2013.03.27
  • Published : 2013.04.30

Abstract

Dynamic Software Update(DSU) is a technique, which updates a new version of the software to a running process without stopping. Many DSU systems that update C application programs are introduced. However, these DSU systems differ in implementation method or in main features. In this paper, we propose a new DSU system that can solve some disadvantages of existing DSU systems. DSU system presented in this paper splits existing program to code, global data and local data and then updates each part of the program considering the characteristics of the respective parts. The proposed system in this paper is implemented and tested on Linux. Also, we compared our DSU system with other DSU systems and we could find some strength of our DSU system. First, the code memory usage of our DSU system can be efficient since our system does not need to maintain code of an old version. Second, the global data memory waste is small because our system does not need to allocate the global data again which is not modified in the new version. Finally, we restore local data of old version in stack area of the new version using stack reconstruction technique. This paper is meaningful since we proposed a new DSU method and we implemented a full DSU system using the method.

DSU(Dynamic Software Update)는 실행 중인 프로세스를 종료하지 않고 새 버전으로 업데이트하는 기술이다. 이 기술을 이용하여 C 응용 프로그램을 업데이트 하는 DSU 시스템들이 소개 되었으며, 각 시스템의 업데이트 방식 및 주요 기능에는 큰 차이가 있다. 본 논문에서는 기존 DSU 시스템의 단점을 해결할 수 있는 새로운 DSU 시스템을 제안한다. 이 시스템은 C 응용 프로그램을 코드, 전역 데이터 및 지역 데이터로 나누어 이들 각 부분의 특성을 고려하여 업데이트 한다. 이 논문에서 제안한 방법은 리눅스 운영체제 상에서 구현 및 시험하였으며 기존 DSU 시스템과 비교하여 다음과 같은 장점을 가진다. 첫째, 구 버전의 코드는 메모리에서 해제되므로 코드 메모리의 낭비가 적다. 둘째, 새 버전에서 수정되지 않은 전역 데이터는 메모리에 새로 할당할 필요가 없으므로 전역 데이터 메모리의 낭비가 적다. 셋째, 업데이트 시 구 버전의 지역 데이터는 스택 재구성 방식을 사용하여 새 버전의 지역 데이터로 복구한다. 본 논문은 새로운 DSU 방식을 제안하였다는 점과 이 방식을 활용하여 완전한 DSU 시스템을 구현하였다는 점에서 의의가 있다.

Keywords

References

  1. D. Gupta, and P. Jalote, "On-line Software Version Change Using State Transfer Between Processes," Software Practice and Experience, Vol. 23, No. 9, pp. 949-964, September. 1993. https://doi.org/10.1002/spe.4380230903
  2. Jae Hong Cheon, Dea-Woo Park, "A Dynamic Update Engine of IPS for a DoS Attack Prevention of VoIP," Journal of the Korea Society of Computer and Information, Vol. 11, No. 6, pp. 165-174, December. 2006.
  3. I. Neamtiu, M. Hicks, G. Stoyle and M. Oriol, "Practical Dynamic Software Updating for C, " Proceedings of Programming Language Design and Implementation, pp. 72-83, Ottawa, Canada, June 2006.
  4. I. Neamtiu and M. Hicks, "Safe and timely dynamic updates for multithreaded programs," Proceedings of Programming Language Design and Implementation, pp. 13-24, Dublin, Ireland, June 2009
  5. K. Makris and R. A. Bazzi, "Immediate Multi-Threaded Dynamic Software Updates Using Stack Reconstruction," Proceedings of the 2009 conference on USENIX Annual Technical Conference, pp. 397-410, June 2009.
  6. K. Makris, "Whole-Program Dynamic Software Updating," PhD thesis, Arizona State University, December 2009.
  7. C. M. Hayden, E. K. Smith, M. Hicks and J. S. Foster, "State Transfer for Clear and Efficient Runtime Updates, In Third Workshop on Hot Topics in Software Upgrades, pp. 179-184, April 2011.
  8. C. M. Hayden, E. K. Smith, M. Denchev, M. Hicks and J. S. Foster, "Kitsune: Efficient, General-purpose Dynamic Software Updating for C," Proceedings of the ACM international conference on Object oriented programming systems languages and applications, pp. 249-264, October 2012.
  9. D. Gupta, P. Jalote, Senior Member, IEEE, and G. Baura, "A Formal Framework for On-line Software Version Change," IEEE Transactions on Software Engineering, Vol. 22, No. 2, pp. 120-131, February 1996. https://doi.org/10.1109/32.485222
  10. Linux Man Pages, Nov 2003, http://www.linuxmanpages.com/man3/
  11. V. Paxon, W. Estes and J. Millaway, Lexical Analysis With Flex, Edition 2.5.35, The Regents of the University of California, 2008, http://flex.sourceforge.net
  12. C. Donnelly and R. Stallman, Bison, Version 2.3, Free Software Foundation, Inc., 2006, http://www.gnu.org/software/bison
  13. Jutta Degener, ANSI C Yacc Grammar, 2011, http://www.quut.com/c/ANSI-C-grammar-y.html
  14. thttpd- tiny/turbo/throttling HTTP server 2.25b, Jul 2012, http://acme.com/software/thttpd/