What is the difference between hardware and software virtualization?
I want to know more about virtuallization technology and what the difference is between hardware and software virtualization.
Just to provide a short answer, which can get you started on more detailed articles/materials.
Virtualization is a process of simulating a specific computer/device/environment on a different one. A few examples:
- Nintendo emulator which you can run on your PC
- Windows XP mode in Windows 7
- a virtual web server which runs on a distributed platform (cloud hosting example)
Key terms:
- Guest (operating) system: the system which is being virtualized
- Host (operating) system: the base system which runs one or more virtualized systems ("guests")
In context of the examples above:
- guests: (1) Nintendo; (2) Windows XP; (3) virtualized web server
- hosts: (1) PC's operating system which runs the emulator; (2) Windows 7; (3) distributed/cloud platform
Software vs. Hardware virtualization:
In case of software virtualization, the host system needs to completely emulate guest's platform (i.e. ranging from hardware, CPU instructions, through its firmware and even the operating system /if there is one/). The advantage is that host and guest platforms are independent (our example of the Nintendo emulator). The disadvantage is that this approach is very slow and resource consuming (since we have to emulate everything).
Hardware(-assisted) virtualization provides a significant performance gain over software virtualization by running some guest code directly on the host hardware with limited or none assistance from the host system - the hardware however needs to support this (search for Intel VT or AMD-V). The disadvantage over software virtualization is that the guest and host systems need to use the same platform (i.e. you cannot use hardware virtualization for our Nintendo example).
Hope this helps!
NB: I'm not an expert on the topic - as others have pointed our, you can find more precise information via Google. I'm making this a community wiki, so anyone please feel free to edit/correct anything which you find unclear/wrong. Thanks!