Virtualizing an hardware resource, such as the CPU or the memory, means giving the illusion that each process has its own resource, no matter how many processes are there. It gives the illusion of nearly-endless supply of such resource.
Virtualization is something that is done by the operating system, and this is crucial for concurrency, since if we don’t have virtualization, each process would have to wait other processes to end before utilizing the CPU. With virtualization, the CPU can be used by many processes in a concurrent manner.
This is achieved by time sharing, meaning that the CPU is used by one process, than by another process and so on, allowing multiple processes to run concurrently. Of course they run slower than if they had the real CPU all by themselves.
The counterpart for memory virtualization technique is space sharing, where each process is assigned to a certain block of memory.
When dealing with virtualization, one main problem arise: given a number of possible programs to run on a CPU at a certain time, which program should the OS run? This is the problem known as scheduling, and it’s solved by defining a certain scheduling policy.
See more:
tags: computer-architecture operating-systems resources: Remzi H. Arpaci-Dusseau, Andrea C. Arpaci-Dusseau - Operating Systems Three Easy Pieces.pdf