맥 OS X의 시스템 구조

맥 OS X의 시스템 구조

강백호 0 750 2001.06.27 03:25
구조 정복, 이것으로 명쾌해진다!
맥 OS X의 시스템 구조

맥 OS X을 맥에 설치한 후 자신의 환경과 용도에 맞게 설정했다면, 이제 잠시 우리가 다루는 이 맥 OS X의 정체가 무엇인지 살펴보는 시간을 갖도록 하자. 맥 OS X의 시스템 구조를 명쾌하게 알게 되면 이를 정복하는 것도 훨씬 쉬워질 것이기 때문이다. 우선 여기서는 맥 OS X을 이루고 있는 기술 구조, 즉 다윈과 그래픽 시스템, 개발환경, 아쿠아 등을 살펴본다.

글·정병훈
I-ON 커뮤니케이션즈 부사장
이메일 : jbhoon@i-on.net

------------------------------------------------------------------------

여기에서 다루게 될 내용은 맥 OS X의 시스템 구조(System Architecture)이다. 사실 이전 맥 OS의 사용자들은 윈도우즈 사용자들에 비해 시스템의 내부 구조에 대해 무관심하거나 혹은 관심을 가질 필요가 없었다. 그 이유는 맥 OS가 최종 사용자에게 최대의 편의를 제공하는 성격을 갖고 있기 때문이다.
하지만 맥 OS가 후발주자인 윈도우즈와 비교되기 시작한 이후 맥보다는 윈도우즈가 내부적으로나 외형적으로 훨씬 많은 발전을 이뤘다는 사실은 부인할 수 없다. 이로 인해 예전에는 맥에서만 작동하던 몇몇 킬러 애플리케이션들(QuarkXPress와 고라이브, 포토샵, 일러스트레이터 등)도 이제는 윈도우즈용으로 먼저 출시되거나 맥용과 윈도우즈용이 동시에 선보일 정도이다. 물론 그래픽이나 전자출판 등 몇몇 업종에서는 아직도 많은 사람들이 맥을 선호하고 있지만 말이다. 사실 시스템 구조 측면에서 봤을 때 맥 OS 9.1은 윈도우즈 2000 계열에 비해 몹시 취약하다고 할 수 있다. 왜냐 하면 현대 OS들이 갖춰야 하는 필수적인 기능인 멀티태스킹과 멀티쓰레딩 등을 OS 차원에서 제대로 지원하지 못하기 때문이다. 따라서 맥매니아들이 보기 좋은 아쿠아 인터페이스로 치장해놓았을 뿐만 아니라 그 기반에 깔린 강력한 시스템 구조로 인해 매우 안정적이고 강력한 성능을 지원하는 맥 OS X의 등장에 지나치게(?) 열광하는 것도 어찌보면 당연한 일이다. 그럼, 윈도우즈 XP와 리눅스, 유닉스와 비교해도 전혀 뒤지지 않는, 아니 오히려 월등히 앞설 수 있는 기반을 갖춘 맥 OS X의 시스템 구조를 살펴보자.

맥 OS X의 시스템 구조도

시스템 구조도에서 알 수 있듯이 맥 OS X 기술의 가장 아래에는 마하 커널(Mach Kernel) 3.0과 BSD 유닉스를 기반으로 한 다윈(Dawin)이 있고, 그 위에는 2D 그래픽 시스템인 퀄츠(Quartz)와 3D 산업표준인 오픈 GL, 최고의 멀티미디어 기술인 퀵타임(QuickTime)으로 무장한 그래픽 시스템(Graphic System)이 위치하며, 또 그 위에는 카본(Carbone)과 자바(Java), 클래식(Classic), 코코아(Cocoa)의 개발환경이 자리잡고 있고, 마지막으로 가장 위에는 앞서 언급한 모든 것들을 찰랑거리는 푸른 물빛으로 포장한 아쿠아 인터페이스(Aqua Interface)가 위치한다. 이것이 바로 맥 OS X 시스템 구조의 기본 골격이다.

다윈

