KR20070096316A - 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한확장 가능한 가상 머신 및 이를 이용한 리프로그래밍 방법 - Google Patents
무선 센서 네트워크 환경에서 프로그램을 변경하기 위한확장 가능한 가상 머신 및 이를 이용한 리프로그래밍 방법 Download PDFInfo
- Publication number
- KR20070096316A KR20070096316A KR1020060026518A KR20060026518A KR20070096316A KR 20070096316 A KR20070096316 A KR 20070096316A KR 1020060026518 A KR1020060026518 A KR 1020060026518A KR 20060026518 A KR20060026518 A KR 20060026518A KR 20070096316 A KR20070096316 A KR 20070096316A
- Authority
- KR
- South Korea
- Prior art keywords
- dynamic module
- program
- program memory
- virtual machine
- byte code
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
Abstract
본 발명은 기존 가상 머신의 오버헤드를 줄여 프로그램의 변경과 실행을 저전력화할 수 있도록 한 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한 확장 가능한 가상 머신 및 이를 이용한 리프로그래밍 방법을 제공한다.
본 발명에 따른 확장 가능한 가상 머신은, 네트워크를 통해 메타데이터 패킷이 수신되면 다운로드 관리자는 네트워크를 통해 새로운 동적 모듈을 다운받아 이를 프로그램 메모리로 로드하는 제1단계; 동적 모듈이 저장된 프로그램 메모리의 주소를 심볼 테이블에 업데이트하는 제2단계; 동적 모듈을 호출하는 바이트 코드를 바이트 코드 인터프리터가 해석하여 상기 심볼 테이블을 검색하여 동적 모듈이 저장된 프로그램 메모리의 주소를 얻는 제3단계; 상기 제3단계에서 얻어진 프로그램 메모리 주소에 따라 바이트 코드 인터프리터는 그 바이트 코드에 해당하는 동적 모듈을 호출하여 호출된 동적 모듈이 실행되도록 하는 제4단계;를 수행하여 무선 센서 네트워크 환경에서 리프로그래밍을 가능케 한다.
무선 센서 네트워크, 가장 머신, 동적 모듈, 오퍼런드 스택
Description
도 1은 본 발명에 따른 확장 가능한 가상 머신의 전체적인 구조도.
도 2는 본 발명에 따라 동적 모듈이 실제 센서 노드의 프로그램 메모리에 로드되고 링크되는 과정을 설명하기 위한 도.
도 3은 본 발명에 따른 다운로드 관리자의 구조 및 확장 가능한 가상 머신이 새로운 모듈을 받았을 경우의 다운로드 관리자의 기능 설명도.
도 4는 본 발명에 따른 확장 가능한 가상 머신의 다운로드 관리자가 동적 모듈을 센서 노드의 프로그램 메모리로 로드하는 과정의 설명도.
도 5는 본 발명에 따른 확장 가능한 가상 머신의 바이트 코드 인터프리터가 동적 모듈을 링킹하는 과정의 설명도.
도 6은 본 발명의 전체적인 동작 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
101 : 확장 가능한 가상 머신 102 : 다운로드 관리자
103 : 심볼 테이블 104 : 동적 모듈
106 : 바이트 코드 인터프리터 108 : 캡슐
109 : TinyOS 201 : 프로그램 메모리
202 : 부트 로더 203 : 어플리케이션 코드 영역
204 : 부트 로더 코드 영역 301 : 메타데이터 패킷
302 : 동적 모듈 테이블 304 : 빈 페이지
303 : 프로그램 메모리 페이지 리스트
본 발명은 무선 센서 네트워크 시스템에 관한 것으로, 특히 무선 센서 네트워크 환경에서 각각의 센서 노드의 프로그램을 네트워크를 통해 무선으로 수정 보완할 수 있도록 하는 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한 확장 가능한 가상 머신 및 이를 이용한 리프로그래밍 방법에 관한 것이다.
무선 센서 네트워크는 유비쿼터스 시대와 더불어 현재 가장 많이 연구되는 분야이다. 무선 센서 네트워크는 무선으로 연결된 작은 센서 노드를 이용하여 분산 환경에 적용될 수 있는 네트워크를 말한다. 센서 노드의 자원은 제한되기 때문에 센서 노드의 프로그램은 자원이 풍부한 호스트 머신에서 컴파일 된 프로그램 이미지를 사용해 전송한다.
무선 센서 네트워크는 환경을 모니터링 하는 어플리케이션으로 많이 활용되므로 각 센서노드의 어플리케이션은 환경 변화에 맞게 프로그램을 수정될 필요가 있다.
또한, 하나의 센서 노드는 긴 수행 시간을 가지기 때문에 라이프 타임 동안 버그의 수정이나 시스템의 변경 등의 이유로 소프트웨어를 바꾸어야 할 필요가 있다.
그러나 무선 센서 네트워크 환경은 하나의 어플리케이션을 위해 수백 수천 개의 센서 노드가 사용되고 관리자가 센서 노드의 프로그램의 변경을 위하여 각 센서 노드를 물리적으로 제거 및 재설치하는 것을 불가능 하다. 그러므로 효율적으로 무선 센서 네트워크의 프로그램을 변경하기 위해 네트워크를 통한 센서 노드의 프로그램 변경기능은 필수적이다.
일반적으로 센서 노드는 제한된 파워를 가지므로 다시 프로그램하는 과정이 에너지 관점에서 효율적이어야 한다. 이 효율성은 프로그램 코드의 전송과 수행을 말한다.
TinyOS는 센서 노드의 가장 대표적인 운영체제로 사용되고 있다(Jason Hill, Robert Szewczyk, Alec Woo, Seth Hollar, David Culler, and Kristofer Pister. System Architecture Directions for Networked Sensors. In the Ninth International Conference on Architectural Support for Programming Langages and Operating Systems, 2000.), (P. Levis, S. Madden, D. Gay, J. Polastre, R. Szewczyk, A. Woo, E. Brewer, and D. Culler. The Emergence of Networking Abstractions and Techiques in Tinyos. In Proceedings of the First Symposium on Networked Systems Design and Implementation, pages 1-14. USENIX Association, 2004.).
최근, 대부분의 센서 네트워크 어플리케이션은 TinyOS을 기반으로 개발되었으며, 센서 노드의 한정된 자원을 위해 디자인 되었다.
TinyOS는 XNP(Crossbow Network Programming)( Jaein Jeong, Sukun Kim and Alan Broad. Network Reprogramming. TinyOS document, .), (Crossbow Technology Mote In Network Programming User Reference. TinyOS document, . 24)와 Deluge(Jonathan W. Hui and David Culler. The Dynamic Behavior of a Data Dissemination Protocol for Network Programming at Scale. In proceedings of the 2nd ACM Conference on Embedded Networked Sensor Systems. 2004.)을 사용한다.
XNP는 TinyOS 1.1 release에 나와 있는 네트워크 프로그래밍 구조이며, TinyOS 프로그램 이미지는 컴파일할 때 정적으로 링크된 것이기 때문에 모든 프로그램 이미지 전체를 업데이트 해야 한다.
Deluge는 멀티-홉(다중도약) 지원을 위한 데이터 전송 프로토콜이다. 큰 프로그램 이미지를 멀티-홉 센서 네트워크를 통해 극소수 노드에서 다수 노드로 전송하는 것을 지원한다. 각 노드들은 주기적으로 프로그램 이미지의 버전을 알리게 된다. 만약, 노드가 새로운 버전을 받아들이게 되면, 노드는 새로운 프로그램 이미지를 요청하고 프로그램 전체의 이미지를 받아 새로운 프로그램 이미지의 버전을 알 리게 된다.
그러나 TinyOS 네트워크 리프로그래밍 구조의 문제점은 꼭 프로그램 이미지 전체를 사용해야 한다는 것이다. 이는 다음과 같은 문제점을 갖게 된다.
첫째, 전체 프로그램 이미지가 전송되어야 하므로 코드 전송 손실이 너무 많다는 것이다.
둘째, 전체 프로그램 이미지가 보급되어야 하므로 증가된 업데이트는 불가능하다.
셋째, 만약 새로운 프로그램 이미지에 오류가 있으면, 깨진 센서 노드를 복원시킬 수 없어 업데이트 된 프로그램 이미지가 센서 노드를 망가뜨릴 수 있다는 것이다.
따라서, 에너지 측면에서 효율적인 네트워크 리프로그래밍 구조가 아니라는 단점이 있다.
이와 같이, TinyOS의 네트워크 리프로그래밍 구조는 반드시 프로그램 이미지 전체를 전송해야 하므로 에너지 관점에서 볼 때 효과적이지 못하다.
이 밖에도 가상 머신을 이용해 가상 머신의 코드인 바이트 코드를 네트워크를 통해 전송하는 방식인 Mate가 있다.
Mate는 TinyOS 네트워크 리프로그래밍 구조의 문제점을 해결하였다. Mate는 네트워크 센서를 위한 작은 가상 머신이다. 이 가상 머신은 네트워크 리프로그래밍을 하는데 있어서 몇 가지 장점이 있다. 분포된 센서 노드를 리프로그램하기 위해 서, 가상 머신의 명령어로 바이트 코드를 사용한다. 가상 머신의 복잡한 기능을 바이트 코드로 인용한 것이므로, 알려진 바와 같이 간단한 바이트 코드의 세트로 복잡한 프로그램을 표현할 수 있다. 가상 머신 위에서 실행되었기 때문에 바이트 코드는 탄력성(시스템이 부분적으로 고장 나도 처리를 실행할 수 있는 능력)이 있다.
Mate의 눈에 띄는 특징은 네트워크 리프로그램이 수백개의 바이트 코드를 보내는 것처럼 실행된다는 것이다. 이것은 Mate가 새로운 프로그램 코드를 빨리 전송하는 것을 가능하게 해준다. 그러므로, Mate는 에너지 측면에서 효율적인 프로그램 코드 전송 구조와 탄력성을 제공해준다.
그러나, 가상 머신 위에서 바이트 코드가 실행되어야 하므로 Mate는 엄청난 오버헤드를 포함하게 된다.
첫째, 실제 머신의 네이티브 코드가 아니기 때문에 인터프리테이션 오버헤드가 발생한다.
둘째, 가상 머신의 오퍼랜드 스택 위에서 실행되므로 오퍼랜드 스택 오버헤드를 포함한다.
만약, 복잡한 계산을 필요로하는 센서 네트워크 어플리케이션의 경우, 바이트 코드를 이용하여 실행을 하게 되면 수행할 연산량과 소비 에너지가 매우 커지게 된다.
이 방식의 경우 연산에 드는 에너지가 매우 크기 때문에 무선 센서 네트워크 어플리케이션을 변경하기 않고 계속 사용하게 된다면 프로그램 이미지 전체를 네트워크로 전송하는 방식보다 더 큰 에너지를 소모할 수 있다.
본 발명은 이러한 문제점을 해결하기 위한 것으로, 본 발명의 목적은 센서 노드의 프로그램을 변경하기 위해 다운로드 관리자 모듈과 심볼 테이블을 센서 노드 내부의 가상 머신에 추가시켜 네이티브 코드로 된 프로그램을 실행가능하게 하고, 기존 가상 머신의 오버헤드를 줄여 프로그램의 변경과 실행을 저전력화할 수 있도록 한 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한 확장 가능한 가상 머신 및 이를 이용한 리프로그래밍 방법을 제공함에 있다.
상기 목적을 달성하기 위한 본 발명에 따른 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한 확장 가능한 가상 머신은, 바이트 코드가 저장되는 캡슐 및 상기 캡슐에 저장된 바이트 코드를 수행하며 동적 모듈을 호출하는 바이트 코드 인터프리터를 구비하는 무선 센서 네트워크 환경에서 이미 배치된 센서 노드를 다시 프로그램하기 위한 가상 머신에 있어서, 업데이트되는 동적 모듈의 프로그램 메모리 주소가 저장되는 심볼 테이블; 및 네트워크를 통해 새로운 동적 모듈을 다운받고 이를 상기 프로그램 메모리로 로드하며, 상기 동적 모듈이 저장된 프로그램 메모리의 주소를 상기 심볼 테이블에 업데이트하는 다운로드 관리자;를 더 포함하여 구성되는 것을 특징으로 한다.
상기 동적 모듈은 상기 프로그램 메모리의 중간의 빈 공간 임의의 위치에 로 드된다.
상기 다운로드 관리자는 상기 네트워크를 통해 수신되며, 상기 동적 모듈을 호출하는 바이트 코드의 이름, 동적 모듈의 버전, 사이즈, 전체 패킷 수에 대한 정보를 포함하는 메타데이타 패킷에 따라 상기 동적 모듈을 다운받는다.
또한, 상기 다운로드 관리자는 센서 노드가 배치된 후 추가된 동적 모듈의 정보를 포함하는 동적 모듈 테이블; 및 상기 프로그램 메모리의 빈 페이지 정보를 갖는 프로그램 메모리 페이지 리스트;를 포함하며, 상기 동적 모듈 테이블은 상기 메타데이타 패킷의 정보와 상기 동적 모듈이 로드된 프로그램 메모리 주소 정보를 갖는다.
상기 목적을 달성하기 위한 본 발명에 따른 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한 확장 가능한 가상 머신을 이용한 리프로그래밍 방법은, 바이트 코드가 저장되는 캡슐; 상기 캡슐에 저장된 바이트 코드를 수행하며 동적 모듈을 호출하는 바이트 코드 인터프리터; 업데이트되는 동적 모듈의 프로그램 메모리 주소가 저장되는 심볼 테이블; 및 네트워크를 통해 새로운 동적 모듈을 다운받고 이를 상기 프로그램 메모리로 로드하며, 상기 동적 모듈이 저장된 프로그램 메모리의 주소를 상기 심볼 테이블에 업데이트하는 다운로드 관리자;를 포함하는 무선 센서 네트워크 환경에서의 확장 가능한 가상 머신을 이용한 리프로그래밍 방법에 있어서, 상기 네트워크를 통해 메타데이터 패킷이 수신되면 상기 다운로드 관리자는 네트워크를 통해 새로운 동적 모듈을 다운받아 이를 상기 프로그램 메모리로 로드하는 제1단계; 상기 동적 모듈이 저장된 프로그램 메모리의 주소를 상기 심볼 테이블에 업데이트하는 제2단계; 상기 동적 모듈을 호출하는 바이트 코드를 상기 바이트 코드 인터프리터가 해석하여 해석 결과에 따라 상기 심볼 테이블을 검색하여 동적 모듈이 저장된 프로그램 메모리의 주소를 얻는 제3단계; 및 상기 제3단계에서 얻어진 프로그램 메모리 주소에 따라 상기 바이트 코드 인터프리터는 그 바이트 코드에 해당하는 동적 모듈을 호출하여 호출된 동적 모듈이 실행되도록 하는 제4단계;를 포함하여 이루어짐을 특징으로 한다.
상기 메타데이타 패킷이 수신되면 상기 다운로드 관리자는, 센서 노드가 배치된 후 추가된 동적 모듈의 정보를 가지고 있는 동적 모듈 테이블을 이용하여 업데이트해야 할 동적 모듈의 버전을 판단한다.
또한, 상기 동적 모듈의 프로그램 메모리로의 로드는, 상기 다운로드 관리자로부터의 프로그램 메모리의 부트 로더에게의 쓰기 요청에 따라, 상기 프로그램 메모리의 빈 페이지 정보를 갖는 프로그램 메모리 페이지 리스트의 빈 페이지에, 상기 동적 모듈이 로드된다.
그리고 상기 제4단계에서 상기 바이트 코드 인터프리터는, 상기 바이트 코드의 해석 결과에 따라 얻어지는 심볼 테이블 주소를 바탕으로 함수 포인터를 이용하여 바이트 코드에 해당하는 동적 모듈을 호출하도록 되며, 상기 동적 모듈 호출시 상기 바이트 코드 인터프리터는 함수의 인자로 오퍼런드 스택의 포인터를 상기 동적 모듈로 전달한다.
상기 동적 모듈은 상기 전달받은 오퍼런드 스택의 포인터를 사용하여 계산에 필요한 피연산자를 상기 오퍼런드 스택에서 가져오고, 피연산자를 연산한 결과를 다시 상기 오퍼런드 스택의 포인터를 사용하여 오퍼런드 스택에 넘겨주고 리프로그래밍 과정을 종료한다.
이하, 본 발명의 바람직한 실시 예를 첨부된 도면을 참조하여 보다 상세하게 설명한다. 단, 하기 실시 예는 본 발명을 예시하는 것일 뿐 본 발명의 내용이 하기 실시 예에 한정되는 것은 아니다.
도 1은 본 발명에 따른 무선 센서 네트워크 노드 위에 올라가는 확장 가능한 가상 머신의 전체 구조를 보여주고 있다.
본 발명에 따른 확장 가능한 가상 머신(101)은 에너지 측면에서 효율적으로 센서 노드 내부의 어플리케이션을 리프로그램하기 위해서 가상 머신(105)에 추가적으로 동적 모듈(104)을 실행 중에 로드하고 링킹하는 기능을 가지는 모듈을 추가한다.
기존의 가상 머신(105)이 정적인 기능(107)만을 가지기 때문에 센서 노드를 다시 프로그램하기 위해서 바이트 코드만을 사용해야 하고, 바이트 코드 인터프리터(106)가 바이트 코드로 된 어플리케이션을 실행하기 위해 인터프리테이션, 오퍼런드 스택, 바이트 코드의 스케쥴 등의 많은 실행 오버헤드를 가지기 때문이다. 따라서 확장 가능한 가상 머신(101)은 동적 모듈(104)을 실행 중에 동적으로 로드하고 링킹하기 위해 다운로드 관리자(102)와 심볼 테이블(103)을 가진다.
우선, 확장 가능한 가상 머신(1)의 바탕이 되는 소프트웨어 플래폼을 살펴보 면, 무선 센서 네트워크 어플리케이션은 일반적으로 TinyOS(109)를 운영 체제로 사용하여 센서 노드를 프로그램한다. TinyOS(109)는 센서, 엑츄에이터, 통신을 위한 디바이스 드라이버와 기본적인 스케줄러 기능을 제공한다.
TinyOS(109)환경에서 센서 노드의 어플리케이션의 리프로그램을 가능하게 하기 위해 만들어진 기존의 가상 머신(105)은 TinyOS(109) 상에서 동작한다. 확장 가능한 가상 머신(101)의 바탕이 되는 기존의 가상 머신(105)은 간단히 바이트코드 인터프리터(106) 역할을 한다.
그리고 바이트코드는 캡슐(Capsules)(108) 단위로 저장된다. 각 캡슐(108)의 바이트코드는 특정 이벤트가 발생하면 수행된다. 여기서, 특정 이벤트는 Clock, Send, Receive 세 가지로 정의하고 있다. Clock은 센서 노드의 내부 타이머 인터럽트에 의해 발생한다. Send는 센서 노드가 패킷을 네트워크로 보낼 때 발생한다. Receive는 패킷을 받으면 발생한다.
확장 가능한 가상 머신(101)의 핵심은 어플리케이션에서 필요한 연산을 하는 부분을 동적 모듈(104)로 작성하여 이 동적 모듈(104)의 프로그램 이미지를 네트워크를 통해 배치된 센서 노드에게 동적으로 로드하고 링킹할 수 있다는 것이다. 통상 상기 동적 모듈(104)은 어플리케이션의 계산 부분을 구현한다.
도 2는 동적 모듈(104)이 실제 센서 노드의 프로그램 메모리(201)에 로드되고 링크되는 과정을 설명하기 위한 도이다.
프로그램 메모리(201)는 무선 센서 네트워크 환경에서 사용되는 마이크로 컨 트롤러의 프로그램 메모리이다. 이 프로그램 메모리(201)는 플래쉬 메모리이므로 한 번의 쓰기 단위가 한 페이지 256바이트 단위로 이루어진다. 동적 모듈(104)을 프로그램 메모리(201)에 쓰기 위해 다운로드 관리자(102)는 프로그램 메모리(201)의 페이지를 관리한다.
프로그램 메모리(201)에 코드를 쓰기 위해서는 부트 로더 코드 영역(204)에 코드를 쓰는 코드가 포함되어야 한다. 프로그램 메모리(201)의 안전을 위해서 어플리케이션 코드 영역(203)의 코드가 프로그램 메모리(201)에 코드를 쓸 수 없기 때문이다.
마이크로 컨트롤러를 사용하는 센서 노드의 프로그램 메모리(201)는 도 2에서처럼 초기 센서 노드를 환경에 배치할 때 TinyOS(109), 확장 가능한 가상 머신(101)이 프로그램 메모리(201)의 상위 부분에, 부트 로더(202)가 하위 부분에 로드된다.
이에, 동적 모듈(104)은 중간의 빈 프로그램 메모리(201)의 공간의 임의의 위치에 저장되게 된다. 동적 모듈(104)은 확장 가능한 가상 머신(101)의 바이트 코드 인터프리터(106)로부터 호출 시 함수의 인자로 오퍼런드 스택(509)의 포인터를 가지게 된다. 이를 이용해 계산에 필요한 피연산자를 가져오고 계산된 결과를 다시 확장 가능한 가상 머신(101)에게 전달한다.
도 3 및 도 4는 확장 가능한 가상 머신(101)의 다운로드 관리자(102)의 구조 및 기능을 설명하기 위한 도이다.
확장 가능한 가상 머신(101)은 기존의 가상 머신(105)을 동적으로 만들기 위해 다운로드 관리자(102)와 심볼 테이블(103)이 필요하다. 다운로드 관리자(102)는 동적 모듈(104)을 네트워크로부터 다운로드하고, 확장 가능한 가상 머신(101)의 바이트 코드 인터프리터(106)가 동적 모듈(104)을 호출하는 바이트 코드를 수행할 경우, 그 동적 모듈(104)을 호출할 수 있도록 다운받은 동적 모듈(104)을 센서 노드의 프로그램 메모리(201)에 로드한다.
다운로드 관리자(102)가 동적 모듈(104)을 네트워크로부터 다운로드하는 과정은 다음과 같다.
우선, 어플리케이션 개발자는 센서 노드를 리프로그램할 경우 호스트 머신에서 새로운 프로그램을 작성한다. 개발자는 에너지 측면에서 효율적으로 무선 센서 네트워크를 다시 프로그램하기 위해 새로 작성하는 프로그램을 기존의 가상 머신과 같이 어플리케이션을 위한 바이트 코드와 추가적으로 많은 계산이 필요한 부분은 동적 모듈(104) 형태로 구현하여 작성해야 한다.
개발자는 새롭게 작성된 어플리케이션을 센서 노드에게 전달하기 위해 도 3과 같이 새로운 동적 모듈(104)의 이미지가 있다는 것을 알리기 위한 메타데이타 패킷(301)을 네트워크를 통해 보낸다.
이 패킷(301)은 동적 모듈(104)을 호출하는 바이트 코드의 이름과 동적 모듈(104)의 버전, 사이즈, 전체 패킷 수 정보를 포함한다.
그리고 이 패킷(301)을 받은 센서 노드는 동적 모듈(104)을 다운로드 하기 위한 상태가 된다. 다운로드 관리자(102)는 이 정보를 가지고 업데이트해야 할 동 적 모듈(104)이 최신 버전인지 동적 모듈 테이블(302)과 비교하여 판단한다.
동적 모듈 테이블(302)은 센서 노드가 배치된 후, 새롭게 확장 가능한 머신(101)에 추가된 동적 모듈(104)의 정보를 포함한다. 이 동적 모듈 테이블(302)에는 메타 데이타 패킷(301)의 정보와 동적 모듈(104)이 로드된 실제 프로그램 메모리(201) 주소가 저장된다.
다운로드 관리자(102)는 추가적으로 프로그램 메모리 페이지 리스트(303)를 관리하고, 동적 모듈(104)의 프로그램 이미지를 완전히 다운받은 후, 상기 프로그램 메모리 페이지 리스트(303)에서 빈 페이지(304)에 동적 모듈(104)의 이미지를 쓰라고 부트 로더(202)에게 요청한다.
센서 노드는 이 패킷(301)을 전달한 호스트 머신 혹은 센서 노드에게 새로운 동적 모듈(104)의 이미지를 요청한다.
도 4는 다운로드가 완료된 후 프로그램 메모리(201)에 동적 모듈(104)의 코드 이미지를 쓰는 과정을 나타낸다. 다운로드 관리자(102)는 동적 모듈(104)을 프로그램 메모리(201)에 쓰기 위해서 부트 로더 코드 영역(204)에 들어있는 프로그램 메모리(201)에 코드를 쓰는 함수를 호출한다.
부트 로더(202)에게 쓰기 요청시 다운로드 관리자(102)는 동적 모듈(104)의 코드가 저장되어 있는 프로그램 메모리(201)의 주소와 이 동적 모듈(104)이 프로그램 메모리(201)에 저장될 주소를 함수 호출시 인자로 넘겨주게 된다.
부트 로더(202)에 포함된 프로그램 코드를 쓰는 함수는 이 인자를 사용하여 동적 모듈(104)을 실제 프로그램 메모리(201)에 로드한다. 성공적으로 프로그램 메모리(201)에 동적 모듈(104)을 쓰고 나면 이 동적 모듈(104)이 저장된 프로그램 메모리(201)의 시작 주소를 심볼 테이블(103)에 업데이트한다.
심볼 테이블(103)은 동적으로 업데이트된 모듈(104)의 실제 프로그램 메모리 주소를 저장하는 테이블이다. 즉, 이 심볼 테이블(103)은 다운로드 관리자(102)에 의해서 업데이트된다.
도 5는 본 발명에 따른 확장 가능한 가상 머신(101)의 동적 모듈(104)을 링킹하는 과정을 나타낸 도이다.
확장 가능한 가상 머신(101)은 동적 모듈(102)을 호출하는 바이트 코드를 실행하면 이 바이트 코드는 바이트 코드 인터프리터(106)에 의해 해석되어 심볼 테이블(103)의 주소를 가지고 온다(①),(②).
상기 바이트 코드 인터프리터(106)는 심볼 테이블(103)의 주소를 가지고 함수 포인터를 이용해 바이트 코드에 해당하는 동적 모듈(104)을 호출한다(③). 동적 모듈(104)을 호출 시 확장 함수의 인자로 오퍼런드 스택(509)의 포인터를 전달한다.
오퍼런드 스택(509)은 확장 가능한 가상 머신(101)이 동적 모듈(104)과 계산에 필요한 혹은 계산된 데이터를 서로 주고받는 유일한 방법이다. 동적 모듈(104)은 함수 포인터에 의한 함수의 호출시 인자로 전달받은 오퍼런드 스택의 포인터(509)를 사용하여 계산에 필요한 피연산자를 오퍼런드 스택(509)에서 가지고 온다.
그리고 상기 동적 모듈(104)은 이 피 연산자를 사용하여 어플리케이션의 계산 부분을 수행하고 그 결과를 다시 오퍼런드 스택(509)의 포인터를 사용하여 오퍼런드 스택(509)으로 넘겨준다.
즉, 도 6의 본 발명의 전체적인 동작 흐름도에 나타낸 바와 같이, 본 발명은 기본적인 종래의 가상 머신(105)의 기능에 동적으로 모듈을 추가하고 수정하기 위해 다운로드 관리자(102)와 심볼 테이블(103)을 가지며, 네트워크를 통해 메타데이타 패킷(301)이 수신되면 다운로드 관리자(102)는 수행을 시작한다.
다운로드 관리자(102)는 네트워크를 통해 새로운 동적 모듈(104)을 다운받고 이를 프로그램 메모리(201)로 로드한다(S10). 그리고 동적 모듈(104)이 저장된 프로그램 메모리(201)의 주소를 심볼 테이블(103)에 업데이트한다(S20).
동적 모듈(104)의 업데이트가 끝나고 동적 모듈(104)을 호출하는 바이트 코드가 수행되면 동적 모듈(104)이 실행된다. 즉, 바이트 코드 인터프리터(106)는 실행할 바이트 코드가 어떤 동적 모듈(104)을 호출할지 해석하고, 심볼 테이블(103)을 검색하여 동적 모듈(104)이 저장된 프로그램 메모리(201) 주소를 얻는다(S30).
이 주소를 사용해 바이트 코드 인터프리터(106)는 그 바이트코드에 해당하는 동적 모듈(104)을 호출한다(S40). 호출된 동적 모듈(104)은 어플리케이션 실행시 필요한 부분을 수행한다(S50).
또한, 바이트 코드 인터프리터(106)는 동적 모듈(104)을 호출할 때 전달 인자로 가상 머신(105)의 오퍼런드 스택(509)의 포인터를 넘겨준다. 동적 모듈(104) 은 계산에 필요한 피연산자를 오퍼런드 스택(509)에서 가져와 피연산자를 연산한 결과를 다시 오퍼런드 스택(509)에 넘겨주고 수행 과정을 종료한다.
상술한 바와 같이, 본 발명의 바람직한 실시 예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 또는 변형하여 실시할 수 있다.
이상에서 살펴본 바와 같이, 본 발명은 무선 센서 네트워크 환경에서 센서 노드의 프로그램을 변경하기 위해 다운로드 관리자 모듈과 심볼 테이블을 센서 노드 내부의 가상 머신에 추가시켜 네이티브 코드로 된 프로그램을 실행가능하게 함으로써 기존 가상 머신의 오버헤드를 줄여 프로그램의 변경과 실행을 저전력화 할 수 있는 효과가 있다.
또한, 본 발명은 동적인 프로그램 변경이 필요한 모든 무선 센서 네트워크 어플리케이션에 적용 가능한 효과가 있다.
Claims (13)
- 바이트 코드가 저장되는 캡슐 및 상기 캡슐에 저장된 바이트 코드를 수행하며 동적 모듈을 호출하는 바이트 코드 인터프리터를 구비하는 무선 센서 네트워크 환경에서 이미 배치된 센서 노드를 다시 프로그램하기 위한 가상 머신에 있어서,업데이트되는 동적 모듈의 프로그램 메모리 주소가 저장되는 심볼 테이블; 및네트워크를 통해 새로운 동적 모듈을 다운받고 이를 상기 프로그램 메모리로 로드하며, 상기 동적 모듈이 저장된 프로그램 메모리의 주소를 상기 심볼 테이블에 업데이트하는 다운로드 관리자;를 더 포함하여 구성되는 것을 특징으로 하는 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한 확장 가능한 가상 머신.
- 제 1 항에 있어서, 상기 동적 모듈은상기 프로그램 메모리의 중간의 빈 공간 임의의 위치에 로드되는 것을 특징으로 하는 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한 확장 가능한 가상 머신.
- 제 1 항에 있어서, 상기 다운로드 관리자는상기 네트워크를 통해 수신되는 메타데이타 패킷에 따라 상기 동적 모듈을 다운받는 것을 특징으로 하는 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한 확장 가능한 가상 머신.
- 제 3 항에 있어서, 상기 메타데이타 패킷은상기 동적 모듈을 호출하는 바이트 코드의 이름, 동적 모듈의 버전, 사이즈, 전체 패킷 수에 대한 정보를 포함하는 것을 특징으로 하는 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한 확장 가능한 가상 머신.
- 제 3 항에 있어서, 상기 다운로드 관리자는센서 노드가 배치된 후 추가된 동적 모듈의 정보를 포함하는 동적 모듈 테이블; 및상기 프로그램 메모리의 빈 페이지 정보를 갖는 프로그램 메모리 페이지 리스트;를 포함하는 것을 특징으로 하는 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한 확장 가능한 가상 머신.
- 제 5 항에 있어서, 상기 동적 모듈 테이블은상기 메타데이타 패킷의 정보와 상기 동적 모듈이 로드된 프로그램 메모리 주소 정보를 갖는 것을 특징으로 하는 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한 확장 가능한 가상 머신.
- 바이트 코드가 저장되는 캡슐; 상기 캡슐에 저장된 바이트 코드를 수행하며 동적 모듈을 호출하는 바이트 코드 인터프리터; 업데이트되는 동적 모듈의 프로그램 메모리 주소가 저장되는 심볼 테이블; 및 네트워크를 통해 새로운 동적 모듈을 다운받고 이를 상기 프로그램 메모리로 로드하며, 상기 동적 모듈이 저장된 프로그램 메모리의 주소를 상기 심볼 테이블에 업데이트하는 다운로드 관리자;를 포함하는 무선 센서 네트워크 환경에서의 확장 가능한 가상 머신을 이용한 리프로그래밍 방법에 있어서,상기 네트워크를 통해 메타데이터 패킷이 수신되면 상기 다운로드 관리자는 네트워크를 통해 새로운 동적 모듈을 다운받아 이를 상기 프로그램 메모리로 로드하는 제1단계;상기 동적 모듈이 저장된 프로그램 메모리의 주소를 상기 심볼 테이블에 업데이트하는 제2단계;상기 동적 모듈을 호출하는 바이트 코드를 상기 바이트 코드 인터프리터가 해석하여 해석 결과에 따라 상기 심볼 테이블을 검색하여 동적 모듈이 저장된 프로그램 메모리의 주소를 얻는 제3단계; 및상기 제3단계에서 얻어진 프로그램 메모리 주소에 따라 상기 바이트 코드 인터프리터는 그 바이트 코드에 해당하는 동적 모듈을 호출하여 호출된 동적 모듈이 실행되도록 하는 제4단계;를 포함하여 이루어짐을 특징으로 하는 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한 확장 가능한 가상 머신을 이용한 리프로그래밍 방법.
- 제 7 항에 있어서, 상기 메타데이타 패킷은상기 동적 모듈을 호출하는 바이트 코드의 이름, 동적 모듈의 버전, 사이즈, 전체 패킷 수 정보를 포함하는 것을 특징으로 하는 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한 확장 가능한 가상 머신을 이용한 리프로그래밍 방법.
- 제 7 항에 있어서, 상기 메타데이타 패킷이 수신되면 상기 다운로드 관리자는센서 노드가 배치된 후 추가된 동적 모듈의 정보를 가지고 있는 동적 모듈 테이블을 이용하여 업데이트해야 할 동적 모듈의 버전을 판단하도록 된 것을 특징으로 하는 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한 확장 가능한 가 상 머신을 이용한 리프로그래밍 방법.
- 제 7 항에 있어서, 상기 동적 모듈의 프로그램 메모리로의 로드는상기 다운로드 관리자로부터의 프로그램 메모리의 부트 로더에게의 쓰기 요청에 따라, 상기 프로그램 메모리의 빈 페이지 정보를 갖는 프로그램 메모리 페이지 리스트의 빈 페이지에, 상기 동적 모듈을 로드하도록 된 것을 특징으로 하는 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한 확장 가능한 가상 머신을 이용한 리프로그래밍 방법.
- 제 7 항에 있어서, 상기 제4단계에서 상기 바이트 코드 인터프리터는 상기 바이트 코드의 해석 결과에 따라 얻어지는 심볼 테이블 주소를 바탕으로 함수 포인터를 이용하여 바이트 코드에 해당하는 동적 모듈을 호출하도록 된 것을 특징으로 하는 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한 확장 가능한 가상 머신을 이용한 리프로그래밍 방법.
- 제 11 항에 있어서, 상기 동적 모듈 호출시 상기 바이트 코드 인터프리터는 함수의 인자로 오퍼런드 스택의 포인터를 상기 동적 모듈로 전달하도록 된 것을 특 징으로 하는 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한 확장 가능한 가상 머신을 이용한 리프로그래밍 방법.
- 제 12 항에 있어서, 상기 동적 모듈은 상기 전달받은 오퍼런드 스택의 포인터를 사용하여 계산에 필요한 피연산자를 상기 오퍼런드 스택에서 가져오고, 피연산자를 연산한 결과를 다시 상기 오퍼런드 스택의 포인터를 사용하여 오퍼런드 스택에 넘겨주도록 된 것을 특징으로 하는 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한 확장 가능한 가상 머신을 이용한 리프로그래밍 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020060026518A KR100803290B1 (ko) | 2006-03-23 | 2006-03-23 | 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한확장 가능한 가상 머신 및 이를 이용한 리프로그래밍 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020060026518A KR100803290B1 (ko) | 2006-03-23 | 2006-03-23 | 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한확장 가능한 가상 머신 및 이를 이용한 리프로그래밍 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20070096316A true KR20070096316A (ko) | 2007-10-02 |
KR100803290B1 KR100803290B1 (ko) | 2008-02-13 |
Family
ID=38803168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020060026518A KR100803290B1 (ko) | 2006-03-23 | 2006-03-23 | 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한확장 가능한 가상 머신 및 이를 이용한 리프로그래밍 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100803290B1 (ko) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101031001B1 (ko) * | 2009-03-27 | 2011-04-25 | 대구대학교 산학협력단 | 단일 홉 무선 센서 네트워크를 위한 고속 병렬 소프트웨어 업데이트 방법 |
KR101037981B1 (ko) * | 2008-12-30 | 2011-05-31 | 대구대학교 산학협력단 | 원격 코드 업데이트가 용이한 무선 센서 노드용 운영체제 구현방법 |
US8589907B2 (en) | 2008-05-02 | 2013-11-19 | Gangneung-Wonju National University Industrial Academy Cooperation Group | Method for updating firmware of sensor nodes on a wireless sensor network and firmware updater using for the same method |
EP3028402A1 (en) * | 2013-07-31 | 2016-06-08 | Smiths Detection Inc. | Dynamic sensor driver loading over a wireless network |
CN115421859A (zh) * | 2022-09-13 | 2022-12-02 | 科东(广州)软件科技有限公司 | 配置文件的动态加载方法、装置、计算机设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8489860B1 (en) | 1997-12-22 | 2013-07-16 | Texas Instruments Incorporated | Mobile electronic device having a host processor system capable of dynamically canging tasks performed by a coprocessor in the device |
US6418310B1 (en) | 1999-08-05 | 2002-07-09 | Ericsson Inc. | Wireless subscriber terminal using java control code |
KR100378565B1 (ko) | 2000-10-27 | 2003-03-31 | 주식회사 수에즈 | 동적환경을 제공하는 자바플랫폼 프로그램모듈이 탑재된 이동통신 단말기 |
KR100503077B1 (ko) * | 2002-12-02 | 2005-07-21 | 삼성전자주식회사 | 자바 실행 장치 및 자바 실행 방법 |
-
2006
- 2006-03-23 KR KR1020060026518A patent/KR100803290B1/ko not_active IP Right Cessation
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8589907B2 (en) | 2008-05-02 | 2013-11-19 | Gangneung-Wonju National University Industrial Academy Cooperation Group | Method for updating firmware of sensor nodes on a wireless sensor network and firmware updater using for the same method |
KR101037981B1 (ko) * | 2008-12-30 | 2011-05-31 | 대구대학교 산학협력단 | 원격 코드 업데이트가 용이한 무선 센서 노드용 운영체제 구현방법 |
KR101031001B1 (ko) * | 2009-03-27 | 2011-04-25 | 대구대학교 산학협력단 | 단일 홉 무선 센서 네트워크를 위한 고속 병렬 소프트웨어 업데이트 방법 |
EP3028402A1 (en) * | 2013-07-31 | 2016-06-08 | Smiths Detection Inc. | Dynamic sensor driver loading over a wireless network |
EP3028402A4 (en) * | 2013-07-31 | 2017-04-05 | Smiths Detection Inc. | Dynamic sensor driver loading over a wireless network |
CN115421859A (zh) * | 2022-09-13 | 2022-12-02 | 科东(广州)软件科技有限公司 | 配置文件的动态加载方法、装置、计算机设备及存储介质 |
CN115421859B (zh) * | 2022-09-13 | 2024-02-13 | 科东(广州)软件科技有限公司 | 配置文件的动态加载方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
KR100803290B1 (ko) | 2008-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Dunkels et al. | Contiki-a lightweight and flexible operating system for tiny networked sensors | |
CN108491216B (zh) | 一种Android系统无感知应用安装升级的方法 | |
Koshy et al. | VMSTAR: synthesizing scalable runtime environments for sensor networks | |
CN102402427B (zh) | 一种Java应用程序的更新方法及装置 | |
EP1845444B1 (en) | Virtual execution system for ressource-constrained devices | |
Taherkordi et al. | Optimizing sensor network reprogramming via in situ reconfigurable components | |
WO2012100535A1 (zh) | 超级内核组件的升级方法和计算机系统 | |
JP2008510238A (ja) | オペレーティングシステム | |
EP1416378A2 (en) | Discard class after translation | |
WO2012142798A1 (zh) | 一种应用程序加载的方法及装置 | |
CN111061638A (zh) | 一种iOS系统调试的方法、装置及服务器 | |
CN106569880B (zh) | 一种Android应用间动态共享资源的方法及系统 | |
CN107577609B (zh) | 一种基于主机端动态链接的嵌入式系统动态模块调试系统 | |
KR100803290B1 (ko) | 무선 센서 네트워크 환경에서 프로그램을 변경하기 위한확장 가능한 가상 머신 및 이를 이용한 리프로그래밍 방법 | |
JP6198229B2 (ja) | 並列化可能で信頼できるインストールのためのインストールエンジン及びパッケージフォーマット | |
CN113312046A (zh) | 子应用页面处理方法、装置和计算机设备 | |
JPH0991143A (ja) | データ処理方法および装置 | |
Polakovic et al. | Experience with safe dynamic reconfigurations in component-based embedded systems | |
CN112015522A (zh) | 系统功能扩展方法、装置及计算机可读存储介质 | |
Felser et al. | Dynamic software update of resource-constrained distributed embedded systems | |
Polakovic et al. | Building reconfigurable component-based OS with THINK | |
Oliver et al. | Reprogramming embedded systems at run-time | |
RU2554509C2 (ru) | Система и способ распределенных вычислений | |
CN114816475A (zh) | 一种嵌入式操作系统的更新方法、装置、设备和介质 | |
CN104281443B (zh) | 利用tcm实现代码、数据替换的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20120201 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |