장난감 연구소
[스터디] 가상화 기술 본문
본 게시글은 CS 지식 스터디에서 가상화 기술에 대해 발표하기 위해 정리한 내용입니다.
컴퓨팅 자원의 효율적 활용
컴퓨팅 자원의 활용성
가상화 기술에 대해 얘기하기 전에 가상화 기술이 왜 필요한지 알아보자.
💡 컴퓨터 1대가 주어진다면 무엇을 할 것인가?
컴퓨터 1대 주어진다면 인터넷 서핑을 하거나, 문서 작성, 게임, 소프트웨어 개발 등 무엇을 할 지 쉽게 답할 수 있을 것이다.
💡컴퓨터 1,000대가 주어진다면 무엇을 할 것인가?
그러나 1,000대가 주어진다면 무엇을 할 수 있을지 쉽게 답하기 어려울 것이다.
이러한 컴퓨팅 자원을 어떻게 효율적으로 사용할 수 있을까?
- 특정 시간 동안 사용되지 않는 컴퓨팅 자원의 활용
내가 소유한 컴퓨터가 풀로 가동되고 있고, 내 친구의 컴퓨터는 오후 6시부터 오전 9시까지 활용되지 않는다 하자. 그렇다면 중재자(broker)를 통해 나는 필요한 자원을 요청하고, 중재자는 유휴 자원이 있다면 자원을 할당해 작업을 처리해볼 수 있다. (ex. SETI@HOME) - 작업의 로드가 작은 컴퓨팅 자원의 활용
이번엔 내 친구의 컴퓨터는 전체 컴퓨팅 리소스의 30%만 활용하고 있다고 생각해보자. 그렇다면 A에서 처리해야 할 작업 일부를 B로 보내 가용자원의 70%를 활용할 수 있을 것이다.
가상화의 필요성
낮은 활용성 상태의 컴퓨터로 일부 작업을 전송하여 처리한다 가정해보자. 이 경우 자원의 활용도를 높일 수 있지만, 작업의 속도와 안정성을 담보할 수 없다. A의 작업이 B로 전송되어 실행되는 중에 시스템 전체에 영향을 주는 작업을 수행한다면 A의 작업 뿐만 아니라 B의 작업에도 심각한 영향을 줄 수 있다.
이러한 상황을 만들지 않기 위해서는 A의 작업에서 문제가 발생하면, B의 작업에 영향을 주지 않도록 해야 한다. 이러한 역할을 하는 중재자를 하이퍼바이저(Hyperbisor)
라 한다.
하이퍼바이저는 물리적 자원을 여러 대의 가상 자원으로 관리한다. 독립된 가상 머신을 만들고, 가상 머신에서 수행되는 작업이 문제를 일으키더라도 다른 가상머신에는 영향을 주지 않는 것이다.
즉, 가상화(virtualization)
는 자원을 분리하여, 유휴자원의 성능을 향상시키는 방법이다. 클라우드 시스템에서 매우 중요하게 사용되는 기술이다.
가상화 개요
가상화(假像化, virtualization)는 컴퓨터에서 컴퓨터 리소스의 추상화를 일컫는 광범위한 용어이다. "물리적인 컴퓨터 리소스의 특징을 다른 시스템, 응용 프로그램, 최종 사용자들이 리소스와 상호 작용하는 방식으로부터 감추는 기술"로 정의할 수 있다.
가상화 대상 시스템
- ABI (application binary interface) 레벨 : 애플리케이션 관점 가상화 (예시 : JVM)
- ISA (instruction set architecture) 레벨 : 명령어 집합에 대한 가상화 (예시 : Vmware)
하이퍼바이저
하이퍼바이저
는 가상화 소프트웨어를 말한다.
- 타입 1 하이퍼바이저 : 물리시스템 하드웨어에 직접 설치되어 실행되고 가상머신을 관리한다. 베어 메탈 하이퍼바이저라고도 한다. (예시 : Xen, KVM, Microsoft Hyper-V, VMWare ESX/ESXi)
- 타입 2 하이퍼바이저 : 호스트머신 운영체제 위에서 애플리케이션처럼 설치되어 가상머신을 관리한다. (예시 : VMWare Workstation, VirtualBox, QEMU, KVM)

