1. 가상화와 마이크로커널 가상화(Virtualization)란, ‘컴퓨터 시스템의 자원들을 이용하여 여러 개의 실행환경을 제공하도록 해 주는 하드웨어 혹은 소프트웨어적인 방법’이라고 정의할 수 있다.
이것을 가능하게 하는 기술로는 프로세서에 대한 에뮬레이션?하드웨어 혹은 소프트웨어 파티셔닝?시분할 기법 등의 다양한 방법들이 존재한다. 가상화 기술은 역사가 깊다.
그 뿌리를 찾아 들어가면 1950년대까지 거슬러 올라간다. IBM은 자사 컴퓨터 시스템을 가상머신 기반으로 동작하도록 하기 위해 많은 연구를 수행했다. 1974년 골드버그는 이러한 가상머신에 대한 다양한 연구를 정리했다.
그는 가상머신(Virtual Machine)이란 ‘컴퓨터 시스템에 대한 하드웨어 혹은 소프트웨어적인 복제품’이라고 정의했고, 이것은 주로 IBM 360과 같은 하드웨어에 대한 운영체제인 OS/360 등의 단점을 극복하기 위해 만들어진 것이라고 밝혔다.
일반적으로 컴퓨터 프로세서는 특권모드(privileged mode)와 비특권모드(non-priviliged mode) 등 두 개의 모드를 가지고 있다. 특권모드(혹은 커널모드)에서는 모든 명령어를 사용할 수 있지만, 비특권모드(혹은 유저모드)에서는 특정 명령어들은 제한되어 있다.
운영체제는 특권모드에서 동작하는 작은 크기의 소프트웨어인 커널(kernel)을 제공한다. 유저모드에서 동작하는 모든 소프트웨어들은 커널에 대한 시스템 호출(system call)을 통해서만 비특권 모드의 명령어들을 실행할 수 있다. 이것은 지금까지도 변함없이 사용되고 있는 운영체제의 기본 원리가 되었다.
이렇게 특권모드에서 동작하는 커널의 크기는 최소화되어야 하고, 아주 작은 크기의 커널을 제공하는 운영체제가 안정적인 컴퓨터 시스템을 구성할 수 있다는 이론이 바로 마이크로커널(microkernel)의 개념을 구성하고 있다.
이 이론의 반대편에 서 있는 커널을 모놀리딕 커널(monolithic kernel)이라고 부른다. 모놀리딕 커널에서는 커널이 많은 일을 하게 되고, 커널의 크기가 매우 커지는 특성을 갖고 있다.
이 두 커널의 구현방식에 대한 대표적인 논쟁이 ‘타넨바움-토발즈 논쟁’이다. 이 논쟁은 1991년경에 뉴스그룹을 통해 운영체제 이론가인 타넨바움 교수가 초기 리눅스 커널이 모놀리딕 커널을 지향하고 있음을 강하게 비판함으로써 촉발되었다.
이에 대해 실용주의자인 리누스 토발즈는 모놀리딕 커널로 마이크로커널보다 더욱 우수한 성능과 확장성을 제공할 수 있다고 맞섰다. 마이크로 커널과 리눅스 커널의 발전사를 돌이켜 보면, 이론과는 별개로, 현실에서는 모놀리딕 커널이 완전한 압승을 거두었음을 알 수 있다.
이 시기에 가상화 기술과 마이크로커널은 불가분의 관계에 있었다. Mach와 같은 운영체제는 마이크로커널을 기반으로 가상머신을 제공하고 있으므로 마이크로커널이 곧 가상머신을 통한 가상화 기술을 의미했었다고 해도 과언은 아닐 것이다.
2. 가상화 기술의 부활 가상화 기술이 지난 수 십 년간 종적을 감춘 데에는 퍼스널 컴퓨터의 보급이 큰 영향을 끼쳤다. IBM이 메인프레임으로 컴퓨터 아키텍처를 주도하던 시대에는 하나의 서버 컴퓨터가 다양한 실행환경을 제공할 필요가 컸지만 워크스테이션과 PC가 대세를 이루면서 하나의 컴퓨터가 단일 운영체제를 제공하는 것이 자연스러운 현상이 되었다.
그리고 현실적으로 사용되고 있는 대부분의 운영체제는 모놀리딕 커널로 구현되어 있었고, 마이크로커널 기반의 운영체제는 상용 시스템이 요구하는 퍼포먼스를 보여 주지 못했다. 이런 이유로 자연스럽게 이 두 종류의 이론적으로만 우수한 기술들은 업계 관심을 끌지 못하고 잊혀졌다.
그러나, 컴퓨터 시스템의 발전이 거듭돼 다시 가상화와 마이크로커널의 필요성이 대두되기 시작했다. 가장 중요한 이슈는 서버 통합(Consolidation)과 고립화(Isolation)에 대한 요구라고 볼 수 있다.
인터넷이 발전함에 따라 서버로 운영되는 시스템이 더욱 복잡해지고, 서버의 개수가 늘어나게 되자 이것을 하나의 시스템으로 묶어 줄 수 있는 기술이 필요하게 되었고, 역설적으로 하드웨어 자원의 10% 밖에 활용되지 못할 서버를 보안상의 이유로 여러 대를 도입하게 되는 불합리한 상황도 발생하게 된 것이다.
가상화는 이러한 문제점에 대한 솔루션을 제공한다. 여러 대의 하드웨어 자원을 하나의 시스템으로 가상화할 수도 있고, 하나의 하드웨어 자원을 파티셔닝을 통해 여러 운영체제가 공존하는 시스템으로 가상화할 수도 있다.
이러한 기술의 도입은 서버 운영에 있어 엄청난 비용 절감의 효과가 있으니 당연히 IT 업계의 초미의 관심사가 될 수밖에 없었다.
서버 통합과 고립화 외에도 가상화의 장점은 다양하게 존재한다. 가상머신을 통해 프로세서나 네트워크에 대한 시뮬레이션을 제공하여 존재하지 않는 하드웨어 자원에 대한 실행환경을 제공할 수 있다.
가상머신을 통해 운영체제를 개발할 수 있고, 가상머신은 강력한 디버깅 환경을 제공한다. 또한, 다양한 레거시 소프트웨어를 새로운 하드웨어나 운영체제에서 실행할 수 있는 방법도 제공한다. 이러한 다양한 장점으로 인해, 이미 가상화 기술은 거스를 수 없는 대세가 됐다.
가상화를 제공하는 기술은 다양하지만 가장 큰 상업적인 성공을 거둔 것은 VMWare라고 할 수 있다. VMWare는 하드웨어 에뮬레이션을 통한 호스트 기반의 소프트웨어인 VMWare Workstation과 VMWare Server를 제공한다.
이것은 호스트 운영체제에서 동작하는 소프트웨어로 윈도우나 리눅스 같은 운영체제상에서 동작한다. VMWare는 ESX Server라는 제품도 가지고 있는데, 이는 하드웨어 자원에 대한 추상화 레벨을 제공하는 하이퍼바이저(hypervisor) 방식이다.
또, XenSource는 오픈소스 가상화 솔루션인 Xen을 제공하고 있다. Xen은 영국의 캠브리지 대학에서 만들어 졌으며, 리눅스 운영체제에서 하드웨어를 유사 가상화(Paravirtualization)를 제공하는 방식을 취하고 있다.
하이퍼바이저는 가상머신모니터(Virtual Machine Monitor, VMM) 혹은 전체 가상화(Full Virtualization)라고도 한다. 전체 가상화는 가상머신 상의 운영체제에 수정이 필요하지 않으며, 대신 실행속도가 유사 가상화보다 느리다. 유사 가상화는 가상머신상에서 동작하도록 하기 위해 운영체제의 수정이 필요하며, 실행속도가 전체가상화보다 빠르다.
이것은 전체 가상화를 위해서는 모든 하드웨어 자원에 대한 추상적인 환경을 제공해야 하는 반면, 유사 가상화는 하드웨어와 거의 유사하지만 완전한 가상화 환경을 제공하지 않으므로 운영체제의 수정이 필요하더라도 하드웨어의 특성을 최대한 이용할 수 있어 더 큰 성능의 향상이 가능하기 때문이다.
<그림 1>과 <그림 2>는 각각 VMWare Server와 Xen의 아키텍처를 보여준다.
3. 임베디드 가상화와 휴대폰
가상화 기술의 부활은 서버 측면에서 시작되었지만 지금은 임베디드 시스템에서도 재현되고 있다. 하드웨어와 소프트웨어의 유기적인 결합으로 특정한 목적을 위해 설계된 시스템인 임베디드 시스템에서는 특정 하드웨어 아키텍처에 소프트웨어가 종속되어 있었다.
휴대폰의 경우에도 GSM이나 CDMA 휴대폰이 원래 목적인 음성통화를 지원하기 위한 모뎀 중심의 아키텍처를 가장 잘 지원하기 위한 실시간 운영체제를 탑재한 소프트웨어가 오랫동안 유지되어 왔다.
하지만, 임베디드 시스템의 하드웨어 기술이 날로 발전하고, 유비쿼터스·컨버전스 등의 용어로 대변되는 임베디드 시스템의 용도가 갈수록 통합됨에 따라 임베디드 시스템에서의 소프트웨어가 차지하는 중요성은 커져만 갔다.
소프트웨어의 규모와 복잡도가 커지고, 하나의 임베디드 시스템에 탑재되는 소프트웨어 기능이 늘어남에 따라 기존의 RTOS 만으로는 이러한 요구사항을 모두 만족시키기가 어려운 상황이 온 것이다.
따라서, 범용 운영체제의 기능을 수용하는 운영체제가 임베디드 시스템에 탑재되기 시작했고, 휴대폰에서도 스마트폰이라는 형태로 심비안·윈도모바일·임베디드 리눅스 등의 다양한 범용 운영체제가 사용되기 시작했다.
이런 운영체제 환경을 갖춘 휴대폰은 단순한 음성통화 외에도 인터넷 접속이나 게임을 비롯한 다양한 실행환경을 제공할 수 있었고, 지금도 휴대폰의 소프트웨어는 계속 진화를 거듭하고 있다.
문제는 이러한 하드웨어와 소프트웨어의 진화가 너무 급격하게 이뤄졌다는 것이고, PC와는 다른 용도를 가진 임베디드 시스템에서는 진화를 가로막는 벽이 너무 크다는 점이다.
첫째, 기존 RTOS 기반에서 구현된 모든 기능을 범용 운영체제 환경에서 모두 새로 개발해야 한다.
둘째, 범용 운영체제의 등장은 필연적으로 바이러스와 같은 Malware의 등장을 동반하게 되고, 이는 임베디드 시스템의 안정성을 해치는 주요 요인이 된다.
셋째, 임베디드 시스템 소프트웨어는 대부분 지적재산권을 갖고 있어 GPL 라이선스를 따르는 리눅스 등의 오픈소스 기반 운영체제를 사용할 수 없다. 넷째, 저전력을 요구하는 휴대형 임베디드 기기의 특성상 듀얼 혹은 멀티 코어가 필수적이므로 이에 대한 지원이 필요하다.
특히, 임베디드 시스템 중에서도 가장 빠른 진화 주기를 가지고 있는 휴대폰에서는 지금 현재도 위에서 열거한 문제점들에 직면해 있고, 이에따라 대응 솔루션이 필요했던 바 가상화 기술이 최적의 솔루션으로 평가받고 있다.
가상화 기술을 통하면 단일 아키텍처에서 여러 운영체제를 지원할 수 있으므로 기존의RTOS 기반 대부분의 소프트웨어가 재사용 가능해 지고, 동시에 리눅스와 같은 범용 운영체제의 다양한 기능을 제공할 수 있게 된다. 가상화된 운영체제는 Malware 자체를 해결할 수 없다고 하더라도 최소한 Malware가 시스템 전체를 망치게(crash) 하는 것을 막을 수 있다.
여러 개의 프로세서가 필요한 아키텍처를 지원할 수 있으며, 이는 전력 소모를 최소로 할 수 있는 아키텍처를 구성할 방법을 제공한다. 이러한 장점으로 인해 가상화 기술이 임베디드 시스템에서의 핵심 기술로서 각광을 받고 있다.
<그림 3>은 TRANGO의 하이퍼바이저 솔루션을 적용한 아키텍처를 보여준다. 휴대폰에 적용되는 하이퍼바이저는 모뎀을 위한 소프트웨어 스택과 운영체제를 위한 소프트웨어 스택, 그리고 DRM과 같은 극명한 보안이 요구되는 시큐리티 스택을 구분(isolate)할 수 있다.
멀티코어가 제공되는 하드웨어에서는 각각의 소프트웨어 스택을 하드웨어적으로 파티셔닝하는 것으로 더욱 확실한 독립성(isolation)을 제공할 수도 있다.
<그림 4>는 VirtualLogix의 VLX 솔루션이다. 펌웨어 업데이트를 위한 디바이스 관리(Device Management)를 별도로 구성할 수 있다는 점이 눈에 띈다. 하지만, 기본적으로는 TRANGO와 동일한 하이퍼바이저 기능을 제공하고 있다.
4. L4 마이크로커널과 퀄컴
TRANGO나 VirtualLogix가 유럽에 기반을 둔 회사라는 점에서 GSM 휴대폰에 이들 솔루션이 일부 실험적으로 적용되고 있지만, CDMA 휴대폰에서는 퀄컴의 선택이 주목을 받고 있다. 퀄컴은 2005년 11월경에 차세대 컨버전스 플랫폼인 MSM7500 칩셋에 L4 마이크로커널을 적용한다고 발표했다.
이후로 많은 변화가 있었지만 퀄컴의 차세대 칩셋에는 L4라는 마이크로커널이 탑재된다.L4는 Jochen Liedke 교수에 의해 개발된 2세대 마이크로커널이다. Liedke 교수의 이름 첫 글자를 따서 L3라는 마이크로커널이 개발되었고, 이를 계승한 마이크로커널의 이름을 L4이다.
L4 마이크로커널 개발 배경에는 마이크로커널이 상용 운영체제 시장에서 실패한 원인이 있었다. 1994년경 마이크로커널 기반의 운영체제와 모놀리딕 커널 기반의 운영체제에 대한 퍼포먼스 비교가 있었고, 그 결과 마이크로커널의 성능이 현저하게 떨어짐이 증명되었다.
이 결과에 대해 Liedke 교수는 이론적으로 마이크로커널에 문제점이 있는 것이 아니라 커널 구현에 있어서 이론적인 장점을 살릴 수 있는 효과적인 구현을 하지 못했기 때문이라고 밝히면서 L4 커널을 제안하였다. 기존의 설계를 모두 버리고 처음부터 새로운 마이크로커널을 설계하였고, 정교한 구현을 통해 우수한 성능을 가진 마이크로커널 기반 운영체제를 만들 수 있다고 주장한 것이다.
마이크로커널의 목표는 커널의 크기를 최소화하는 것이기 때문에 일반적으로 모놀리딕 커널이 가지고 있는 모든 기능을 커널의 바깥으로 내보내는 것이 중요하다. Liedke 교수는 주소공간(Address Space), IPC(Inter Process Communication), 쓰레드(Thread)를 제외한 나머지 기능은 모두 커널의 바깥에서 구현되어야 한다는 원칙을 제시했고, 파일시스템·네트워킹·프로세스 관리 등의 일반적인 운영체제의 모든 기능이 커널 밖에서 커널을 통한 IPC로 구현되기 때문에 IPC의 성능 향상이 중요한 이슈가 되었다.
그리고 L4 마이크로커널의 벤치마킹 결과, 매우 우수한 IPC 성능을 달성했음을 증명했다.L4 커널의 소스 코드가 약 2만 라인 내외이고, 컴파일된 바이너리의 크기가 수백 KB에 불과하다는 것은 L4 커널이 작은 크기를 가진 마이크로커널이라는 점을 증명하고 있다.
L4:Pistachio는 이러한 이론에 기반한 첫 번째 구현이었고, 호주에 있는 NICTA라는 공공기관에 있던 Gernot Heiser 교수팀은 x86 아키텍처를 중심으로 개발된 L4:Pistachio를 임베디드 시스템에 적용하기 위하여 L4:Pistachio-embedded라는 커널을 구현했다.
그리고 커널 위에서 동작하는 운영체제를 구현하기 위하여 Iguana라는 마이크로 커널의 인터페이스를 담당하는 서버 컴포넌트를 구현하고, Wombat이라는 이름으로 리눅스 2.6 커널을 L4/Iguana 위에서 동작하도록 포팅하였다.
퀄컴이 채택한 것은 바로 이 L4/Iguana 커널이었고, ARM9·ARM11의 두 개의 코어가 탑재된 MSM7Axxx 시리즈 칩셋에서 각 프로세서 코어에 L4 커널을 탑재하고, ARM9 코어는 모뎀 프로세서로서 기존의 REX 기반의 소프트웨어 스택을 올리고, ARM11 코어는 응용 프로세서로서 리눅스와 윈도우모바일과 같은 범용 운영체제를 올리는 아키텍처를 선택한 것이다. <그림 5>는 퀄컴이 발표한 MSM7000 시리즈 칩셋의 구조이며, <그림 6>은 이러한 퀄컴의 아키텍처를 그림으로 표현한 것이다.
댓글 없음:
댓글 쓰기