리눅스의 창시자로 알려진 개발자 리누스 토발즈는 최근 열린 코리아리눅스포럼2012 현장에서 여전히 '모놀리틱(monolithic) 커널'에 대한 예찬론을 펼쳐 눈길을 끌었다. 모놀리틱 커널은 뭐고, 그게 왜 좋다는 것일까?
발단은 포럼 첫날인 지난 11일 오후 마지막 순서로 토발즈가 참석자들과 함께한 질의응답 시간이었다. 한 엔지니어가 자신을 '눈떠서 잠들 때까지 리눅스만 만지는 사람'이라 소개한 뒤 토발즈에게 리눅스 커널 아키텍처를 놓고 모놀리틱 커널이 마이크로(micro) 커널보다 우월하다고 주장한 걸로 아는데 어째서인가 의견을 구하면서다.
모놀리틱이니, 마이크로니 하는 표현은 운영체제(OS)와 그 구성요소를 설계하는 방식을 '커널(kernel)'이라 불리는 핵심기능 처리 소프트웨어(SW) 구조 특성으로 구분짓는 개념으로 쓰인다.
우선 모놀리틱커널은 작업관리, 메모리관리, 파일시스템, 장치드라이버, 통신프로토콜 등 커널이 제공할 기능을 동일한 메모리공간에 모두 포함해 실행하는 구조를 가리킨다. 지난 1980년대 등장한 상용 유닉스 대부분이나 오픈소스 기술인 리눅스의 커널이 대표적인 모놀리틱 계열로 분류된다.
그와 반대로 마이크로커널은 OS의 주소변환, 시스템호출 처리, 일부 드라이버, 프로세스관리동작 가운데 문맥교환 등 하드웨어와 밀접하게 관련된 기능만 커널에 구현하는 형태다. 덕분에 커널 소스가 작고 간결해진다. 이는 유지관리가 쉽고, 휴대용 시스템 OS 기술로 쓸 수 있으며, 나머지 필요기능을 사용자 영역에 서버형태로 구현하기에 클라이언트-서버 모델 분산시스템에 적용이 쉬운 방식으로도 묘사된다.
그러나 토발즈는 마이크로커널은 통신환경에 따라 '오버헤드(성능저하)'를 유발하고 시스템 복잡성을 높인다며 순수한 마이크로커널의 특성은 10년전에 사라졌다고 말했다. 이어 (맥OS X 기반기술 일부를 이루는) BSD는 '완전한' 모놀리틱커널이라며 이는 10년전 사라진 마이크로커널에 비해 훨씬 쓰기 쉽고 빠르며 나은 성능을 보장한다고 주장했다.
일각에서는 최근 개발되는 OS 대부분이 마이크로커널 구조라고 간주한다. 마이크로소프트(MS)의 윈도NT 계열로 분류되는 윈도XP, 비스타, 7, 8, 그리고 윈도폰8 커널이 여기 해당된다는 것이다. 하지만 BSD와 마하(Mach) 커널도 파일시스템과 네트워크 등을 통합한 애플의 맥OS X 시리즈로 나온 이후 순수 마이크로커널과는 거리를 벌린 설계방식으로 평가된다. 오히려 맥OS도 8 버전대 이전까진 모놀리식커널 사례로 분류된다.
즉 엄격한 범주로 마이크로커널에 분류될만한 PC용 OS 설계기술은 찾기 어려워 보인다. 모놀리틱커널을 줄기삼으면서도 유연성을 요할 때 마이크로커널 설계 방법을 도입하거나, 마이크로커널을 띄우고 고성능을 요하는 하부구조에 그 세부기능을 포함하는 식으로 '하이브리드커널'이라 부를만한 설계방법이 주류라는 평가다.
리눅스커널 아키텍처도 기본적으로 모놀리틱커널이지만 간결한 유지관리와 안정성 등 마이크로커널의 장점을 얻기 위해 '모듈' 구조를 채택하고있다. 수만개 드라이버를 포함한 리눅스 커널 오픈소스 개발 환경에서 특정 기능을 개발자 수천명이 단일한 결과물로 작업하려면 서로 충돌하거나 영향을 주지 않도록 모듈화된 설계구조가 유용했다는 게 토발즈의 설명이다.
관련기사
- "리눅스커널 개발자, 남자 99.9%…여자는"2012.10.13
- 구글 PC용 리눅스 '구분투' 비밀 밝히다2012.10.13
- 리눅스의 아버지 "넥서스7 대만족"2012.10.13
- "오픈스택은 클라우드계의 리눅스"2012.10.13
토발즈는 개발자들은 기본적인 리눅스 커널 아키텍처를 바꾸지 않으면서 실제 다루려는 특정 기능 이외의 코드를 건드리지 않아도 된다며 소스코드 자체가 모듈화하도록 주력함으로써 최종 컴파일시 단일 어드레스 기반으로 구현될 수 있고, 리눅스를 소형단말기부터 중형 서버, 워크스테이션이나 대형 슈퍼컴퓨터까지 적용시킬 수 있는 유연성을 제공한다고 강조했다.
여러 개발자가 방대한 커널 코드 위에서 서로 혼선 없이 필요한 기능을 발전시키기 위해 코드를 매만지는 작업이 이뤄지고 있는 것은 그 자체만으로도 굉장한 성공이라는 게 그의 생각이다. 이를 원활히 돕기 위해 토발즈는 어떤 기능을 염두에 두고 소스코드를 모듈화할 것인지 고민해 직접 분류하고 있다. 토발즈는 커널 소스에 대한 자신의 역할이 고통스럽기도 하지만 성과와 보람을 느끼는 분야이기도 하다고 언급했다.