콘텐츠로 이동

가상화 (Virtualization)

Jan 25, 2026 · Updated Jan 27, 2026

가상화는 단일 컴퓨터의 하드웨어(CPU, 메모리, 디스크, 네트워크 인터페이스 등)를 여러 실행 환경으로 추상화하여, 각 환경이 자체 개인 컴퓨터에서 실행되는 것처럼 보이게 하는 기술이다.

가상화 구조
VM1 Linux
VM2 Windows
VM3 Ubuntu
VM4 CentOS
VMM (Hypervisor) + Hardware

각 VM은 독립적인 OS를 실행하며 서로 격리된다.

구분에뮬레이션가상화
CPU 아키텍처소스와 대상이 다름동일한 CPU 아키텍처
동작 방식소프트웨어로 하드웨어 시뮬레이션네이티브 실행
성능느림 (명령어 변환 필요)빠름
예시Apple Rosetta (IBM Power → Intel x86)VMware, VirtualBox

가상화의 3가지 요구사항 (Popek & Goldberg, 1974)

섹션 제목: “가상화의 3가지 요구사항 (Popek & Goldberg, 1974)”
요구사항설명
Fidelity (충실성)프로그램에게 원본 머신과 본질적으로 동일한 환경 제공
Performance (성능)가상화된 환경에서 실행되는 프로그램의 성능 저하가 미미해야 함
Safety (안전성)VMM이 시스템 자원을 완전히 제어해야 함

VMM은 게스트 운영체제를 실행하고, 자원 사용을 관리하며, 각 게스트를 다른 게스트로부터 보호한다.

  • Host: 가상 머신을 실행하는 물리 하드웨어 시스템
  • VMM/Hypervisor: 가상 머신을 생성하고 관리하며, 게스트에게 호스트와 동일한 인터페이스 제공
  • Guest: VMM 위에서 실행되는 OS (자신이 전용 하드웨어에서 실행된다고 믿음)
  • 각 게스트는 가상 CPU, 가상 메모리, 가상 디스크, 가상 네트워크를 할당받음

VMM 모드: 가상화를 지원하는 CPU는 VMM이 시스템을 제어할 때를 위한 별도의 모드를 가진다.

  • 사용자 프로세스보다 더 많은 권한
  • 커널보다는 적은 권한
방식설명
Type 0 Hypervisor펌웨어 기반 (IBM LPAR)
Type 1 HypervisorBare-metal (VMware ESX, Xen)
Type 2 HypervisorHosted (VirtualBox, VMware)
Paravirtualization게스트 OS 수정 (Xen)
Programming-env VMJVM, .NET CLR
Emulation다른 아키텍처 에뮬레이션
ContainerOS 수준 가상화 (Docker, LXC)
용도설명
서버 통합여러 저사용률 서버를 하나로 합쳐 자원 최적화
격리게스트 OS 간 보안 격리
개발/테스트단일 물리 서버에서 여러 OS 실행
클라우드 컴퓨팅VM 단위로 자원을 제공하는 IaaS 기반

VMM은 각 게스트에 VCPU(Virtual CPU)를 제공합니다. VCPU는 코드를 직접 실행하지 않으며, 게스트의 현재 CPU 상태를 표현하는 데이터 구조이다.

기능설명
VM 생성/삭제가상 CPU, 메모리, 디스크, 네트워크 구성
CPU 스케줄링물리 CPU를 여러 게스트 간에 시분할
메모리 관리중첩 페이지 테이블, 메모리 오버커밋
I/O 가상화가상 디바이스 제공, 실제 디바이스와 매핑
격리 보장게스트 간 보호, VMM 자체 보호

VMM은 OS와 유사한 기능(부팅 시 하드웨어 로드, 스케줄링, 메모리 관리)을 수행하지만, VMM의 “애플리케이션”은 게스트 OS이며 시스템 콜 대신 하드웨어 인터페이스를 제공한다는 점에서 구분된다.

하나의 큰 건물을 여러 개의 독립적인 아파트로 나누는 것과 같다. 각 입주자는 자신의 공간이 독립적이라고 느끼지만, 실제로는 같은 건물의 자원(전기, 수도)을 공유한다.

  • 장점: 게스트 간 보안 격리, 서버 수 감소 및 비용 절감, VM 스냅샷/클론, 라이브 마이그레이션
  • 단점: 성능 오버헤드(특히 I/O), 복잡성 증가, 하드웨어 지원 필요