2015년 10월 29일 목요일

실시간 리눅스를 위한 동기화 프로토콜의 구현 및 검증

리눅스는 오픈 소스 기반의 범용운영체제로서 , 실시간성을 제공하는 시스템에는 적합하지 않다 . 그러나 사용의 편이성과 기존의 가용한 응용이 많은 장점 등이 있기 때문에 , 리눅스 운영체제에 실시간성을 지원하기 위한 연구가 지속되어 왔다 . 이러한 연구는 RT-Linux, RTAI, L4/Fiasco, ADEOS, Xenomai, XtratuM 등에서 찾아볼 수 있다 . 리눅스 커널 자체에서 실시간성을 지원하고자 하는 시도는 리눅스 커널 2.2.X 버전부터 도입된 실시간 선점형 (Real-time preemption) 커널이 있다 . 실시간 선점형 커널은 연성 실시간 시스템을 지원하기 위하여 원래의 스핀락 (raw spinlock) 으로 보호되는 임계 영역 (critical section) 이나 ttys 와 같은 오래된 코드들 외에는 커널의 대부분이 선점 가능하도록 한다 . 이를 위해서 대부분의 커널 스핀락 (spinlock) 은 뮤텍스 (mutex) 로 대체되고 , 모든 인터럽트는 커널 쓰레드로 변경된다 .

실시간 운영체제에서는 응용의 수행시간을 예측가능하게 만들기 위하여 우선순위 역전 (priority inversion) 현상이 반드시 제어되어야 한다 . 실시간 선점형 커널에서는 우선순위 상속 (priority inheritance) 이 지원되어 이를 제어하도록 되어 있다 . 그러나 우선순위 상속은 연쇄 블로킹 (chained blocking) 및 데드락 (deadlock) 문제를 해결하지 못하는 단점이 있다 . 본 원고에서는 RT 패치를 적용한 리눅스 커널에 PCP(Priority Ceiling Protocol) 을 구현하여 연쇄 블로킹 및 데드락 문제를 해결하였다 . PCP 의 구현 방법은 두 가지가 있으며 , [8] 에서 제시된 원래의 PCP 와 그 변형인 IPC(Immediate Priority Ceiling) 이다 . 본 원고에서는 이 두 가지를 모두 구현하여 그 성능을 측정 , 비교하였다 .

Ⅱ 실시간 시스템의 동기화 문제
Ⅲ 실시간 리눅스와 동기화 프로토콜 구현
Ⅳ 동기화 프로토콜의 성능 분석

테스트 자동화 : 언제 어떻게 그리고 얼마만큼 하는 것이 효과적인가

테스트 자동화는 테스터에 의존하는 수작업 테스팅 방법과 비교해서 비용이 효과적이며 , 시간을 절감할 수 있다는 점에서 장점이 부각되고 있습니다 . 그렇다면 , 프로젝트 개발단계에 있어 어느 시점에서 테스트 자동화를 수행하며 , 어떠한 방법에 의해서 , 어느 정도 수준으로 적용하는 것이 효과적인가에 대한 내용을 제시합니다.

▶ 핵심 프로그램 요인
▶ 언제 자동화 하여야 하는가
▶ 어떻게 테스트 자동화 프로그램을 이행하는가
▶ 얼마나 자동화하여야 하는가

리얼타임 시스템 프레임워크 및 아키텍처 part 2

전투기로 보는 리얼타임 시스템의 메시지 아키텍처

고 신뢰성과 안정성을 요구하는 전투기의 메세지 아키텍처를 설명하고자 합니다 .

전투기는 다양한 센서들로 구성되며 , 이 센서가 수집한 정보들을 통해 다양한 입 / 출력이 발생한다 . 레이더 ( 공급자 - 센서 ) 를 통해 주위로부터 수집된 정보를 조종기 계기판 ( 수요자 - 계기판 ) 과 조종석의 유리 창에 HUD ( 수요자 - HUD) 에 동시에 전달되어야 하며 , 같은 정보를 조종사가 보기에 빠른 판단을 하기 위해 수치적인 데이터가 아닌 위험도를 색상으로 등급화하여 전달하는 것도 필요하다 .

Ⅰ . 다양한 센서와 입출력 장치로 구성된 전투기
Ⅱ . Event Channel 아키텍처
Ⅲ . Event Channel 의 제약사항
Ⅳ . 리얼타임을 지원하기 위한 Event Channel 의 내부구조
Ⅴ . 개선된 전투기의 아키텍처