앞서 언급했듯이 맥 OS X 기술의 가장 아래에 위치하는 것은 다윈이다. 오픈소스 프로젝트의 일환인 다윈은 실제 맥 OS X 시스템의 코어(Core)에 해당되는 부분을 개발자와 사용자에게 공개하여 개선점과 문제점 등을 수렴하면서 개발을 진행하는 정책을 펼치고 있다. 이러한 다윈은 다양한 OS 관련 기술의 결정체라고 할 수 있는데, BSD 유닉스(Berkely Software Disturibution)에 기반을 두고 있으면서 마하 3.0의 시스템 커널을 채용해 강력한 네트워킹의 지원과 다양한 파일 시스템의 통합, 그리고 다윈의 모듈러 형태의 확장 설계까지 이루었기 때문이다. 이러한 다윈이 바로 맥 OS X의 가장 기본적인 힘이라고 할 수 있다. 그리고 앞서 언급한 기술들을 채용함으로써 얻게 되는 주요 효과는 다음과 같다.

멀티태스킹 지원
마하 커널을 채용함으로써 확실한 멀티태스킹(MultiTasking)을 지원하게 되었다. 즉 이전 맥 OS에서 채용되었던 협력형 멀티태스킹이 아니라 완벽한 멀티태스킹이라고 할 수 있는 선점형 멀티태스킹을 지원하게 된 것이다.

메모리프로텍션 지원
메모리프로텍션(Protected Memory Architecture)을 지원하여 각각의 실행 프로그램에 독립적인 메모리 공간을 할당하게 되었다. 이로 인해 각 프로그램들은 상호 독립적으로 작동하기 때문에 하나의 프로그램이 오동작을 일으키더라 다른 프로그램들은 그 영향을 받지 않는다. 따라서 이제 예전처럼 오류를 일으킨 하나의 프로그램으로 인해 시스템 자체를 재시동해야 하는 불편이 사라졌다.

멀티프로세서 지원
멀티쓰레딩을 지원하는 SMP(대칭형 다중 프로세싱)의 지원으로 인해 멀티프로세서를 사용할 수 있게 되었다.

플러그&플레이를 지원하는 디바이스 드라이버 지원
객체 지향의 디바이스 드라이버 환경(I/O Kit)을 제공하기 때문에 플러그&플레이를 지원하는 디바이스 드라이버를 쉽게 개발할 수 있다.

그래픽 시스템

그래픽 시스템은 화면 처리를 위한 부분으로, 맥 OS X의 2번째 레이어다. 맥 OS X은 화면 처리를 위해 다음과 같은 3가지의 강력한 기술을 제공하고 있다.

퀄츠
2D 화면 표시를 위한 그래픽 엔진인 퀄츠는 그래픽 렌더링 라이브러리와 고성능의 윈도우 서버로 이루어져 있다. 윈도우 서버는 그래픽 카드 등의 하드웨어적인 장치와 관계없이 독립적으로 컬러와 픽셀 윈도우 정보 등을 가지고 있어 손상된 이미지를 자동으로 복구할 수 있다. 또한 포토샵의 레이어 기능과 같이 윈도우 간의 레이어를 합성할 수 있다. 따라서 맥 OS X은 화면을 전환할 때 스위칭 방식을 채택했던 기존의 맥 OS와 달리 두 화면 레이어의 중간값을 보여주는 비디오 믹싱 방식을 채용하고 있다. 이로 인해 화면의 전환시 비디오 프로그램에서 트랜지션을 준 것처럼 부드럽게 처리되는 것이다. 퀄츠의 중요한 또 하나의 기능은 윈도우 비트맵 버퍼링이다. 이것은 쉽게 말하면 화면에 여러 개의 윈도우가 열려 있을 때 위의 윈도우와 아래의 윈도우가 서로 투명한 상태로 각각 표시되는 것을 의미한다. 한편 맥 OS X을 처음 접하는 사람은 무엇보다 화면이 부드럽고 가독성이 우수하다고 느끼게 될 것이다. 퀄츠의 렌더링 엔진은 바로 PDF (Adobe의 Potable Document Format)에 기반하고 있다. 이 때문에 화면에 나타나는 문자가 일반 비트맵 글꼴과는 달리 부드럽다. 즉 독자들이 화면에서 보는 것은 PDF 파일을 보는 것과 동일하다. 또한 화면 상의 모든 결과를 PDF 파일로 저장할 수도 있다. 즉 인터넷이건 개별 프로그램이건 상관없이 모든 화면을 PDF로 만들 수 있다.

