- What is a virtual machine?
- Types of virtual machines
- Capabilities of virtual machines
- Applications of virtual machines
- Virtual machines in hacker hands
- See also
1. What is a virtual machine?
A virtual machine is a computer file (usually called an image) that behaves like a real computer. In other words, it is a computer created in another computer. It works in a window like any other program, providing the end user with the same operating environment on the virtual machine as he would have on the main operating system.
The virtual machine is unbundled from the system in sandbox mode, which means that the software inside the virtual machine cannot escape or violate the computer itself. This allows you to create an ideal environment for testing other operating systems (including beta releases), accessing infected data, backing up your system, and running software or applications on operating systems for which they were not originally intended.
Multiple virtual machines can run simultaneously on one physical computer. On servers, many operating systems work side by side and are managed by software called the hypervisor function. In contrast, computers generally have one operating system that supports other operating systems that run within its program windows. Each virtual machine has its own virtual hardware, including CPUs, memory, hard drives, network interfaces and other devices. Virtual equipment is then mapped to real equipment in a physical machine, which reduces costs, reduces the need for physical hardware systems and their maintenance, and reduces power and cooling requirements.
The virtual machine controls all references of the program being started directly to the hardware or operating system and ensures their support. Thanks to this, the program running on the virtual machine “thinks” that it works on real equipment, while in fact it works on virtual equipment, “pretended” by the appropriate software (virtual machine).
The program being executed can be either a single application or the entire operating system or even another virtual machine. They are completely isolated by the virtual machine from the physical machine, unlike the classic operating system, which only manages running applications on the physical machine.
2. Types of virtual machines
Virtual machines include:
- interpreters, especially bytecode interpreters
- JIT compilers
- emulators of actual equipment, e.g. console emulators
The differences between the various types of such virtual machines are fluid. For example, a Java virtual machine is commonly known as a stand-alone interpreter, but since there were computers that could execute programs in Java bytecode directly, it can also be treated as an emulator of these machines. In addition, the JIT compiler is also a solution used when interpreting Java bytecode.
3. Capabilities of virtual machines
Virtual machines allow you to run programs written for other architectures without any changes or only with minor modifications (paravirtualization). This gives a lot of independence from physical equipment, although at the expense of an additional layer of abstraction, which is associated with some inconveniences: virtualization software itself requires part of the processor’s time and operating memory, it also increases the degree of complexity of the system, and thus the risk of error. However, because the performance of modern computers is constantly growing, and separate layers make it easier to find errors, it is more and more often a price worth paying for additional options. Similar motives were behind the move away from assembly to high-level languages (C, object oriented programming) in computer science.
Virtualization elements appear both in physical equipment (Transmeta processors, Virtualization Technology technologies in Intel and Pacifica bones in AMD processors), and in the construction of some operating systems (micronucleus technology or even virtual operating systems that work as applications for other systems), and although they are considered promising for the future, they have not yet become popular.
An ideal virtual machine fully mimics the operation of physical equipment, so theoretically it is possible to freely and unlimited combination of different layers of virtualization, including, e.g. recursive running of virtual machines. This is possible thanks to the transparency of the virtual machine: each subsequent virtual machine behaves as if it was running on physical equipment, even if its role is played by a different virtual machine. The only limitation is the amount of physical hardware system resources available.
4. Applications of virtual machines
Virtual machines are used for various purposes:
- to run existing applications and operating systems in non-original environments
- for secure separation of server and large machine resources (mainframes, supercomputers)
- to run different operating systems simultaneously on one computer
- to provide a universal runtime environment
- to run software clusters on one computer (in situations where it is not possible to run several instances of cluster nodes under one host)
- to gain full control over the operating system, e.g. when analyzing its work
- to optimize programs’ work by controlling their operating environment and code translation process
- to run untrusted code in an isolated environment
The benefits can be combined, for example, running multiple virtual machines on a large computer is strictly controlled by their operating status.
5. Virtual Machines in hackers hands
Virtual machines are very often used by people who want to maintain high anonymity and security of transmitted information. Hackers use them to access online services hidden in the TOR network.
To achieve maximum anonymity, they usually use a combination of two virtual machines:
- Whonix gateway – this is the gateway that anonymizes the Whonix Workstation connection using the tor network
- Whonix workstation – it is a specially prepared, anonymous operating system on which we work. All Whonix Workstation internet traffic takes place via a virtual local network through the Whonix Gateway