하이퍼바이저를 이해하기 위해서는 운영체제의 유저 모드와 커널 모드를 이해해야한다.
그리고 가상화와 연관된 유저 모드와 커널 모드를 이해하기 위해서는 x86 CPU의 Protection Ring 모드를 이해해야 한다. 이는 유저모드와 커널모드가 RIng 모드의 전환과 밀접한 관계가 있기 때문이다.
베이메탈에 윈도우 OS, 리눅스 OS를 설치하면 하드웨어 - 운영체제 라는 2개의 층이 형성된다.
OS가 설치되면 하드웨어의 주소를 직접 다루는 부분과 어플리케이션을 다루는 부분이 분리된다.
OS에서 하드웨어를 직접 핸들링할 경우에 다루는 모드를 커널모드라고 부른다.
일반적 사용자 측면인 어플리케이션 측면에서 핸들링 하는 부분을 유저모드라고 한다.
가상화를 도입하게 되면 이 부분에서 문제가 발생하게 된다. 물리 서버에서 하나의 OS가 아닌 여러 개의 OS가 물리적인 하드웨어를 동시에 컨트롤해야 한다. 만약 여러대의 OS가 같은 하드웨어 주소를 참조하여 핸들링한다면 문제가 발생한다.
이 문제를 막기 위해 하이퍼바이저가 중간에서 중재 역할을 해야한다.
처음에는 하이퍼바이저가 모든 OS의 커널 모드 콜을 중간에서 받아 에뮬리케이션으로 처리했다. 하드웨어적인 도움을 받지 못하고 소프트웨어로 처리하려고 하니 전체적인 성능 저하가 있었다.
하지만 현재는 CUP를 제조하는업체에서 이 부븐을 하드웨어적으로 지원하게 되었다.
그래서 만들어진 기능이 Intel-VT 와 AMD-V 이다.
처리방식
- 전통적인 방식에서는 Ring 0 가 OS의 커널 모드와 대응하고, RIng 3가 유저모드라고 생각하면 된다.
- OS 가 Application 에 대한 명령어 콜을 날리면 Ring3 가 동작하고 RIng 0, 즉 커널 모드에 대한 명령이 OS로부터 날아오면 Ring 0 가 대응하는 방식이다.
- Ring 1, 2는 현재 사용되자 않는다고 생각하면 된다.
- Intel VT-x 및 AMD-V 환경에서는 Intel VT-x 및 AMD-V 를 Ring - 1 로 설정하고 기존의 RIng0 를 게스트 운영체제로, RIng 3 를 어플리케이션으로 만든다.
- 이렇게 만드러서 게스트 운영체제인 VM과 어플리케이션이 기존과 동일하게 하드웨어를 호출하고 어플리케이션 콜을 호출할 수 있도록 만든다.
- 이것을 Root 모드라고 부른다.
'DevOps > virtualization_가상화' 카테고리의 다른 글
[가상화] VMware vSphere 개요 (0) | 2023.10.11 |
---|---|
[가상화] 전가상화와 반가상화 (0) | 2023.09.18 |
[가상화] 하이퍼바이저란 무엇인가? (0) | 2023.09.11 |
[가상화] x86 가상화를 이해하기 위한 기초 지식 (0) | 2023.09.09 |