Hyper- V 구조론 2

Posted on

이번 글에서는 보호 링 모드와 타입 1 하이퍼바이저의 전가상화 모드와 반가상화 모드를 살펴보겠습니다.

많은 CPU 구조는 하드웨어에 접근 권한을 차등을 두어 운영체제와 프로그램을 작동하게 합니다. 보호 링 모드라고 하는 이 구조는 시스템 폴트와 보안 취약점 공격의 위험성을 줄여줍니다. 전통적으로는 링 0부터 링 3까지 있구요. 링 0이 제일 접근 권한이 강하고, 링 3가 제일 약합니다. 링 0에서는 커널과 같이 하드웨어에 직접 접근해야 하는 계층이 돌고 링 1, 2에는 장치 드라이버가, 링 3에는 유저랜드 프로그램이 돕니다.

타입 2 하이퍼바이저는 링 0에 호스트 OS의 커널과 하이퍼바이저가 의존하는 VMM.sys 등의 파일이 자리해있고 링 1에 가상 머신과 게스트 OS, 추가 모듈이 돌아가며 링 3에 게스트 OS에서 도는 프로그램이 자리합니다.

반면 타입 1 하이퍼바이저는 링 0에 두고 게스트 OS가 링 1에 두는 것 같지만, 링 -1 라는 계층을 하나 더 추가하여 하이퍼바이저는 링 -1에서 돌고 게스트 OS는 링 0에서 돌게 하는 변화를 주었습니다. 이는 호스트OS와 같은 성능을 내도록 하기 위한 기법입니다.

타입 2인 경우 가상 머신의 커널 모드가 프로세서의 커널 모드에 동작을 취해야 하기에 그 요청을 트랩핑하여 호스트OS의 VMM에 전달해야 합니다. 이 과정에서 성능 저하가 있게 되는데요. 타입 1을 쓰면 하드웨어에 직접 접근하게 되어 레이턴시가 줄어들게 됩니다.

전가상화 기법은 하드웨어 에뮬레이션을 위해 이진 변환이나 링 압축 등의 기법을 쓰는 전통적인 방식으로 게스트OS의 수정없이 작동하지만, 물리적인 머신보다 느립니다. 반가상화 기법은 하이퍼바이저에서 제공하는 API로 하드웨어를 직접 접근하게 하여 게스트OS가 이를 이용해서 하드웨어에 처리하게 합니다. 이를 하이퍼콜이라고 합니다. 하이퍼바이저는 링 -1에서 돌기에 하드웨어와 직접 맞닿은 계층입니다.

링 -1 모드는 CPU의 가상화 기술에 의존하므로, 인텔의 경우 VT-x를, AMD의 경우 AMD-V를 바이오스나 UEFI에서 켜두어야 합니다. 켜두고 타입 1 하이퍼바이저를 설치하면 설치가 진행되고 실행해볼 수 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다