개요
Popek and Goldberg virtualization requirements (conditions)는 가상화가 이루어지기 위한 조건들을 의미한다. 특히 조건 2 - 가상화 정리는 현재에도 좋은 VMM 완변한 VMM을 설명하기 위해서 널리 사용되고 있다.
조건 1 - 좋은 VMM 작동을 위한 조건
VMM은 다음과 같은 세가지의 조건을 충족해야 좋은 VM이라고 할 수 있다.
- Equivalence / Fidelity: VMM은 같은 Machine instruction을 수행하면 게스트에서도 호스트와 같은 동작을 보여야 한다.
- Resource control / Safety: VMM은 리소스 관리를 안전하게 그리고 최종적인 권한을 가지고 수행해야 한다.
- Efficieny / Performance: 호스트에서 수행하는것과 비슷한 성능이 나와야 한다. 이를 위해서 VMM의 개입없이 최대한 많은 부분이 Host에서 실행되어야 한다.
Pepek and Goldberg에 따르면 VMM은 반드시 위의 세 조건을 만족시켜야 한다고 한다. 효율적인 VMM을 위해선 위의 세가지를 지켜주어야 한다.
조건 2 - 가상화 정리
우선 정리에 앞어서, 다음과 같은 Instruction set에 대한 분류가 필요하다.
- Privileged Instructions: User모드에서 실행하면 TRAP이 나는 경우를 명령어를 말한다.
- Control sensitive instructions: System의 환경을 바꾸는 명령어를 말한다.
- Behavior sensitive instructions: System의 환경에 영향을 받는 명령어를 말한다.
Popek and Goldberg조건은 다음과 같은 조건을 만족시키는 경우를 말한다.
- 정리 1. Sensitive instructions은 Privileged instructions이어야 한다.
- 이는 효율적으로 VM을 만들기 위해서 Trap and emulate를 사용하여야 하며, 이를 위해서는 모든 sensitive instruction들이 Trap을 만들어야 한다는 것을 의미한다. 여기서 발생할 수 있는 문제는 Recurive virtualization의 상황에서, Trap이 guest 1인지 guest 1에서 돌아가는 guest 2의 것인지를 구분하는 능력이 있어야 한다는 것을 요구한다는 것이다. 이를 위해서 <정리 2>가 주어지게 되었다.
- 정리 2. Recursive virtualizable하기 위해서는 컴퓨터 시스템이 스스로 가상화 가능하여야 하며, 그 컴퓨터 시스템을 가상화 시킬 수 있는 VMM이 존재하여야 한다.
- 정리 3. hybrid VMM은 user sensitive instrutions들이 Privileged instructions들의 subset이어야 한다.
여기서 중요한 것은 정리 1이다. 정리 1은 현재에도 가상화를 설명하기 위해서 널리 사용되고 있다. 정리 1을 만족시키지 않는 명령어들을 위해서 다양한 방법들이 개발되어 왔다. 그중 하나가 Binary translation혹은 반가상화이다. 이러한 방식을 사용함으로서, 현재 가상화 시스템은 Classic virtualization보다 훨씬 효율적으로 작동하고 있다.