Writer’s choice
Nowadays multiple OS instances are used in computer virtualization for example for executing guest OS in the host OS. Virtual machines are widely used to separate different Operating Systems from one another, including their file systems and other resources. A common strategy is to run each guest OS in a dedicated virtual machine (Alverti et al., 2020). Each VM can then be regarded as a compartment that is wholly isolated from the other compartments running on the same host.
Mostly, Virtual machines do not allow memory virtualization to increase their performance. This could be due that it may require additional hardware because of inability to translate between physical and virtual addresses fast enough or that virtualization was not supported in early operating systems (Abdi et al,2019). The majority of modern PC hardware provides virtualization support: this includes Intel VT (formerly Vanderpool) and AMD-V. The first x86 CPUs to include these features were the “Intel Core 2” series, which contained both technologies; virtualization was also enabled on the Itanium architecture by Hewlett-Packard and other vendors.
The main idea of Virtualization is to run a virtual machine monitor (VMM) below the OS, which enables the host OS to act like it is running directly on real hardware. The VMM exposes an interface that exactly replicates the hardware’s native interface (Kloda et al.,2019). To each VM, it presents virtual “hard disks”, “network cards” and “video cards”, which are actually files containing disk images, bitmaps of VGA video memory and network packets.
The disadvantages of the technique are that the actual performance of a VM is nowhere near as good as it would be if it were running directly on real hardware, because there is always some overhead in passing data back and forth through the VMM. Another issue is that since the VMM is emulating the hardware, it must be powerful enough to handle any operation that real hardware can (Abdi et al,2019). This gives rise to a conflict between having an easy-to-use VMM which may not support every possible feature that real hardware has, or vice versa – supporting everything including obscure features while making the VMM un-friendly.