To alleviate some of the pain points that I just mentioned, what we want to ask
is the question, can virtualization help? We've seen
how virtualization is a powerful technique for hosting
multiple operating systems images on the same hardware
without a significant loss of performance. In the
context of a single processor. Now, the question
is, can this idea be extended to a multiprocessor?
And this is the thought experiment that was carried out at Stanford, in the
cellular disco project. Cellular disco combines the
idea of virtualization. And the needs for
scalability of parallel operating system, commensurate with
the underlying hardware. So there is a
thin virtualization layer, which is the cellular
disco layer. And the cellular disco layer manages
the hardware resources namely CPU, the I/O
devices, memory management and so on. Now
the most hairy part in dealing with any operating system is the IO management.
Even in a desktop environment and a PC environment most of the code is
really third-party code that is device driver
code that is sitting inside the operating system.
And so that is the thing that is
one of the hairy parts. Managing the IO subsystem.
So in this start experiment, what cellular disco
does is to show by construction that you can
alleviate some of the pinpoints in building an
operating system, especially with this I/O management. So I'm
going to focus on just the I/O management part and on how IO is handled with the
cellular disco sitting in the middle between the
virtual machine that is sitting on top. And
the, the physical hardware sitting at the bottom.
So, this particular thought experiment was conducted on
a machine called the Origin 2000 from, SGI.
It's a 32 node, machine. And that was
the shared memory multiprocessor on which this, thought
experiment was conducted. And the, operating system is
a flavor of a UNIX operating system called
IRIX. That's the host operating system running on
top of the, Origin 2000. The VMM layer
cellular disco sits in between the guest operating
system, and the. Host operating system, and the
way visualization is done is a standard virtual
machine trick, and that is trap and emulate.
And what they've done is shown the construction that
it is possible to do this and do this efficiently. And let's just walk through
what happens on an I/O request. The guest
operating system makes an IO request. And this
results in a trap into the VMM layer, cellular disco. Cellular
disco rewrites this request as coming from it, rather
than from the guest operating system. And. Makes the actual I/O request,
this is the virtual request coming from the guest
operating system, so this is the actual I/O request
that is passed down to the host operating system,
Irix in this case. And the Irix operating system
does its own thing, the, whatever the device travel
is going to do, and carries out that operation, And
once that operation has been scheduled, it might indicate
that, yes, I've scheduled it. Let's say, it's a
DMA operation. So it might say that, yes, I
scheduled it, sends it up to them, the Host
Irix operating system. And the Host Irix operating system
passes it to Cellular Disco, passes it to the
Guest Operating System. So this is the path of
dispatching an IO request. Now, what happens when the
I/O request actually completes? This is where the trick
comes in of trap and emulate. Because Cellular Disco
has made it appear that this request is really coming from it, it is installed,
when it gave this I/O request, it installed in it The place that needs to
be called in the VMM layer. So
when the completion interrupt comes in, normally, in
any vanilla operating system, completion interrupt will go
to the host operating system. But Cellular Disco
has faked it When it passed the request
to say that when a completion request comes in,
call me. That's what was the magic that
was done in the forward path. And therefore, when
the completion request happens, it really calls the
VMM layer, and the VMM layer does what it
needs to do and Makes it appear as though
it's a normal interrupt coming from the device back
to the host Irix operating system and the host
Irix operating system in turn passes it back to
Cellular Disco and then onto the Guest operating system.
So this is the trick by which it does the
trap and emulate for dealing with every I/O subsystem
so there's no need to change Any part of
the I/O subsystem in the host operating system, everything
is being managed by this trick of trap and emulate
that is happening in the cellular disco layer.
So, the standard virtual machine trick of trap
and emulate is being used extensively in providing
the services that you need. In a guest
operating system, that is running on a multiprocessor. So the start experiment
was, was really to show by construction how to do this
idea of developing an operating system for a new hardware,
without completely rewriting the operating system, by
exploiting the facilities that, that maybe their already
In the host operating system. Once again this
should remind you of another thing that we've
seen before when we discussed operating system
structures and that is, lead case, showing by
construction. That a microkernel design can be as
efficient as a monolithic design. Similar to that,
what these folks have done is that by
construction they have shown that a virtual machine
monitor can manage the resources of a multiprocessor
as well as a native operating system. And they
showed it by construction. This cellular disco runs
as a multithreaded kernel process on top of, the
host operating system. Irix in this case. And
the other thing that they have shown the construction
is that the overhead of doing it this
way providing the services that is needed for
the desktop operating system. Through this cellular disco
virtualization layer can be kept efficient, keep the overhead
low, and the virtualization can be efficient, and
they've shown that it can be done within 10%
for many applications that run on the guest
operating system. So that's the proof of the pudding
is of course, the ED. And so what they have shown is that the
virtualization overhead can be kept low, by
really showing how applications can be run
on a guest operating system and through the services provided by the VMM layer,
cellular disco, they show that the drop in performance can be kept fairly low.