ITQ 한글 2010 자격증 한번에 따기 [실습파일], 파티셔닝 운영체제를 위한 경량 TCP/IP 스택의 포팅
2011년 가을 학술발표논문집 Vol.38, No.2(A) 파티셔닝 운영체제를 위한 경량 TCP/IP 스택의 포팅 요 약 본 연구에서는 PPC계열 프로세서를 사용하는 무인항공기의 제어 컴퓨터용 탑재 소프트웨 어를 위한 경량 TCP/IP 네트워크 스택을 개발하는 것을 목적으로 한다. 개발하는 소프트웨어 모듈은 POK라는 파티셔닝 운영체제와 연동하여 개발되도록 한다. 본 연구의 대상인 무인항공 기의 파티셔닝 운영체제를 위한 TCP/IP 스택은 개발된 적이 없으며, 이 연구를 통해 임베디드 시스템을 위한 경량 TCP/IP 스택을 오픈소스 형태로 개발하고자 한다. 개발하는 프로토콜 스 택은 향후 급속도로 확산될 것으로 예상되는 임베디드 시스템에 적용이 가능할 것으로 기대되 는 경량 최적화 기술들을 도입하고 연구하게 되어, 향후 관련 기술을 먼저 확보하고자 한다. 이를 위해 본 연구에서는 경량 네트워크 프로토콜 스택을 파티셔닝 운영체제에 적용하는 방법 에 대하여 기술 하고자 한다. 1. 서 론 최근 다양한 임베디드 시스템이 개발되고, 사용됨에 따라 이들 기기들을 인터넷을 사용하여 연결하려는 시 도가 늘어나고 있다. 이 임베디드 시스템들은 자원이 제한되어 있어서 대부분 uC/OS-II, eCOS, FreeRTOS, TinyOS와 같은 소형의 실시간 운영체제를 채택하고 있 다. 최근 임베디드 및 모바일 기기의 증가로 임베디드 기기를 인터넷에 연결하기 위한 TCP/IP 프로토콜 스택 의 개발에 대한 중요성이 증가하고 있다[1]. LwIP는 소형 임베디드 시스템에 사용하기 위해 개발 된 대표적인 오픈소스 TCP/IP 스택이다[1]. 이 스택은 8비트 마이크로 컨트롤러에 포팅될 수 있으며, 약 40KB 정도의 바이너리 크기를 갖는다. 초기에 이 스택은 유 선 인터넷을 위해 개발되어 최근에는 센서네트워크와 같이 극도로 자원이 제한된 무선 인터넷에도 적용되고 있다. 최근의 센서네트워크에 관한 관심이 급증하면서 무선 센서네트워크를 위한 Webit 라는 네트워크 스택을 개발하였다. 임베디드 웹서버를 위한 경량의 TCP/IP 스 택도 개발되어 다양한 상위 프로토콜이 지원되고 있다. 이 스택은 AT90S8515 RISC 프로세서와 RTL-8019 이더넷 인터페이스를 위한 하드웨어를 지원한다. ARM9 프로세 서와 CS8900A 이더넷을 지원하는 최적화된 TCP/IP스택 도 연구가 진행되었다. 프로토콜 처리 오버헤드와 메모 리 사용량을 줄여서 성능을 개선하는 시도가 LyraNET에 서 제안되었다[1]. 국내에서는 삼성전자와 전자통신연 구원, 일부 대학에서 TCP/IP 스택관련 연구가 진행되어 왔다.이들 프로토콜 스택은 대개 상용 운영체제와 함께 제공되며, 일부 회사 및 연구소가 핵심 최적화 구현 기 술을 보유하고 있다. 그러나, 본 연구에서 대상으로 하 는 무인항공기의 파티셔닝 운영체제를 위한 TCP/IP 스 택은 개발된 적이 없으며, 이 연구를 통해 임베디드 시 스템을 위한 경량 TCP/IP 스택을 오픈소스 형태로 개발 하고자 한다. 개발하는 프로토콜 스택은 향후 급속도로 확산될 것으로 예상되는 임베디드 시스템에 적용이 가 능한 경량 최적화 기술들을 도입하고 연구하여, 향후 관련 기술을 먼저 확보하고자 한다. 본 연구는 경량 네트워크 프로토콜 스택으로 LwIP (Light Weight TCP/IP)를 기반으로 하고 있으며, 파티셔닝 운영체제의 특성을 고려하여 경량 네트워크 스택을 적용하였다. 2. 배경지식 본 연구에서는 파티셔닝 운영체제에 경량 네트워크 프로토콜 스택을 올리는 것으로, 파티셔닝 운영체제의 한 종류인 POK와 경량 네트워크 프로토콜 스택인 2011년 가을 학술발표논문집 Vol.38, No.2(A) LwIP에 대한 연구가 선행되어야 한다. 2.1 경량 네트워크 프토토콜 스택(LwIP) LwIP는 Swedish Institute of Computer Science의 Adam Dunkels에 의해 2000년에 개발되어 현재까지 업데 이트 되고 있는 공개 소프트웨어이다. LwIP 는 자원이 제한된 소형 임베디드 시스템을 위하여 개발이 되었다. 그러므로, LwIP 의 주요 목적은 메모리 사용량의 최소 화에 있다. 하지만, LwIP 에서는 많은 인자들을 통해서 성능과 메모리 사용량간의 조율을 할 수 있도록 구현이 되어 있어[8], 이를 사용하는 설계자에게 융통성을 제 공하고 있다. 또한 LwIP 는 몇 몇의 플랫폼 및 운영체 제에 대하여 근본적으로 운영체제의 유무와 상관 없이 사용이 가능하다. LwIP 를 운영체제에 포팅하기 위해서 는 operating system emulation layer를 구현해주어야 한다. Emulation Layer를 통하여 POK와 LwIP간의 인터 페이스를 맞출 수 있다[1]. LwIP를 이용하는 것은 그림1과 같다. LwIP를 프로세스 로서 구동시키고(TCP/IP 프로세스), 어플리케이션 프로 세스에서 송수신(네트워크) 작업을 사용할 때에 TCP/IP 프로세스를 이용하여 처리를 한다. 예측 가능하기 때문에 보다 관리가 편해진다. 따라서 복잡한 시스템 및 높은 시스템 사용성을 나타내는 프로 그램에 대하여 관리하기 쉬워질 뿐만 아니라, 안전성과 보안성이 보장된다. (그림2. 기본적인 POK의 구조도) POK의 주요 특징은 아래와 같다. 2.2.1 Time management Time Management는 리얼 타임 운영체제의 중요한 특징으로 파티션을 실행 할 때 어느 한 시점이 모든 파티션에게 적용되지 않게 해야 하는 것이 큰 특징이다. 그리고 운영체제에서는 파티션에 대한 스케줄러나 이후에 설명할 Intra partition과 Inter partition의 Communication을 위하여 Time Management를 필요로 하게 된다. POK에서의 파티션과 프로세스의 특성 때문에 많은 기존의 운영체제와는 다른 시간 할당 및 관리가 필요하게 된다. (그림1. LwIP의 실행 형태) 그림1과 같이 어플리케이션 프로세스들을 TCP/IP Communication을 TCP/IP 프로세스를 통하여 처리한다 [1]. 2.2 파티셔닝 운영체제 POK[2] POK(PolyORB Kernel)는 real-time 임베디드 시스템에 사용되는 파티셔닝 운영체제이다. 이 운영체제는 다양 한 아키텍처를 지원하는데, 지원하는 아키텍처로는 x86, PowerPC, Leon3 이 있다. 이번 연구에서는 PowerPC를 사용 하였다. POK에서 가장 중요하게 여겨지는 기능으로는 파티셔 닝 운영체제라는 점이다. 운영체제 위에 여러 개의 파 티션을 만들어 각각의 파티션에 시간 자원과 메모리 자 원을 할당하여 독립된 기능으로서 사용이 가능하다는 점이다. 각각의 파티션은 마치 CPU를 독점하고 있는 것 같은 효과를 가져와 각 파티션이 하나의 PC처럼 사용 된다. 각각의 파티션은 시간 자원과 메모리 자원을 할 당 받는다. 할당을 받은 자원에 대해서만 사용이 가능 하기 때문에 자원의 독점이라든가, 잘못된 메모리 접근 등을 원천적으로 막을 수가 있고, 파티션의 runtime이 2.2.2 Memory management Memory Management는 일반 운영체제와 유사하게 시스템이 실행되고 설정될 때 정의 되어진다. 또한 추후에 프로세스 혹은 파티션 등에 메모리 사용이나 할당 등에 따라 추가적으로 메모리를 할당할 수 있는 인터페이스가 제공된다. 2.2.3 Inter-partitions communications Inter partition Communication은 각 파티션 간의 데이터 전달을 명시하는 것이다. 이 또한 일반적인 운영체제와 다르게 파티션간의 데이터 전달을 명시하는 부분이다. 이는 동일한 시스템 내부 에서 실행 또는 다른 시스템과의 데이터 전달도 가능하다. 2.2.4 Intra-partitions communications Intra partition Communication은 파티션 내부에 프로세스간의 데이터 전달을 의미한다. 프로세스 간의 데이터 전달은 Global Message System을 통하여 2011년 가을 학술발표논문집 Vol.38, No.2(A) 오버헤드 없이 데이터가 전달됨을 목표로 한다. 이러한 Intra partition Communication 방법은 Buffer와 Semaphore로 작성 되어진다. 그리고 세마포어를 통하여 프로세스간의 동기화 문제를 해결할 수 있다. 3. 포팅 방법 LwIP를 운영체제에 포팅하기 위해서는 2가지 고려사항이 있다. 첫 번째로는 emulation layer의 구현이 필요하다. emulation layer는 네트워크 스택과 운영체제 사이의 인터페이스 역할을 하는 것으로서, 세마포어, 메일박스, 쓰레드 생성 등의 기능을 제공한다. 두 번째는 POK의 특성상 LwIP에서 지원되는 모든 함수들은 각각의 파티션에 하나의 라이브러리로 링크되어 사용된다. 3.1 Emulation layer의 구현 operating system emulation layer는 cc.h와 sys_arch.h, sys_arch.c 세 개의 파일로 구성이 된다. 위 파일을 통하여 emulation layer가 구성이 되는데, 네트워크 스택이 운영체제와 독립적으로 동작하기 위해 서는 emulation layer와 같은 시스템 추상 계층이 필요 하다. 시스템 추상 계층의 역할은 네트워크 스택의 초 기화와 운영체제 의존적인 루틴에 대한 맵핑을 해주는 것이다. 네트워크 스택이 사용하는 운영체제의 함수로 는 세마포어, 메일박스, 쓰레드 관리 함수 등이다. 위 의 함수를 이용하여 LwIP와 POK간의 Communication를 보장 할 수 있게 된다. cc.h 에는 변수 정의, sys_arch에서 필요로 하는 macro 를 정의 해 놓았다. sys_arch.c는 LwIP에게 세마포어와, 메일박스, 쓰레드를 지원하여 준다. 위의 기능을 통하 여, POK 위에서 LwIP의 기능을 보장하며, 안정성을 확 보할 수 있다. 3.2 LwIP의 링크 LwIP의 소스를 하나의 라이브러리로 만들어 각 Partition마다 링크 하도록 한다. 링크하는 과정으로는 LwIP의 Source를 'AR' 명령어를 사용하여 라이브러리 형태로 만든다. 그 결과로 만들어진 libLwIP.a를 각 파티션 마다 링크 명령어를 사용하여 연결 시키는 것이다. 그림3을 보면, user code 옆에 LwIP 라이브러리가 링크 되어 있는 것을 볼 수 있다. 4. 결론 본 연구는 파티셔닝 운영체제에 경량 네트워크 프로토콜 스택을 포팅하는 것으로서, 파티셔닝 운영체제의 구조 파악과 LwIP의 사용법에 대하여 연구하였다. 또한 구현되어 있지 않던 네트워크 기능에 대하여 위의 기술한 방법을 통해서 파티셔닝 운영체제에 경량화된 네트워크 기능을 구현 할 수 있었다. (그림3. POK에 포팅된 LwIP의 모습) 감사의 글 본 연구는 한국연구재단을 통해 교육과학기술부의 우주기초원천기술개발 사업(NSL, National Space Lab)으로부터 지원받아 수행되었습니다 (2011-0020905). 참고문헌 [1] LwIP design doc, Adam Dunkels, February 20, 2001 [2] Pok-user, pok team, February 2, 2011 [3] Pok homepage - http://pok.safety-critical.net/ [4] A Dunkels. The uIP TCP/IP Stack for Embedded Microcontrollers web page. Visited 2004-05-21 http://www.sics.se/~adam/uip/ [5] A. Dunkels, B.Gronvall, and T.Voigt. contiki-a lightweight and flexible operating system for tiny networked sensors. In IEEE Emnets-I, 2004. [6] Julien Delange - http://www.linkedin.com/in/juli1 [7] Adam Dunkels - http://www.sics.se/~adam/lwip/ [8] B. Ahlgren, M. Bjorkman, and K.Moldeklev. The performance of a no-copy api for communication. In IEEE Workshop on the Architecture and Implementation of High Performance Commnunication Subsystems, Mystic, Connecticut, USA, August 1995