A computer architecture includes a first operating system (COS), which may be
a
commodity operating system, and a kernel, which acts as a second operating system.
The COS is used to boot the system as a whole. After booting, the kernel is loaded
and displaces the COS from the system level, meaning that the kernel itself directly
accesses predetermined physical resources of the computer. All requests for use
of system resources then pass via the kernel. System resources are divided into
those that, in order to maximize speed, are controlled exclusively by the kernel,
those that the kernel allows the COS to handle exclusively, and those for which
control is shared by the kernel and COS. In the preferred embodiment of the invention,
at least one virtual machine (VM) runs via a virtual machine monitor, which is
installed to run on the kernel. Each VM, the COS, and even each processor in a
multiprocessor embodiment, are treated as separately schedulable entities that
are scheduled by the kernel. Mechanisms for high-speed I/O between VM's and I/O
devices are also included.