View Single Post
2006-05-22, 10:10 PM   #2
casaubon
Moderator
 
casaubon's Avatar
 
Registered: Sep 2001
My Mac: iMac 24" 3.06GHz
Posts: 2,400
온라인


Unraveling the Mac OS X Microkernel Myth : May 19, 2006
According to proponents of this myth, Mac OS X is in grave danger because it has a microkernel and Linux doesn't. They're wrong; here's why.
http://www.roughlydrafted.com/image
What is Mach?
마흐는 오래된 BSD 커널을 새로운 멀티프로세싱 컴퍼넌트 기반의 커널로 바꾸고자 하는 의도를 갖고 있었다. 처음 버전에서 마흐는 전혀 마이크로커널이 아니었다. BSD 커널의 하부 부분의 재디자인에서부터 마흐가 시작되었다. 마흐 커널은 유용해지기 위해 BSD 커널의 나머지 부분을 통합시켜야 했으며, 그 결과 마흐는 더 작아진 커널이 아닌, 표준 유닉스 커널보다 더 거대해진 커널이 되었다.


마흐는 또한 표준 커널보다 더 느렸다. 그럼에도 불구하고 마흐 디자인은 1990년대 초반 엄청난 조명을 받았다. 쉬운 포팅성과 다중-프로세서 지원 때문이었다. 우선 넥스트(NeXT)가 마흐/BSD 하이브리드를 1989년에 나온 NeXTSTEP 운영체제에 사용하기 시작하였다.

곧 이어 마흐는 90년대 중반, 모든 마이크로커널이 될 것처럼 지위를 상승시켰다. 운영체제 개발 프로젝트 대다수가 마흐를 관련지었던 시절이었다.
  • AT&T와, Sun 간의 협력인 System V R4가 유닉스 세상을 점령할 것으로 두려워한 유닉스 벤더들은 OSF를 결성하여 OSF/1에 대한 지원을 발표했다. OSF/1은 마흐 상에서 돌아가는 공개/표준 유닉스였다.

  • 유닉스를 완전히 재작성한 GNU Project도 새 커널, HURD의 기반으로서 마흐를 선택하였다.

  • IBM 또한 새로이 마흐 기반인 Workplace OS로의 이주 계획을 발표하였다. Workplace OS는 AIX에서부터 OS/400, DOS, OS/2의 모든 것을 돌리면서 여러가지 하드웨어 플랫폼에서 작동가능하도록 되어 있었다.

  • mkLinux 프로젝트, 그리고 클래식 맥 오에스를 CoplandNuKernel로 이주시키기 위한 일환으로서 애플도 마흐를 사용하였다.


What Caused The Spectacular Failure of Mach's Microkernel?
마흐는 이종 하드웨어 상에서 돌아갈 수 있는 멀티프로세싱, 분산 시스템이라는 목적을 달성하였다. 마흐의 다음 목표는 커널 공간에서 BSD를 완전히 떠나는 것이었다. 마흐 3.0은 진정한 마이크로커널 시스템을 추구하였으며, 그에 따라 BSD와 같은 커널공간 외부에서 돌아가는 외부 운영체제를 지원할 수 있도록 하는 의도를 지니고 있었다. 이론상 마흐는 동시에 여러 개의 외부 운영체제를 돌릴 수도 있었다.

이러한 목표를 달성하기 위한 노력은 처절하게 실패하고 말았다. 커널 바깥에서 운영체제 기능을 수행하는 데에서 나오는 퍼포먼스의 문제는 처치하기 어려운 문제를 야기시켰다. 일반적으로 마이크로커널 디자인과 최적화는 대단히 복잡하다. 더군다나 마이크로커널에 대한 기본 개념과 일반적인 컴퓨팅의 목적에 대한 필요는 잘 들어맞지 않는 것으로 드러났다.

어떤 마이크로커널은 디자인대로 잘 작동하였지만, 마이크로커널로서 작동하는 마흐가 가진 기본적인 전제사항과 커널 바깥에서 개별적으로 돌아가는 운영체제의 잠재성은... 기술적으로 끝임이 90년대 중반에 드러났다. 그에 따라서 마흐 마이크로커널과 마흐를 마이크로커널로 쓰려했던 모든 프로젝트가 결국 사라지게 되었다.

대신 실질적으로 마흐가 교체하려 했던 팻(fat) 커널이 전면에 나섰다. 오늘날 BSD는 전통적인 팻 커널로 이뤄져있다. AT&T Unix System V R4 팻 커널에 기반하는 Sun의 Solaris와 GNU처럼 유닉스 커널의 클린룸 버전을 의도하였지만 GNU/HURD처럼 마이크로커널을 사용하려하지 않는 리눅스가 그러하다.





__________________
  Reply With Quote