Book/COMPUTER ORGANIZATION AND DESIGN RISC-V

5.6 Virtual Machines

S0LL 2024. 12. 2. 16:26

 

1. Virtual Machines의 개념

 

Virtual Machine (VM):

VM은 물리적인 하드웨어 위에서 소프트웨어적으로 구현된 컴퓨터이다.

VM은 사용자에게 독립적인 컴퓨터처럼 보이도록 하며, 각각의 VM은 독립된 운영 체제(OS)와 애플리케이션을 실행할 수 있다.

 

역사:

VM은 1960년대 중반에 개발되었으며, 메인프레임 컴퓨팅에서 중요한 역할을 했다.

1980~1990년대 PC 시대에는 관심이 줄었지만, 다음과 같은 이유로 최근 다시 인기를 얻었다:

 

1. 격리(isolation)와 보안(security)의 중요성 증가.

2. 표준 OS의 보안 및 신뢰성 문제.

3. 클라우드 컴퓨팅: 하나의 컴퓨터를 여러 사용자 간에 공유.

4. 프로세서 성능 향상으로 VM의 오버헤드 감소.

 

 

 

2. System Virtual Machines와 VMM

 

System Virtual Machines:

 

물리적 하드웨어와 같은 수준의 소프트웨어 인터페이스를 제공하며, **Instruction Set Architecture (ISA)**를 에뮬레이션한다.

예: VMware ESX, VirtualBox, Xen.

 

Virtual Machine Monitor (VMM):

 

VM을 관리하는 소프트웨어로, **하이퍼바이저(Hypervisor)**라고도 불림.

역할:

물리적 리소스를 여러 VM이 공유하도록 관리.

리소스를 분할(partitioned), 시간 분할(time-shared), 또는 소프트웨어적으로 에뮬레이션.

크기가 작고(약 10,000줄 코드) 보안성이 높음.

 

VMM의 주요 이점:

 

1. 소프트웨어 관리:

다양한 OS와 애플리케이션을 실행할 수 있는 추상화를 제공.

예: VM에서 레거시 OS(DOS) 실행 가능.

2. 하드웨어 관리:

여러 서버를 하나의 물리적 하드웨어로 통합.

VM을 다른 물리적 하드웨어로 마이그레이션(migration) 가능.

 

 

3. 클라우드에서의 VM 활용 사례

 

Amazon Web Services (AWS):

AWS는 클라우드 서비스인 EC2에서 VM을 활용한다.

주요 이유:

1. 사용자를 격리하여 보안 유지.

2. 소프트웨어 배포를 간소화.

3. VM을 강제로 종료 가능.

4. 하드웨어 ID를 숨겨, 오래된 서버도 효율적으로 재사용.

5. 프로세서, 네트워크, 디스크 자원을 제어해 비용 최적화.

 

 

4. Requirements of a Virtual Machine Monitor

 

VMM이 제공해야 할 기능:

1. VM의 독립성 보장:

각 VM은 마치 실제 하드웨어 위에서 실행되는 것처럼 동작.

2. 자원 접근 제한:

Guest 소프트웨어는 물리적 시스템 리소스를 직접 수정할 수 없음.

 

프로세서 가상화:

 

VMM은 다음을 제어:

I/O, 인터럽트, 예외 처리.

VM의 실행 상태를 저장하고 복원.

Guest VM의 모든 명령이 VMM의 제어 하에 실행.

 

운영 모드:

 

VMM은 Guest OS보다 높은 권한 수준에서 실행:

1. System Mode: VMM 실행.

2. User Mode: Guest OS 실행.

 

 

5. Instruction Set Architecture(ISA)와 Virtualization

 

일부 ISA는 가상화를 고려하여 설계되지 않아, VMM이 **민감한 명령(sensitive instructions)**을 처리하는 데 어려움이 있다.

예: x86 ISA는 초기에는 가상화 지원 부족.

RISC-V ISA:

VMM이 민감한 명령을 감지하고 제어할 수 있도록 설계.

Guest OS는 User Mode에서 실행, VMM은 Supervisor Mode에서 실행.

 

 

 

6. VMM과 Protection

 

보호와 성능 최적화를 위한 주요 기술:

1. 프로세서 가상화 비용 감소.

2. 가상화로 인한 인터럽트 오버헤드 감소.

3. 인터럽트를 적절한 VM으로 전달.

 

예제: x86 ISA의 POPF 명령

 

문제:

Guest OS가 User Mode에서 POPF를 실행할 때, 인터럽트 활성화 플래그(IE)를 처리하지 못할 수 있음.

해결:

IBM 메인프레임은 VMM이 모든 인터럽트를 처리하도록 설계.

 

7. VMM 설계에서의 I/O 가상화

 

I/O 가상화 문제:

다양한 I/O 장치가 VM 간에 공유되어야 함.

각 Guest OS는 실제 장치와 상호작용하지 않고, 가상 장치와 통신.

VMM이 실제 장치로의 액세스를 중계.

효율적인 구현:

Generic 드라이버를 제공해 Guest OS가 동일한 방식으로 장치를 처리하도록 만듦.