Virtual machines, abbreviated as VMs, provide the functionality required to execute entire operating systems within another operating system, eliminating the need to install such an operating system on physical hardware. Virtualization-specific hardware, as well as hardware-assisted virtualization, are used by modern hypervisors. Some virtual machine emulators, such as QEMU, are intended to mimic various system architectures.
e.g. Running a Linux based Operating System such as Ubuntu inside a Windows workstation.
The terms are not universally interchangeable because they differ and are organized according to the function for which they are used. A virtual machine (VM) in computing is the virtualization/emulation of a computer system that is based on a computer architecture and provides the functionality of a physical computer.
(An example of a Windows XP VM running on a Linux distribution)
Advantages of the technology
- Running old software: VM’s enable the use of legacy out of date software to be run without needing to worry about hardware compatibility. An example of this would be running a Windows 95 VM to use an out of date unsupported application which cannot be run on modern platforms.
- Security/Isolation: VM’s provide isolation between the host OS and guest OS for security allowing for testing and debugging without directly affecting the main OS on the computer. This to an extent can prevent malware inside a VM from affecting the main OS unless files are shared between them or folders are networked in which cases threats like Ransomware may be able to cause some damage.
- Multiple Operating Systems: Enables one to run multiple Operating Systems without having to dual boot or install anything that will affect the physical computer.
- Efficiency: Allows for a server to partition access and run many Operating Systems making the hardware more efficient and cutting down costs.
Disadvantages of the technology
- Performance: Running a Virtual machine is generally much slower compared to running an Operating System on physical hardware which is referred to as bare metal. VM’s consume RAM (memory) on the host computer and storage space making them run slowly. Older Operating Systems and software however is unlikely to suffer from this on modern computers due to the low storage and memory requirements however modern applications will likely suffer big performance losses.
- Inefficiency: This is linked to the point above but due to the way VM’s access resources of the computer which is indirect through layers of software they are less efficient. Software running locally can directly access hardware and resources whilst VM’s require the use of software components to do so making them less efficient.
- Complexity: Due to the extra software requirements VM’s can be hard to maintain and create more complexity within an I.T stack. In addition VM’s can potentially be a single point of failure if the main host server goes down it would bring all VM’s down with it.
Different types of Virtual machines:
A “virtual machine” is an isolated, efficient duplicate of a real computer machine. The physical, “real-world” hardware that runs the VM is referred to as the “host,” and the virtual machine emulated on that machine is referred to as the “guest.” A host can run multiple guests, each of which can run different operating systems and hardware platforms.
IBM’s CP/CMS, the first systems to support full virtualization, implemented time sharing by giving each user a single-user operating system called the Conversational Monitor System (CMS) In contrast to virtual memory, a system virtual machine allows the user to include privileged instructions in their code.
This approach had some advantages, such as the ability to add input/output devices that the standard system did not allow. Virtual machines are widely used in embedded systems and server consolidation to support network growth.
Process based VM’s
A procedure A virtual machine (VM) is a platform-independent programming environment that abstracts away the underlying hardware or operating system. It abstracts a programming language at a high level.
Process virtual machines are implemented using an interpreter; just-in-time compilation can achieve performance comparable to compiled programming languages.
The Java programming language, which is implemented using the Java virtual machine, has made this type of VM popular. Systems that abstract over the communication mechanisms of a (potentially heterogeneous) computer cluster are a subset of process VMs. A VM of this type does not consist of a single process, but rather one process for each physical machine in the cluster.
The virtual machine simulates enough hardware in full virtualization to allow an unmodified “guest” OS to run in isolation. The IBM CP-40 and CP-67, forerunners of the VM family, pioneered this approach in 1966. Parallels Workstation and VirtualBox are two examples outside of the mainframe field.
Hardware aided virtualization
In 1972, IBM System/370 was the first to use hardware-assisted virtualization. Intel and AMD provided additional hardware to support virtualization in 2005 and 2006.
KVM and Microsoft Hyper-V are two examples of virtualization platforms that have been tailored to such hardware.
In 2006, it was discovered that first-generation 32- and 64-bit x86 hardware support rarely provided performance advantages over software virtualization.
Operating System (OS) level virtualization
A server is virtualized at the operating system level in operating-system-level virtualization. Multiple virtualized servers can now run on a single physical server. Docker, Solaris Containers, OpenVZ, Linux-VServer, LXC, and AIX Workload Partitions are a few examples of this technology.
Thank you for reading this page we hope you found it useful if so please consider following us on our social profiles to keep up-to-date with new content we publish.
Relevant pages from the agrtech glossary:
“Virtual machine” Wikipedia, 29 Sept. 2001, en.wikipedia.org/wiki/Virtual_machine. Accessed 10 June 2021.
John Aplessed, Public domain, via Wikimedia Commons
i.stack.imgur.com/k1kH6.jpg. Accessed 10 June 2020, Via https://creativecommons.org/licenses/by-sa/2.5/
ujmoser, CC0, via Wikimedia Commons