보통 항공기 임무컴퓨터 같은 것들은 소위 크리티컬하다고 해서, 오류도 있으면 안되고 실시간성도 마이크로 세컨드 수준으로까지 정밀하게 보장되어야 합니다.
그래서 이런 분야는 전통적인 RTOS를 주로 사용하는데요. 고신뢰성이 필요하고, 관련 인증서가 필요하기 때문에 오픈소스를 사용하기에는 적합하지 않습니다.
간단히 말해, 항공기용 RTOS를 사용하려는데, 이 OS를 항공기 체계통합하는 회사에서 직접 오픈소스로 구성할 경우에는, OS 밑바닥부터 응용프로그램까지 전부 싹 다 항공소프트웨어 인증을 받아야 합니다. 인증 받는게 엄청 어렵기 때문에 진짜 골치아프죠. 그래서 이런 인증을 미리 받아놓은 상용 RTOS의 라이센스를 구매해서 인증 과정을 생략하는 쪽이 훨씬 더 효과적이죠.
최근에는 VxWorks라는 RTOS 제품이 거의 시장을 석권하고 있다고 봐도 무방할 것 같습니다. 이 제품 자체는 무슨 윈도우 OS 처럼 거대한 것이 아니고, 그냥 아주 작은 사이즈의 커널단 달랑 하나에 불과합니다. (악세사리로 여러가지 기능을 더 덧붙여 커널을 구성하는 것은 가능함) 아키텍쳐도 엄청 단순하고요. 이렇게 단순해야 신뢰성을 더 높일 수 있으니까요. 응용프로그램 개발자는 OS가 제공해 주는 기본적인 서비스와 함수를 갖다 쓰도록 하는 식으로 프로그램을 개발합니다.
또 한국에서는 MDS라는 회사에서(지금은 한컴으로 인수되어 한컴MDS 이더군요.), 자체 RTOS로 NEOS라는 제품을 가지고 있는데요. 이 NEOS RTOS도 일부 군용으로 사용된 사례가 있는 것 같습니다. T-50 임무컴퓨터용 RTOS로도 테스트 성공했었다고 하는데, 초기 버전의 T-50에는 VxWorks 기반이었던 것 같고, 수출용은 NEOS 기반 독자적인 것으로 간다는 글은 있던데 실제로 그렇게 되었는지는 잘 모르겠네요.
또 K2 전차의 메인 컴퓨터가 NEOS RTOS 기반인 것 같습니다. (이거 듣고 깜짝 놀랐네요. 굉장한 성과입니다.)
다만, NEOS가 VxWorks보다 나은 점은 국산이라는 것과 가격 외에는 없다고 생각됩니다. 업데이트가 활발한 것 같지도 않구요(국산 소프트웨어의 제일 큰 문제점). 미래지향적인 OS는 분명 아닙니다.
리눅스는 기본적으로 시분할운영체제이기 때문에, RTOS가 아니지만, Xenomai[제노마이] 같은 프레임웍을 추가로 깔아주거나 하는 식으로 간단히 RTOS화 시킬 수가 있습니다. 제노마이는 오픈소스이고, 또 VxWorks에서 제공하는 API나 서비스까지 호환시켜서 제공을 해 주기 때문에, VxWorks 정품이 없어도 제노마이 가지고 연습도 할 수 있죠. 하지만, 기본 리눅스 커널 위에 올라타는 구조이기 때문에, 계층구조가 더 복잡해지고 용량도 커집니다. 더 복잡하니까 신뢰성도 떨어지겠죠. 또 오픈소스다 보니, 항공기 인증도 직접 받아야 됩니다. 결국 군용으로 사용하기에는 문제가 많아서 안 씁니다.
하지만, 군용이라 하더라도 항공기 임무컴퓨터 같은 것 말고, 조금은 덜 크리티컬한 쪽에는 리눅스를 사용해 볼만 하죠.
실제로, T-50/FA-50 비행기에도 리눅스를 적용한 모듈이 있더라고요.
삼차원 지도 모듈(DMM) 부분입니다. 지상 작전 영역의 지형을 최대한 정밀하게 3D로 모델링해서 데이타베이스로 집어넣고 제공을 해 주는 별도의 컴퓨터에서 리눅스를 OS로 적용을 했더라고요. 이 리눅스 컴퓨터에서 지형 정보를 중앙의 미션 컴퓨터로 가져온 후, 센서를 통해 얻은 정보와 비교해 가면서 자동화된 추락경고 / 추락방지 / 지형트래킹비행 / 목표물 타켓팅을 하도록 시스템이 구성되어 있나 봅니다.
이 기술 관련해서 특허도 출원되어 있더라고요. (특허등록번호 KR101193115B1)
이와 비슷하게, 수리온 헬리콥터의 통합 전자 지도 컴퓨터(IDMC) 모듈 역시 리눅스 운영체제 기반으로 구성이 되었나 봅니다.
기타 육군 방공 지휘통제 경보체계(ADC2A), 합동전술 데이터링크 체계(JTDLS) 역시 리눅스 기반인가 봅니다. 아주 좋은 선택이라고 생각합니다.
리눅스를 사용하는 것이 좋은 이유는, POSIX 규격(표준 유닉스)이기 때문입니다.
VxWorks 같은 것들은 기본적으로 POSIX라고 보기는 어렵거든요. (억지로 집어넣어서 호환된다고는 하지만 기본적으로는 아니라는 이야기)
MS윈도우 같은 경우에도, 제대로 된 POSIX가 아니기 떄문에 동떨어진 느낌이 있고요. 윈도우로 할 바에야 리눅스로 가는 쪽이 더 낫죠. 즉 최소한의 표준적인 환경이 제공된다면, 더 통일적이고 일관된 개발체계를 유지 발전시키기가 수월하기 때문이죠.
다만 현재까지는 리눅스가 핵심적인 RTOS를 대체하지는 못합니다.
하지만... 근미래에, 제노마이 추가 설치 같은 방식 말고, 리눅스 커널 소스코드를 분기시켜서 RTOS용 리눅스커널을 상용화하는 회사가 나오면 좋겠구나 싶더군요. 지금 당장은 이런 솔루션에 대한 수요가 없겠지만, 시스템이 점점 고도화되면서 어느 시점이 되면 VxWorks 가지고 감당이 안되는 시점이 분명히 올 거에요. 그때 리눅스 기반 RTOS 커널을 가지고 있고 또 그에 대한 항공기 인증까지 완비된 솔루션이 존재하고 있다면 최우선적으로 선택될 것입니다. 왜냐면, 리눅스 기반이 되면 엄청나게 거대한 개발도구들과 오픈소스 기반을 그대로 가져다 쓸 수 있게 되므로, 개발생산성 측면에서 비교가 안 될 것이기 때문입니다. 여기에 거대한 사업기회가 있을지도 모른다는 생각도 드네요.
* 참고
1. http://blog.naver.com/PostView.nhn?blogId=bongkwankim&logNo=150148292553
2. https://patents.google.com/patent/KR101193115B1/ko
3. http://www.neosrtos.com