Contiki의 가장 큰 특징 중 하나는 동적 모듈 재할당 기능을 제공한다. 또한, Contiki는 기본적으로 TinyOS와 같이 이벤트 기반 모델을 지원하고 있다. protothread 를 통해 제한적 이기는 하지만 별도의 스택 예약 없이 멀티 스레드 같은 코드 간의 동기화를 제공한다. 하지만 지역 변수를 사용할 수 없고 지정된 구간에서만 블로킹(blocking)이 가능하다는 제약이 있어 완전한 멀티 스레드 센서 네트워크 운영체제라고는 할 수는 없다. 역시 센서 네트워크 노드용 운영체제를 타깃으로 만들어졌기 때문에 2kB의 RAM과 40kB 정도의 매우 작은 ROM을 가지고도 구동이 가능하다.
네트워크 스택으로는 uIP와 Rime를 지원하는데, uIP는 Contiki 개발자인 Adam Dunken이 제안한 8비트 MCU를 위한 TCP/IP 스택으로 임베디드 환경에서 인터넷을 통해 통신을 할 수 있도록 해준다. uIP는 현재 1.0버전까지 나와 있으며 IP,ICMP, UDP와 TCP 프로토콜을 지원한다. 일부 기능을 제거하고 느린 MCU 등을 고려하여 디자인되었기 때문에 delayed acknowledgment 기능을 제외하면 25,000kB/s 정도의 최대전송률을 가진다.
BSD socket 인터페이스와 유사한 protosocket 라이브러리를 제공하여 사용자가 쉽게 TCP 연결을사용할 수 있도록 하였으며, DNS resolver, SMTP e-mail sender, telnet server 등 다양한 애플리케이션을 함께 제공하고 있다. Rime은 저전력 통신을위해 구현된 멀티 홉 데이터 전송 프로토콜로 플러딩(flooding)을 통해 best-effort 브로드캐스팅을 지원하며, 컴파일 된 코드가 600byte 미만의 간단한 프로토콜이다.
Contiki 응용을 테스트해 볼 수 있는 Cooja라는 시뮬레이션 툴을 제공하며, 최근 릴리즈된 2.1버전에서는 노드의 에너지 상황을 실시간으로 모니터링 할 수 있는 기능을 지원한다.
현재 Contiki는 2010년 2월 16일 기준으로 2.4 ver. 이 릴리즈 되어 있으며 MAC, uIP/Rime, SensorAPI, COOJA/MSPSim, Micaz & Sensinode 8051/CC2430 등이 새롭게 지원되거나 확장되었다.
댓글 없음:
댓글 쓰기