Welcome to the new plex86 project. Plex86 has been
rehashed/revitalized to offer a very lightweight Virtual Machine
(VM) for running Linux/x86. Rather than implement a full and heavyweight
VM which can run all guest Operating Systems (OSes), the new approach
is designed to run only Linux VMs, making the new plex86 architecture
on the order of 10x or 100x more simplistic.

As Linux does not make use of "corner cases" which necessitate
complex software techniques (e.g. dynamic translation and other execution
monitoring methods), plex86 now implements no such techniques.
Rather, guest Linux code is executed as-is in a safe VM environment
managed by a VM monitor. Guest kernel code is executed at
a less priviliged level, causing privileged operations to generate
exceptions which are managed by the VM monitor.

Virtualized IO model: because the Linux kernel can easily be
configured before compiling to remove support for most all IO hardware, the
model for handling IO in the guest Linux VM is greatly simplified and improved
in plex86. Excepting for some very lightweight emulation of
a few core components (e.g. interupt controller, system timer), plex86
does not model(emulate) IO hardware. All IO interactions occur through
a Hardware Abstraction Layer (HAL) which passes packets of information
between the guest Linux and the host OS. This not only removes
the complexity/overhead of modeling IO hardware, but allows for more
flexibility in dealing with guest-host interactions and creates a
truly virtualized Linux resource which is unrooted from the actual
hardware. Guest Linux drivers interact with the HAL to manage
IO related interactions (networking/disk/etc) with the host OS.