Currently, wireless sensor networks are used for monitoring the environments that humans are difficult to access. Hence, changes in the environments have a dramatic effect on the data returned from sensor nodes. According to environmental changes, wireless sensor networks should be frequently reprogrammed.
The characteristics of sensor nodes in wireless sensor networks are to be resource-constrained. Above all, power is one of the critical resources. So, reprogramming must be efficient from a energy point of view.
We propose The Extensible Virtual Machine (EVM) to reprogram deployed sensor nodes with energy efficiency. The remarkable features of the EVM is dynamic modules for application specific processing logics. Modules reduce the overhead of interpretation , operand stack and TinyOS task queues in comparison with bytecodes for processing logics. The modules is dynamically linked to monolithic programm image. application developers can reprogram sensor nodes with modules as well as bytecodes.
Our evaluation shows that modules achieve the performance improvement of about 20 for complex processing logics such as greedy forwarding algorithm and about 4 to 10 for simple processing logic such as avg., min., and max over bytecodes for same processing logics. Though modules have more update cost than bytecodes, it can be retrieved after several times of executions. Therefore, EVM provides energy-efficient reprogramming mechanism in spite of update cost.
이 논문에서는 무선 센서 네트워크의 노드를 네트워크를 통해 다시 프로그램하기 위한 방법으로 확장 가능한 가상 머신을 설계하였다.
무선 센서 네트워크 어플리케이션은 주로 1년 이상의 장시간 사용을 목적으로 배치된다. 그러므로 네트워크로 부터 받은 테이터나 소프트웨어의 업데이트 등의 이유로 센서 네트워크 어플리케이션은 다시 프로그램 할 수 있어야 한다. 그러나 센서 노드는 보통 네트워크 인프라가 없는 환경이나 사람이 접근하기 어려운 곳에 배치되므로 네트워크를 통해 다시 프로그램 하는 것이 필수적이다.
일반적으로 센서 노드는 제한된 파워를 가지므로 다시 프로그램하는 과정이 에너지 관점에서 효율적이여야 한다. 이 효율성은 프로그램 코드의 전송과 수행을 말한다.
센서 노드의 가장 대표적인 운영체제로 사용되고 있는 TinyOS는 배치된 센서 노드를 다시 프로그램하기 위해 XNP 방식을 사용한다. 이 방식은 새롭게 컴파일된 프로그램 이미지를 센서 노드에 보내서 프로그램을 다시 수행하도록 한다. 그러나 프로그램의 약간의 수정이 있더라도 전체 프로그램 이미지를 보내야 한다는 단점을 가진다. 이 밖에 가상 머신을 사용하여 TinyOS의 XNP가 가지는 네트워크 패킷 전송 비용을 줄이는 Mat$é$가 있다. 이 방식은 바이트 코드를 통해 단지 몇 개의 패킷을 이용해 프로그램의 전송이 가능하지만 전송된 바이트 코드를 가상 머신 위에서 동작 시켜야 한다는 수행 과정의 오버헤드가 있다. 현재 센서 네트워크 노드는 일반적인 계산 과정의 수행이 라디오 통신보다 부담이 적다. 그래서 네트워크 안에서 계산을 통해 전체 에너지 소모를 줄이고 센서 네트워크 어플리케이션의 전체 사용 시간을 증가시키는 추세이다. Mat$é$는 계산이 많은 어플리케이션을 수행하게 되면 적은 양의 코드 전송으로 얻은 에너지 이득을 계산 과정에서 다 잃어버리게 된다.
위에서 살펴 본 센서 네트워크의 특징과 기존의 방식을 볼 때 네트워크를 통해 효율적으로 센서 노드를 리프로그램하기 위해서는 프로세싱 관점에서 TinyOS 처럼 효율적이야 하고 코드 전송 관점에서는 Mat$é$ 가상 머신 처럼 효율적이야 한다. 이 두 가지 필요 조건을 만족하기 위해 우리는 확장 가능한 가상 머신을 설계하였다. 확장 가능한 가상 머신의 핵심 요소는 노드가 수행 중에 동적으로 추가되는 계산을 위한 모듈이다. 이 모듈은 사용자가 정의한 바이트 코드에 의해 가상 머신에서 인터프리터되어 동적으로 수행된다. 네트워크 안에서의 계산을 네이티브 코드를 통해 수행하므로 가상 머신의 계산 오버헤드를 줄였고 동적으로 모듈을 추가하여 프로그램 전체를 전송하는 TinyOS 보다 유연한 코드 전송 방식을 제공한다.
실험 결과에서 우리가 제안한 가상 머신은 TinyOS 보다 효율적인 코드 전송 방식을 가지고 Mat$é$ 가상 머신보다 효율적인 코드 수행을 한다.