Explain me the x86 architecture without virtualization and how the instruction were handled prior to VMware?
- X86 operating systems are designed to run directly on the bare-metal hardware, so the Operating System assumes that it owns the computer hardware.
- The x86 architecture offers four levels of privileges known as Ring 0, 1, 2 and 3 to operating systems and applications to manage access to the computer hardware.
- User level applications typically runs in Ring 3, where the operating system needs to have direct access to the memory and hardware and must execute its privileged instructions in Ring 0. So the Operating System has to be placed in Ring 0.
- So to Virtualize any x86 architecture then I have to move the virtualization layer under the operating system, which has to be in the most privileged Ring 0, and push the OS a level up to Ring 1.
- Some sensitive instructions can’t effectively be virtualized as they have different semantics when they are not executed in Ring 0. The difficulty in trapping and translating these sensitive and privileged instruction requests at runtime was the challenge that originally made x86 architecture virtualization look impossible.
- VMware resolved the challenge in 1998, by developing the binary translation technique that allows the VMM to run in Ring 0 for isolation and performance, while moving the operating system to a user level ring with greater privilege than applications in Ring 3 but less privilege than the virtual machine monitor in Ring 0.