기글 하드웨어 소프트웨어 포럼
앤드류 타넨바움은 MINIX라는 운영체제를 개발하신 네덜란드의 교수님이십니다. MINIX는 마이크로 커널을 사용하며 버전 1-2는 교육용으로 배포되었으며 3은 임베디드 시스템용으로 BSD라이센스 밑에 배포되고 있습니다.
리누스 토발즈는 LINUX의 개발자입니다. LINUX는 모놀리식 커널을 사용하며 GPL라이센스하에 배포되고 있습니다. 초기 리눅스는 MINIX를 사용해야만 동작이 가능했으나 곧 완전히 독자적인 커널로 배포되게 되었습니다.
모놀리식 커널은 마이크로 커널에 비해 모듈화 등이 덜 이루어지고 커널에 통째로 파일 입출력등의 이런저런 기능이 들어간다는 특징이 있습니다. 마이크로커널은 이러한 기능들이 커널과 별개의 모듈 등으로 제작됩니다.
그래서, 그 미닉스 개발자인 앤드루 타넨바움과 리눅스 개발자인 리누스 베네딕트 토발즈님이 1992년에 논쟁을 한 적이 있습니다. 시작은 타넨바움님(ast)이 리눅스 운영체제의 구조가 낡았다는 글을 미닉스 유즈넷 (comp.os.minix) 에 올린 것에서부터였습니다. ast님이 문제삼은 것은 리눅스가 (당시 대세인 마이크로커널에 비해 떨어진다고 믿어지던) 모놀리식 커널 구조를 사용했다는 점과 당시 리눅스는 80386대상으로 개발되어 다른 cpu로 포팅이 힘들다는 점이었습니다. 리누스는 마이크로커널에 비해 모놀리식 커널이 이론상으론 떨어진다고 인정하면서도 아직도 GNU/Mach(hurd 커널)이 미완성이며 공개된 유닉스계열 운영체제중 가장 쓸만한 운영체제는 리눅스라는 점을 가리켰습니다. 포터빌리티에 관해서는 개인이 하는 소규모 프로젝트이니 이해해 달라고 했습니다. 하지만 워낙 민감한 토픽이었던 만큼 여기서 글은 끝나지 않고, 리누스, 타넨바움을 포함해 여러개의 추가적인 댓글이 달리면서 논쟁은 한참, 더 깊게 들어가면서 이어집니다.
현재는 리눅스가 압도적인 포터빌리티와 규모를 가지고 있고 미닉스는 이제 임베디드 시스템을 포함한 소규모 시장을 겨냥하는 정도지만, 해당 스레드를 보면 당시 컴퓨터 geek들의 시각을 잘 알 수 있습니다.
해당 논쟁의 원문은 밑의 링크에서 확인 가능합니다. (구글 그룹 - comp.os.minix 유즈넷)
https://groups.google.com/forum/?hl=ko#!search/comp.os.minix/comp.os.minix/wlhw16QWltI/XdksCA1TR_QJ
하나 좋은 사례를 보자면 wine 이 있는데 이게 전부 userland 로 구현을 해서 상당히 느려서 욕도 많이 먹고 그랬지만 하드웨어 발전도 있었고 오히려 이거 덕분에 리눅스 외 타 OS 에서 이걸 사용해서 윈도우 프로그램을 돌릴수가 있었죠 ( 덕분에 freebsd 에서 wow 재미있게 했습니다. opengl 게임은 시스템에서도 지원해서 매우 빠르지만 롤이나 기타 directx 는 변환이 필요해서 wine 의 성능이 중요하죠 )
다른 사례로는 mac os x 가 있고 ( 순수하진 않지만! ) 단순히 마이크로 커널이라고 하는 자체만으로는 빛을 보기는 힘들것 같습니다만 제 생각에는 제온파이, 쿠다, opencl 이 마이크로 커널이 조합이 되어 특정 프로그램, 전용 프로그램 가속이 아닌 시스템 전체의 가속화가 되어 수정없이 프로그램을 구동하면 좋겠다 생각은 했었는데.. 가상화쪽에 유리할거 같지만.. 꿈만 같은 이야기~ 잠자는 숲속의 허드에게는 꿈도 희망도 없는..
근본이 다른 아키텍처로 이식된것중에 netbsd 가 토스터로 이식된 사례가 있죠?? :) ( 웃자고 하는 이야기입니다~ )