1974 yılında Gerald Popek ve Robert Goldberg "Formal Requirements for Virtualizable Third-Generation Architectures" isminde bir makale yayınladılar. Bu makalede bir VMM (Virtual Machine Monitor ya da Hypervisor) 'ün ne gibi özelliklere sahip olması gerektiği tanımladılar. Aynı zamanda tanımladıkları teorem ile bir ISA'nın VMM tarafından sanallaştırılıp sanallaştırılamayacağını belirlediler. Teorem özellikle bir bilgisayar mimarisin sanal makineleri çalıştırabilme durumlarını açıklamaktadır. [1]
Öncelikle sanal makinelerin ne olduğundan bahsetmek gerekiyor. Sanal makineler öncelikle bir soyutlamadan ibarettir.
VM VM
+-+-------------+-+ +-+-------------+-+
| |+++++++++++++| | | |+++++++++++++| |
| +-------------+ | | +-------------+ |
| +-------------+ | | +-------------+ |
| |İsletim sist.| | | |İsletim sist.| |
| +-------------+ | | +-------------+ |
+-----------------+ +-----------------+
+--------------------------------------------+
Hypervisor ==> sanallaştırmayı kontrol eder
+--------------------------------------------+
+--------------------------------------------+
| Donanim |
+--------------------------------------------+
VMM sanal makineleri kontrol edecek yazılımsal bir soyutlamadır. Popek & Goldberg teoremine göre bir VMM (hypervisor) aşağıdaki üç tanımı sağlamalıdır.
Öncelikle bir işletim sisteminin çalışabilmesi için belli özellikleres sahip olmamız gerekiyor. Bunlar - Kernel Mode / User Mode - Sanal Bellek - Trap
For any conventional third generation computer, a virtual machine monitor may be constructed if the set of sensitive instructions for that computer is a subset of the set of privileged instructions.
Bu teorem aslında sahip olabileceğimiz en iyi durumu ifade ediyor. Eğer bu mimari çalıştırılan senstive bir instruction trap oluşturabilirse bu VMM tarafından yakalanabilir. Sonrasında ise VMM bu instruction'ı emüle (emulate) edebilir. Bu sürece trap-and-emulate denir.