오픈 GL
맥 OS X은 애니메이션과 게임, CAD/CAM 등 3D 그래픽을 위해 산업표준인 오픈 GL을 지원한다. 사실 오픈 GL은 기존 맥 OS에서부터 채용되어 왔는데, 맥 OS X에서는 더욱 최적화되어 곧 발표될 맥 OS X용 마야를 비롯한 3D 그래픽 프로그램에서 뛰어난 성능을 발휘하게 될 것이다.

퀵타임
맥 OS X에는 최고의 멀티미디어 기술이라고 할 수 있는 퀵타임의 최신 버전이 포함되어 있다. 이것은 비디오와 오디오, 애니메이션, 그래픽 등과 같은 다양한 미디어 요소들을 편집 및 저장하는 등 다양한 용도로 사용할 수 있다.

개발 환경

상용 프로그램이든 쉐어웨어든 개발자들이 프로그램을 개발하려고 할 때 그들은 기본적으로 시장성이 있는 분야를 염두에 두게 된다. 따라서 시장성이 작은 맥 제품의 개발이 윈도우즈에 비해 현저하게 적을 수밖에 없는 것이다.
이러한 관점에서 볼 때 맥 OS X의 개발환경(Development Layer)은 무척 고무적인 변화라고 할 수 있다. 이전의 맥 OS 환경이라 할 수 있는 클래식과 맥 OS X 지원을 위한 카본, 맥 OS X 전용 개발환경인 코코아, 멀티플랫폼 지원을 위한 자바를 모두 갖추고 있으며 또한 기존 유닉스 프로그램들을 손쉽게 포팅할 수 있는 등 개발자 입장에서 봤을 때 맥 OS X은 그야말로 한번의 개발로 다양한 효과를 누릴 수 있는 환경을 제공한다.

카본
맥 OS X에서 제공하는 카본은 기존의 맥 OS용 애플리케이션에 맥 OS X의 아쿠아 인터페이스와 그밖의 다양한 맥 OS X의 특징들을 제공한다. 즉 기존의 맥 OS용 프로그램을 손쉽게 맥 OS X에서 사용할 수 있도록 해준다.

코코아
코코아는 순수 맥 OS X용 애플리케이션을 위한 환경으로, 객체 지향 기술과 RAD(Rapid Application Development) 툴을 사용하는 맥 OS X 개발자들을 위한 개발환경이다. 맥 OS X 패키지에 들어 있는 3개의 CD 중 개발자 CD를 설치하면 이전 넥스트스텝에서 볼 수 있었던 프로젝트 빌더와 인터페이스 빌더 등의 코코아 개발환경을 확인할 수 있다. 참고로 코코아 개발환경은 자바와 객체지향 언어인 오브젝티브(Objective) C를 모두 지원하고 있어 코코아에서 개발한 프로그램을 자바로 손쉽게 이식할 수 있게 해준다.

자바
자바 개발 환경에서는 맥 OS X에서 100% 순수한 자바 애플리케이션과 애플릿을 개발할 수 있다. 따라서 자바 개발자들의 경우 맥 OS X이라는 새로운 플랫폼으로 이전해도 익숙한 언어로 개발작업을 계속 할 수 있다. 참고로 코코아로 만든 애플리케이션은 쉽게 자바로 이식시킬 수 있다.

유닉스 베이스
맥 OS X은 유닉스를 기반으로 한다. 따라서 기존의 수많은 유닉스 애플리케이션들을 손쉽게 맥 OS X용으로 포팅할 수 있다.

아쿠아

