IT 이야기/IT

[센서 노드 운영 체제 정리 (3/6)] 센서 노드 운영체제 설계 모델의 장단점

옥사마 2010. 3. 25. 14:03
   
      ㅁ 프로그래밍 모델
          - 유한 상태 머신 기반 모델
            ㅁ 장점
                - 프로그램이 간단, 작은 코드 이미지
            ㅁ 단점
                - 새로운 기능 추가 시 기존 상태들과의 의존성 및 예외 처리에 세심한 고려 필요
                - SW 확장에 대한 제약성 및 프로그래밍이 힘듬
          - 컴포넌트 기반 모델
            ㅁ 장점
                - 높은 모듈성을 가지므로 독립적인 SW 모듈의 재사용성 및 확장성을 가짐
            ㅁ 단점
                - 컴포넌트 설계 시, 타 컴포넌트들과의 의존성 및 인터페이스 등을 신중이 고려해야 함
                - 사용자 측면에서 새로운 컴포넌트와 응용 프로그래밍이 어려움
          - 전통적 API 기반 모델
            ㅁ 장점
                - 사용자에게 친숙한 프로그래밍 환경 제공하며 프로그래밍이 쉬움              
            ㅁ 단점
                - 필요한 모든 기능을 API로 구현해야 하므로 코드 이미지가 커지고 로직이 복잡해짐         
               
      ㅁ Scheduling model
          - 비선점 (run to completion)
            ㅁ 장점
                -  태스크들 간의 우선 순위와 스케줄링을 고려하지 않아도 되므로 구현이 용이
                - 문맥 교환에 대한 오버해드가 적음
            ㅁ 단점:
                - cpu 사용율이 낮고 병행 제어가 안됨
          - 선점
            ㅁ 장점
                - 병행 제어가 가능
            ㅁ 단점
                - 스케줄링을 잘 고려해야 하며, 문맥 교환에 대한 오버해드가 큼
         
      ㅁ 수행 제어 모델
          - 이벤트 구동 방식
            ㅁ 장점
                - 이벤트 수행에 비선점 방식의 스케둘링 사용
                - 구현이 단순하고 실행 이미지가 작음
                - 문맥 교환이 불필요
                - 단일 스택을 가지므로 요구되는 데이터 메모리 크기가 작음
             ㅁ 단점
                - 인터럽트와 같은 이벤트에 의해 태스크가 처리되므로 태스크들간의 유연한 스케줄링이 힘듬
                - 따라서 복잡한 센서 노드 응용에 적용하기가 힘듬
          - 멀티 스레딩 방식
              ㅁ 장점
                  - 이벤트 구동 방식보다 프로그램의 용이성과 스케줄링 유연성 우수
                  - 복잡한 센서 노드 응용 프로그램을 구현하는데 장점
              ㅁ 단점
                  - 각 태스크마다 별도의 스택이 요구
                  - 태스크 들 간의 문맥 교환에 따른 오버헤드가 큼
                  - 스케줄링 정책/응용 프로그래밍에 대한 세심한 고려 필요
                  - 태스크들 간의 동기화, 통신을 위한 API 등이 필요
                  - 디버깅이 매우 힘듬
         
      ㅁ 소프트웨어 구조 모델
          - 단선 (monolithic) 구조: HW 종속 코드와 독립 코드들간의 계층적 경계가 없고 기능별 모듈이 없음
            ㅁ 장점
                - 구현이 쉬움
            ㅁ 단점
                - HW 플랫폼 변경 시 소스 전 영역에 대한 수정이 필요
                - 재사용성, 이식성이 현저히 저하됨
          - 모듈 구조:  HW 종속 코드와 독립 코드들 간의 계층적 경계없이 소프트웨어 기능 중심으로 구분
            ㅁ 장점
                - 단선적 구조보다는 소프트웨어 확장이 용이하고 모듈 재사용성이 우수
            ㅁ 단점
                - HW 플랫폼 변경 시 모든 소프트웨어 모듈의 수정과 모듈간의 의존성을 신중히 고려해야 함
          - 수직적 (vertical) 계층 모델: 추상화를 통해 HW 독립 계층과 종속 계층을 분리함
            ㅁ 장점
                - 운영 체제의 확장이 용이
                - HW 플랫폼이 변경되더라도 HW 독립 계층에는 수정 없이 사용 가능
            ㅁ 단점
                - 구현이 복잡하고 코드가 커짐
          - 수직 수평적 (vertical-horizontal) 계층 모델: 수직적 계층 구조에서 동일한 계층의 SW 모듈간 독립성을 개선
            ㅁ 장점
                - SW 모듈에 대한 확장성, 재구성 및 재사용이 용이
                - 플랫폼 기반의 프로그래밍 환경 구성이 가능
            ㅁ 단점
                - SW 모듈 간의 인터페이스 및 의존성을 잘 고려하여야 함