Full Guest OS Virtualization
Full Guest OS virtualization provides the ability to simultaneously run multiple independent operating systems on the same hardware platform. Guest OS virtualization reduces the cost of dedicating a hardware platform to every guest OS. Guest OS virtualization also allows guest OSs to be transferred to other physical hardware platforms running the Type Zero hypervisor, which greatly improves that ability to perform hardware maintenance and upgrades.
The LynxSecure Development System includes tools to build bare-metal applications which are simple applications that run directly on the CPU cores without relying on the assistance of a guest operating system. Bare-metal applications are extremely useful for computing environments that require assurance that application logic is correct. By removing the complex dependencies from an operating system, verifying correctness of the bare-metal application becomes drastically easier. It also allows highly trusted components to co-exist with general purpose guest OS’es like Windows & Linux thereby creating a security posture that is vastly superior to non-virtualized solutions.
Figure II1. LynxSecure Application with data flow control
Guest OS CPU Allocation
The LynxSecure Separation Kernel provides the ability to assign one or more CPU cores to guest OSs or provide the ability to share a CPU core between multiple guest OSs (Depicted in Figure II 2).
Figure II2. LynxSecure CPU Allocation
LynxSecure provides architects explicit control over system memory to assign to guest OSs, LSAs, communication channels. LynxSecure guarantees memory resources can only be accessed by predefined authorized subjects.
Guest OS CPU Scheduling
When more than one Guest shares one or more CPU cores, LynxSecure gives users precise control on time duration guest OS execution with a cyclic real-time scheduler. Users can create multiple execution schedules that can be dynamically loaded at runtime to accommodate various load balance usecases. illustrates two guest OSs sharing a single CPU core. The CPU core is prepared with three different execution schedules – A: Guest1 = 75% Guest2=25%, B: Guest1 = 50% Guest2=50%, C: Guest1 = 25% Guest2=75%.
Figure II3. Shared CPU Core Scheduler
Management Guest OS – Virtual Device Server
The LynxSecure Development System supplies dedicated guest OS prepackaged with software services for virtualization solutions that require remote administration features and the ability for guest OSs to share resources such as network interface cards, storage devices, and data files. The virtual device server is an open environment and can be customized to include the necessary tools to support a wide range of solutions.
Guest OS Virtual I/O
LynxSecure provides two methods of I/O – Direct Assignment and Virtual Device Emulation, that allow guest OSs access to I/O peripherals.
Figure II4. Virtual I/O – Direct Assignment vs Shared Device Emulation
Direct device assignment is a customizable feature that gives a guest OS the ability to directly control an external I/O device using its native drivers. Direct device assignment is critical for embedded architectures that need the maximum performance out of I/O devices.
Virtual Device Emulation
Virtual Device Emulation is a device sharing mechanism provided by the LynxSecure Virtualization Layer. The LynxSecure Virtualization Layer provides the option to present an independent virtual device interface to guest OSs. The guest OSs connect to the emulated devices using standard device drivers included in the guest OS. The emulated devices then connect to services running in the virtual device server to multiplex the usage of physical devices. LynxSecure Virtualization Layer can emulate the following devices:
- Video Adapter
- Gigabit Ethernet Controller
- IDE Storage Controller
- Audio Controller
- USB Controller
- PS/2 Keyboard, Mouse
The Hypercall API is a privileged interface from a Guest OS or LSA to LynxSecure to perform privileged routines such as inter-guest communication, guest OS management, and auditing. The Hypercall API plays a critical role in in developing advanced solutions.