Virtualization

Threads and processes create the illusion of simultaneous execution, even on a single CPU, through rapid switching.

Figure 3.1 Isolation of execution.

Figure 3.1 Isolation of execution.

This isolation ensures that threads and processes can execute concurrently without interfering with each other's memory, execution state, and resources. This concept extends to resource virtualization, a practice crucial for managing complex, distributed systems.

Principle of Virtualization

In practice, every (distributed) computer system offers a programming interface to higher-level software. Virtualization deals with extending or replacing an existing interface to mimic the behavior of another system.

Figure 3.2 General organization.

Figure 3.2 General organization.

There are many ways in which virtualization can be realized, but to comprehend the difference, one must recognize that computer systems present four interface types at three levels:

Figure 3.3 Various interfaces offered by computer systems.

Figure 3.3 Various interfaces offered by computer systems.

  1. One approach is a native virtual machine monitor. It will have to provide and regulate access to various resources, like external storage and networks

    Untitled

  2. Another approach is a hosted virtual machine monitor. It runs on top of a trusted host operating system, eliminating the need for independent implementation — e.g. external storage.

    Untitled

By utilizing the interface offered by a virtual machine monitor (VMM) or hypervisor, multiple guest operating systems can run independently and concurrently on the same platform. It might help if we use the diagram you might be more familiar with in COE692.

Figure 3.4 Basic hosted virtual machine architecture.

Figure 3.4 Basic hosted virtual machine architecture.

In its simplest form, a virtual machine is a self-contained system that includes everything from its own operating system (guest OS) to an application environment and the application itself.

Containers

If you recall, there also exists containers which also provide a virtual environment, so why use them in the first place?