가상화 유형
- 전가상화 : 게스트 OS를 수정하지 않는 가상화
- 반가상화 : 게스트 OS를 수정하여 하이퍼바이저와 통신할 수 있는 API를 추가한 가상화
- 하이브리드 가상화 : I/O나 메모리 집약형 작업 등 제약이 있는 환경에 대해서 반가상화를 적용하여 성능을 개선하고자 제안
- 운영체제 레벨 가상화 : 컨테이너화. 일반적인 가상화와 달리 물리시스템에 설치된 운영체제를 모든 컨테이너가 공유하는 시스템.
가상화 기술
폰노이만 구조의 컴퓨터는 CPU와 메모리, I/O 장치로 구성된다. 각각의 가상화 방법을 알아보자.
CPU 가상화
운영 체제(OS)는 CPU의 특권 모드(커널 모드)에서 실행되며, 일반 사용자 프로그램은 비특권 모드(유저 모드)에서 실행된다.
- 특권 모드에서는 모든 CPU 명령을 실행할 수 있지만,
- 비특권 모드에서는 일부 제한된 명령을 실행할 수 없다.
소프트웨어 지원 전가상화
가상 머신을 실행하는 Guest OS는 원래 특권 모드에서 실행되어야 하지만, 가상화 환경에서는 이를 그대로 실행할 수 없다. 따라서 비특권 모드에서 Guest OS를 실행하고, 특권 명령이 실행될 때 트랩(Trap, 예외 처리)을 발생시켜 하이퍼바이저(VMM, Virtual Machine Monitor)가 이를 가로채서 처리한다.
단점: 일부 명령어(비트랩 명령어)는 트랩을 발생시키지 않아, 이러한 명령을 수정하는 바이너리 트랜슬레이션(Binary Translation)이 필요하다. 이 과정이 성능을 저하시킨다.
소프트웨어 지원 반가상화
하이퍼 콜은 가상 환경에서 Guest OS가 직접 하이퍼바이저와 통신하기 위한 특수한 호출이다.
- Guest OS가 물리적 하드웨어를 직접 제어할 수 없기 때문에, 필요한 기능(예: 메모리 관리, I/O 처리)을 하이퍼바이저에게 요청해야 한다.
- 이를 위해 시스템 콜(System Call)과 유사한 방식으로 하이퍼바이저에게 직접 명령을 전달하는 것이 하이퍼 콜이다.
하이퍼 콜을 사용하면 트랩을 이용한 방식보다 성능이 향상되지만, Guest OS가 이를 지원하도록 수정해야 하는 단점이 있다.
- 이를 지원하는 방식이 반가상화이다.
하드웨어 지원 가상화
소프트웨어 가상화의 성능 문제를 해결하기 위해, Intel VT-x, AMD-V 같은 하드웨어 지원 가상화 기술이 등장했다.
이 기술은 CPU 내부에 하이퍼바이저 전용 실행 모드(Root Mode)를 추가하여, Guest OS를 특권 모드에서 실행할 수 있도록 지원한다.
- 하이퍼바이저가 직접 개입하지 않아도 CPU가 Guest OS의 특권 명령을 처리할 수 있으므로 성능이 향상된다.
- 트랩과 바이너리 트랜슬레이션이 불필요해지고, 가상화 오버헤드가 감소한다.
가상화 방식 | 설명 | 장점 | 단점 |
---|---|---|---|
소프트웨어 전가상화 | Guest OS를 비특권 모드에서 실행하고 트랩을 이용해 특권 명령을 처리 | 기존 OS 수정 없이 가상화 가능 | 성능 저하 (바이너리 트랜슬레이션 필요) |
소프트웨어 반가상화 (하이퍼 콜) | Guest OS가 하이퍼바이저에게 직접 요청 | 성능 향상 | Guest OS 수정 필요 |
하드웨어 지원 가상화 | CPU가 가상화를 직접 지원하여 Guest OS를 효율적으로 실행 | 높은 성능, 낮은 오버헤드 | 하드웨어 지원 필요 |
메모리 가상화
가상화 이전에도 컴퓨터 시스템은 가상 메모리를 사용하고 있다. 따라서 주소 변환 과정은 아래와 같다.
- 비가상화 환경(일반 환경) : 가상 주소 → 물리 주소
가상 주소(Virtual Address): 프로세스 또는 VM이 사용하는 주소
물리 주소(Physical Address): 실제 RAM에서 사용하는 주소
운영 체제는 페이지 테이블(Page Table)을 사용해 가상 주소를 물리 주소로 매핑한다.
- 가상화 환경(하이퍼바이저 개입) : 가상 주소 → 가상물리 주소 → 물리주소
가상화 환경에서는 가상머신 또한 하이퍼바이저 상에서 동작하는 프로세스이므로, 가상주소를 사용한다. 따라서 주소 변환에 한 단계가 추가된다.
섀도우 페이지 테이블 (Shadow Page Table) 방식 메모리 가상화
- 하이퍼바이저가 게스트 OS의 페이지 테이블을 감시하고, 별도의 섀도우 페이지 테이블을 유지하며 주소 변환을 수행
- 단점: 오버헤드가 크다 (페이지 테이블 변경 시 하이퍼바이저가 개입)
하드웨어 지원 페이지 테이블 (EPT, NPT) 방식 메모리 가상화
- Intel VT-x: EPT (Extended Page Tables)
- AMD-V: NPT (Nested Page Tables)
- CPU가 2단계 주소 변환을 직접 처리하여 하이퍼바이저의 개입을 최소화 → 성능 향상
메모리 가상화 방식 | 설명 | 장점 | 단점 |
---|---|---|---|
섀도우 페이지 테이블 | 하이퍼바이저가 페이지 테이블을 관리 | 모든 OS 지원 가능 | 성능 저하 |
EPT/NPT (하드웨어 지원) | CPU가 직접 2단계 주소 변환 | 성능 향상 | 하드웨어 지원 필요 |
I/O 가상화
- 소프트웨어적 I/O 가상화
- I/O 장치 에뮬레이션 : 하이퍼바이저가 가상 머신(VM)에 가짜(에뮬레이션된) I/O 장치를 제공하고, 실제 I/O 처리는 하이퍼바이저가 담당
- I/O 반가상화 : VM이 하이퍼바이저와 직접 통신하여 최적화된 I/O 드라이버를 사용. (예: VirtIO 방식)
- 직접 접근 I/O : VM이 특정 물리적 I/O 장치를 직접 제어할 수 있도록 하이퍼바이저가 장치를 VM에 직접 할당 (장치 공유 불가, 한 VM이 독점)
- 하드웨어 지원 I/O 가상화
- IOMMU (I/O memory management unit) : DMA(Direct Memory Access) 요청을 가상 주소에서 물리 주소로 변환하여 I/O 장치가 가상화 환경에서도 안전하게 메모리에 접근 가능하도록 지원
- SR-IOV (single root I/O virtualization) : 하나의 물리적 I/O 장치를 여러 개의 가상 기능(VF, Virtual Function)으로 나누어 여러 VM이 직접 I/O 장치를 공유할 수 있도록 지원
마무리
가상화 기술은 컴퓨팅 자원의 활용도를 극대화하고, 안정성을 높이는 핵심 기술이다. 위와 같은 가상화 기술은 VirtualBox에서 가상 머신을 사용할 때나, AWS EC2 서비스에서 사용하고 있다. 또한 Windows 10 이후의 윈도우 운영체제는 Hyper-V라는 하이퍼바이저 위에서 작동하고 있다.
가상화 기술을 활용하면 하나의 물리적 자원을 여러 개의 가상 환경으로 나누어 사용할 수 있고, 이는 클라우드 서비스나 데이터센터 운영에서 중요한 역할을 한다. 특히 하드웨어 지원 가상화 기술(Intel VT-x, AMD-V, SR-IOV 등)의 발전으로 가상화의 성능 저하 문제도 점점 해결되었다.
다음 주에는 컨테이너 기술에 대해 발표할 예정이다. 컨테이너 기술은 가상화와 유사하지만, OS 커널을 공유하여 더 가볍고 빠르게 애플리케이션을 실행할 수 있도록 해준다. 이를 통해 두 기술의 차이와 활용을 비교해보는 시간을 가질 것이다.
참고 자료 출처
노서영 저, 『모두를 위한 클라우드 컴퓨팅』, 제이펍(2022)
'CS 지식' 카테고리의 다른 글
[스터디] HTTP 커넥션 관리 (0) | 2025.03.24 |
---|---|
[스터디] 컨테이너 기술 (0) | 2025.03.16 |
[스터디] HTTP 기초 (URL과 리소스, HTTP 메시지) (0) | 2025.03.03 |
대칭 최소-최대 힙(SMMH) (2) | 2022.06.16 |
[알고리즘] 반복자 iterator (0) | 2019.06.30 |