Many embedded system designers are considering adopting virtualization technology in their applications, and for good reason. Benefits such as hardware cost savings, isolation and footprint reduction make virtualization an attractive option.
Choosing a virtualization solution, however, can be intimidating. Given the variety of architectures and products available, just knowing the right questions to ask can require that the embedded designer have an in-depth knowledge of CPU features, multicore architectures, privilege levels, virtualization techniques and more.
This article attempts to ease the process by posing 10 important questions that any embedded engineer or manager considering should weigh carefully.
Virtualizaton lets multiple OSes run simultaneously, but picking the right enabling software is no easy task
Click on image to enlarge.
Before diving into these questions, it is helpful to have a basic understanding of what virtualization technology is and how it can be advantageous for some embedded designs. In short, virtualization is a technology that enables running more than one operating system a computer simultaneously. The key piece of system software that accomplishes this goal is a hypervisor (equivalently known as a virtual machine monitor, or VMM)
Hypervisor software can make possible designs that include real-time processing, a user interface and more on a single computer. This means not only that more can be accomplished with just one set of computing hardware, but also that complex systems requiring multiple sets of processing hardware can be built in less space and with less hardware cost than would be possible with traditional solutions.
While at first glance those benefits can sound like an engineer's dream, as with any technology there are important trade-offs that must be considered before adopting a hypervisor.
Furthermore, each hypervisor solution may use a different software architecture and incorporate different features that present unique caveats to the embedded designer.