I am presenting to my class on virtualization.

While researching, I am confused between a bare metal hypervisor an full virtualization mode with binary translation.

Could someone please explain that ?


Bare-Metal hupervisors (a type of Virtualization) take advantage of CPU capabilities to give guest OSes the impression that they are the only OS on the computer. They necessarily virtualize most of the device access so the guests don't cause problems. The main advantage is speed, it's quite quick (normally).

Virtualization via Binary Translation is essentially an emulator. It's a program running in another OS that shows your the results of it's "analysis" of the Guest. For example, instead of running the code that adds 1 + 2 (and letting the CPU figure out that the answer is 3), it will have algorithsm that evaluate the code, determines that it's adding two numbers, finds those numbers, adds them, and presents the results to you. As you can see, it's a much more involved process. The main advantage is that the CPU of the Guest does not have to have be the same as the CPU of the Host.

  • Nice answer. And one more clarification. Since you gave the 1+2=3 example, I take that as a "privileged instruction", i.e. it can be calculated by the VMM itself. There maybe certain complex, non privileged instructions which cannot be executed by the VMM by binary translation, and such instructions are passed onto the main hardware for execution. Am I right here Chris ?
    – Hrishikesh Choudhari
    Apr 6 '10 at 15:31
  • If running in Binary Translation then anything interfacing with with hardware resources (which is usually limited to the kernel) must be fully translated, like the example. Other processes can be run directly on the CPU in certain cases, QEmu (where the guest and host processors are the same) is a good exmaple.
    – Chris S
    Apr 6 '10 at 16:10

I'm not sure where you're seeing full virtualization with binary translation; example?

Bare metal hypervisors are generally considered something like VMWare's ESX(i) tool. You have a server that just handles virtualization; you can't sit at the console and web browse while in the background it's running a virtualization engine. It is a dedicated server for the purpose of virtualizing PC environments, and it's usually a modified bare-bones Windows kernel (for Microsoft's products) or a modified, specialized Linux distribution (VMWare, Citrix, etc.) that's stripped down specifically to run with their product bundle.

The bare metal comes from the fact that you don't need to install a multiuser operating system or configure much at all. You buy the server, slap in a CD, and ten minutes later it's ready for you to begin configuring virtualized machines. It literally isn't designed for you to do anything but create virtual machines. The alternative, as in the link, is for you to run the hypervisor as a hosted application, sharing access to the hardware via system calls with your installed operating system.

Binary translations sounds like something like Rosetta on the Mac, or virtual machines like the Java or .NET bytecode translations. Rosetta takes non-native code and translates it to a native version to run on a different hardware platform for better performance, rather than translating each system call as it comes in. For the Mac, it takes PowerPC code and lets it run on the Intel processor.

  • I've never seen it termed that way, but an emulator which fully implements the features of the host could be called "Full virtualization" (But I suspect we 'lost in translation' here.)
    – Chris S
    Apr 6 '10 at 15:30
  • Really lost in translation. Reading whitepapers by the software makers is really confusing!
    – Hrishikesh Choudhari
    Apr 6 '10 at 15:34
  • 1
    Well, there are "full virtualizers" like Bochs, which can emulate a powerpc machine on an intel system and virtualize every last bit of hardware. But today the problem is that virtualization has become a victim of marketing, so the term is now loosely applied to various platforms and degrees of implementation so you're going to be hard pressed to find solid definitions in a grey cloud. Aptly enough, virtualization is becoming the next vague buzzword behind "cloud computing"... Apr 6 '10 at 15:44
  • 1
    I definitely agree with Bart; everything from hardware emulation to resource partitioning is now called Virtualization by marketing departments. And applications have even entered the arena with products like Microsoft's App-V (Appliction Virtualization). Marketing depatments have slapped the term "Vitualization" on anything that implements any level of logical abstraction between the user interface and the backend hardware.
    – Chris S
    Apr 6 '10 at 15:59

A bare metal hypervisor (like VMWare ESXi for example) is a hypervisor running directly on the Hardware, there is no OS in between like it would be for example when running VMWare Server/Fusion or Workstation on a PC or Mac and then running another OS in the Virtualization. Full Virtualization as I see it means virtualizing the whole hardware availible to the OS running as Guest, not passing through commands directly to the Hardware like when a VM has a dedicated Disc or NIC. Depends on the Topic of your class you should include the Virtualization in Hardware, which is done by IBM Mainframes or to some small extend via Intel VT oder AMD-V.

  • Intel VT and AMD-V are full CPU virtualization. And the x86 line has included a limited degree of virtualization for a long time (to allow programs meant for real-mode to execute in protected-mode). IBM Mainframes do Partitioning Virutalization, which is different from x86-style hypervisors and binary-translation.
    – Chris S
    Apr 6 '10 at 15:27
  • Why was this answer downvoted once? It's good. Intel VT and AMD-V do not offer full CPU virtualization. If they did, the virtual machines would be able to offer Intel VT or AMD-V as well, but they don't. Sep 22 '11 at 15:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy