Introduction to Virtual Machines
This section of the website will focus on the concept of virtual machines. The concept of virtual machines is not new to the computer world, it is however a concept that not many people know about or understand. If you are a typical computer user and you use the Internet to browse the World Wide Web, then you have probably interacted with a virtual machine, that being the Java virtual machine. Now, other than this virtual machine that most computer users use transparently, you are probably wondering why you should care about virtual machines, no?
Well, virtual machines are a concept that is used quite often in the computing world to solve very important problems, but often these are transparent to you as the user because virtual machines are typically used within programs and operating systems that users use everyday. Some of these problems include: sharing the same hardware among many programs by partitioning the hardware, allowing software to be "portable" between various operating systems, as well as running older software on a newer computer. All of these uses of virtual machines are very important to the way that we compute today.
All of these uses of virtual machines are very important to the way that we compute today.
|
As you read on, we will attempt to show you how virtual machines help to solve these important problems, and therefore why they are an important piece of computers today.
When trying to explain the concept of virtual machines, it is first necessary to understand the meaning of the term virtual. Virtual is a term that originally came from optics, to understand objects in a mirror. Objects in a mirror are reflections of an actual physical object but mirrors are not actually that object. This means that the image looks exactly like the actual object and looks to be in the same location. Virtual has evolved to describe pretty much anything that is a ‘simulation’ of a real object nowadays, with terms like virtual memory, virtual disks, and virtual reality. We use the term ‘virtual’ when talking about virtual machines because we would like our virtual machine to look and behave exactly like the real machine. This means the virtual machine is not really the actual machine, but behaves exactly like the actual machine.
Now, in defining the term virtual, we have used the term ‘simulation’. A simulation is something that imitates something else. A good example of a modern day application of a simulation is used in the training of Air Force and Marine pilots. Pilots are trained on flight simulators; computer based machines that look like the cockpit of a jet plane. This machine gives the pilot the look and feel of actually flying a real jet plane, without ever having to leave the ground. This simulator imitates everything from the actual maneuverability of the plane, to the effect of wind and weather conditions on flying the plane. In essence, the simulator allows the pilot to have all of the facilities and feelings of flying a real jet plane from the safety of the ground.
A simulation is something that imitates something else.
|
This concept of simulation, or imitating another object has been carried over into the design of computer systems. Although there are many incarnations of virtual machines, at it’s most basic, a virtual machine is the appearance of a machine that is not actually there. This is of course a very general definition and not a very clear one, but bear with us.
Let us now think about the concept of a machine in general. All machines have one thing in common, whether that machine is a refrigerator, a VCR, or a computer; they all have a certain set of instructions that they are designed to carry out. These instructions make up an instruction set. An instruction set for any machine can be thought of as a box of Lego’s, where these Lego’s are put together to form a whole object. With machines, these Lego’s are instructions, and they are used to tell a machine what to do, or what tasks to perform.
With virtual machines, the virtual really refers to these sets of instructions. There are many types of virtual machines, but the common theme between them is the idea of simulating an instruction set. Each virtual machine uses a virtual instruction set which the user has access to, and then the virtual machine "maps" these virtual instructions to the real instruction set of the computer. This mapping is demonstrated in Figure 1.1 below.
There are four major schools of thought in the virtual machine world. The first is a nearly one-to-one mapping, represented by the IBM virtual machine model. The second lineage consists of a mapping of every instruction in the machine with a virtual instruction, represented by the Java virtual machine. The Unix virtual machine model and the OSI virtual machine model represent the final two models we will cover. These models map some of the instructions directly, while some others are calls to the operating system’s functions directly.
|