아쿠아는 실제 사용자들이 접하게 되는 사용자 인터페이스 부분으로, ‘보기 좋은 떡이 먹기도 좋다’는 옛말에 걸맞는 아름다운 디자인과 편리한 조작성을 갖췄다. 보이지 않은 곳에 강력함과 안정성, 최신 기술을 내재한 맥 OS X은 이 아쿠아로 인해 아름답고 편리한 인터페이스를 가질 수 있게 된 것이다.
사실 인터페이스에서 기능성을 제외한 아름다움이란 의미가 없는데, 맥 OS X은 그런 점에서도 손색이 없다. 간단한 예를 들어보자. 멀티태스킹을 지원하는 OS들(윈도우즈 2000이나 XP 또는 여타 그래픽 인터페이스를 가진 OS들)에서는 여러 개의 프로그램을 함께 실행하는 경우가 많고 또한 많은 윈도우들을 한꺼번에 열어두는 경우도 많다. 이런 때 저장 대화상자가 타이틀바의 아래에서 열리는 것은 여러 개의 윈도우를 열어뒀을 때 자신의 작업 위치를 혼동하지 않도록 해준다. 이처럼 아쿠아 인터페이스는 기능성도 충분히 고려해 디자인되었다. 그밖에 아쿠아는 화면의 이동이나 움직임 등에 화려한 애니메이션을 추가하였고, 사진 수준인 128×128픽셀의 화려하고 사실적인 아이콘을 제공한다.

마치며

사실 필자를 비롯한 대부분의 맥사용자들은 OS의 내부 구조보다는 외형(인터페이스 부분이나 사용의 편의성 등)에 더 많은 관심을 가졌을 것이다. 그리고 바로 그러한 사용자 측면에서의 1차원적인 접근이 맥 OS의 근원적인 업그레이드를 어렵게 했을지도 모른다. 하지만 맥 OS X은 내부 구조에서부터 완전히 달라졌다. 그리고 그로 인해 보다 안정적이고 강력한 시스템으로 변모했다. 여기에서 소개한 개략적인 시스템 구조가 그것을 잘 설명해준다.

<박스기사>애플이 제공하는 무상 OS, 다윈1.2.1

지난 2000년 11월 17일, 애플은 다윈 1.2.1을 자사 웹사이트(http://www.opensource.apple.com/projects/darwin/1.2/release.html)를 통해 무상으로 배포하기 시작했다(단 이것의 인스톨러를 이용하기 위해서는 맥 OS 8.5 이상의 시스템이 필요하다). 다윈은 GUI를 갖추지 않은 문자 기반의 OS로, 현재 맥 OS X의 기반 기술로 채용되어 있으며 소스 코드가 공개되어 있다. 따라서 개발자나 일반 사용자들은 이 소스를 읽거나 변경할 수 있다. 실제로 다윈을 버추얼 PC에서 사용할 수 있도록 변경하거나 인텔 CPU를 탑재한 컴퓨터에서 동작할 수 있도록 변경한 사용자도 있다고 한다. 또한 유닉스용 애플리케이션을 다윈용으로 이식하는 사용자도 많다고. 하지만 최근 들어서는 이식 수준이 아니라 처음부터 다윈용으로 소프트웨어를 개발하는 움직임이 일고 있다고 한다.
한편 문자 기반의 다윈에는 아쿠아가 아닌 다른 GUI를 탑재할 수도 있는데, 사실 리눅스를 시초로 한 오픈소스 세계에서 독자적인 인터페이스의 개발이란 매우 흔한 일이다. 참고로 다윈에서 사용할 수 있는 GUI로는 ‘X 윈도우 시스템’이 있는데, 이것은 맥 OS X이 발표되기 전부터 있었던 것이다.

<박스기사>PDF의 기본은 EPS와 마찬가지로 포스트스크립이다!

맥 OS X의 전신인 오픈스텝은 2D 그래픽 엔진으로 EPS (Encapsulated Postscript)를 채용하고 있었다. EPS는 쉽게 설명하면 프린터 제어 기능을 갖춘 포스트스크립트 언어를 문자나 그래픽 표현에 특화시킨 것으로, 이미 레이아웃되어 있는 페이지 정보를 애플리케이션끼리 주고받기 위해 개발되었다.
한편 PDF도 EPS와 마찬가지로 포스트스크립트를 출발점으로 하고 있다. 하지만 PDF는 EPS와는 조금 다른 방향으로 진화했다. 즉 PDF는 포스트스크립트의 언어 부분을 심플하게 함으로써 작업의 고속화를 꾀했고 화면 상에 나타나는 결과물이 프린트 결과물과 같은 시각효과를 가지는 전자문서를 표현할 수 있도록 개발된 것이다. 따라서 OS의 그래픽 엔진으로는 EPS보다 PDF가 적합하다고 할 수 있겠다.




◈ 강백호 ─ 맥마당에서 발췌했습니다~

Comments