리눅스커널, 20년만에 RTOS(실시간 운영체제) 내장

2024-10-02

리눅스커널 6.12 버전이 공개됐다. 최신 버전은 마침내 실시간(Real time) 리눅스를 내장했다. 앞으로 별도 패치 세트없이 리눅스커널 코드만으로 실시간운영체제(RTOS) 환경을 만들 수 있게 됐다. 20년의 지난한 개발 과정을 거친 실시간 리눅스는 임베디드 분야의 뜨거운 기대를 한몸에 받고 있다.

리누스 토발즈는 지난달 29일 ‘리눅스 6.12‘ 릴리스후보(rc)1 버전을 배포했다.

리눅스 6.12는 RTOS 기능을 위한 ‘PREEMPT_RT’를 메인라인에 병합했다. 이밖에 새로운 스케줄러 ‘sched_ext‘도 새로 추가됐다.

RTOS는 매우 짧은 시간 안에 작업을 처리하도록 설계된 특수 OS다. 밀리초나 마이크로초에 불과한 시간 내 이벤트에 응답하고 데이터를 처리해야 한다. 산업용 제어 시스템, 로봇, 오디오 기기 등 정확한 타이밍을 요구하는 환경에서 쓰인다. 대표적인 RTOS는 윈드리버의 브이엑스웍스(VxWorks)와 블랙베리QNX의 뉴트리노(Neutrino)다. 브이엑스웍스는 미국 항공우주국(NASA)의 화성 탐사선, 보잉 787 항공기의 전자 시스템 제어 등에 쓰이며, 뉴트리노는 자동차의 전자 제어 시스템에 많이 쓰인다.

그동안 리눅스를 RTOS 기반 시스템으로 사용하려면 PREEMPT_RT란 별도의 커널용 패치 세트를 활용해야 했다. 우분투는 PREEMPT_RT를 배포판 커널에 포함시키는 식으로 실시간 우분투를 제공해왔다.

PREEMPT_RT가 처음 만들어진 건 2005년이다. 하지만 실시간 리눅스란 아이디어는 그보다 더 오래 전으로 거슬러 올라간다. 1990년대 후반 리눅스의 실시간 애플리케이션 지원 필요성이 제기되기 시작했다. 초창기 아이디어 제안자들은 리눅스커널과 별도의 실시간 커널을 만들려 했다. KURT, RTAI, RTLinux 같은 프로젝트가 학술적으로 진행됐다.

PREEMPT_RT는 잉고 말나르란 리눅스커널 수석개발자가 여러 학술 프로젝트의 기술을 재구성하면서 기반을 마련하게 된다. 별도의 실시간 커널 대신 기존 리눅스커널을 수정한 방식이었다. 2009년까지 토마스 글릭스너, 피터 질스트라, 로스테트 등의 소규모 팀이 프로토타입이었던 PREEPT_RT를 별도의 패치세트로 통합했다. 이때부터 본격적인 실시간 리눅스 배포판이 구축되기 시작했다.

그리고 오늘날까지 수년에 걸쳐 PREEPT_RT의 여러 요소가 리눅스커널에 포함됐다. NO_HZ, mutexes, Ftrace, Priority inheritance 등이 대표적이다.

20년이란 시간을 지내고 나서야 리눅스커널에 PREEPT_RT가 포함된 이유는 무엇이었을까. 가장 중요한 이유는 신뢰성 때문이었다.

RTOS에서 가장 중요한 특성은 속도보다 신뢰성이다. RTOS는 항상 일관돼야 하며, 버그가 없어야 한다. 아무리 빠른 시간에 작업을 처리할 수 있다고 해도, 그 결과를 믿을 수 없다면 장애에 극도로 민감한 시스템에서 절대 쓸 수 없기 때문이다. RTOS가 사람의 생명과 직결되는 환경에 쓰인 다는 점을 감안하면 된다.

PREEPT_RT는 리눅스커널 메인라인에 들어가기까지 최소 세번의 재작성이 있었다고 한다. 개발팀이 매우 높은 기준을 세웠기 때문이다.

또한 리눅스에 대한 불규칙한 자금 지원도 더딘 개발에 한몫했다. 불충분한 자금으로 각 개발 프로젝트가 자발적 참여자의 헌신으로 힘겹게 이어졌다. 2015년에야 리눅스재단이 PREEPT_RT를 메인라인에 병합하는 작업을 조정하기 위해 실시간리눅스(RTL) 협업 프로젝트를 설립했다. 이 프로젝트에 구글, 인텔, IBM, 알테라, Arm 등이 창립멤버로 이름을 올렸다.

또 다른 장애물은 ‘프린트케이(print_k)’ 함수 작업이었다. 프린트케이는 커널의 디버깅 도구로 활용된다. 그러나 프린트케이는 호출 시 리눅스 프로그램에 지연을 발생시킨다. 실시간 리눅스에서 용납할 수 없는 부분이다. 프린트케이가 여러 상황과 관련돼 있어 수정 때마다 새로운 문제를 일으켰다고 한다. 프린트케이를 수정하는데 여러 제안이 나왔고 논쟁을 거쳐 올해초 타협안이 나왔다. 그리고 PREEPT_RT의 메인라인 병합이 마침내 이뤄지게 됐다.

앞으로 얼마나 많은 RTOS 애플리케이션이 리눅스로 이식될 지는 확실하지 않다. 다만, 커널 차원에서 RTOS 기능을 지원하므로 개발자의 유지보수 어려움을 상당부분 해소해줄 것으로 기대된다. 그동안 RTOS 애플리케이션을 리눅스에서 구동하기 위해 커스텀 설정을 만들고 안정성을 테스트할 수고가 줄어든다. 리눅스 배포판들의 대응 여부도 불확실하다. 우분투의 실시간 버전을 특장점으로 내세웠고 ‘우분투프로‘ 구독자에 한해 해당 기능을 이용하게 했었다. 산업용 장비, 오디오 제작, 항공우주, 의료 장비, 자동차 ECU 등의 부문에서 강세를 이어온 RTOS 제공사가 어떤 대응을 할 것인지 주목된다.

리눅스커널 6.12의 최종 버전은 11월 중 배포될 것으로 예상된다. 그 사이 7개의 rc가 나오면 11월17일 출시되고, rc 8개가 나오면 11월24일 출시될 것으로 예상된다.

글. 바이라인네트워크

<김우용 기자>yong2@byline.network

[무료 웨비나] API연결만으로 가능한 빠르고 쉬운 웹3 서비스 구축

  • 내용 : API 연결을 통해 웹2와 웹3를 끊김 없이 연결하는 최신 융합 기술과 이를 통한 적용 사례를 다룹니다.
Menu

Kollo 를 통해 내 지역 속보, 범죄 뉴스, 비즈니스 뉴스, 스포츠 업데이트 및 한국 헤드라인을 휴대폰으로 직접 확인할 수 있습니다.