Why run several OSes concurrently?
In the enterprise space, one of the main drivers is quality of service (QoS). Different services can be protected from interference (eg. a highly-loaded service degrading a lightly-loaded one) by running them on different machines. Replacing physical machines by virtual machines allows this QoS isolation to happen on a single platform, with significant cost savings. This is not normally a consideration in embedded systems, where different sub-systems all contribute to the overall system mission. There are, however, classes of embedded systems that are much more like enterprise-style servers, such as high-end network infrastructure devices. This kind of systems may indeed be served adequately by an enterprise-style hypervisor. This class of system, however, will be ignored in the remainder of this article. The typical reason for using multiple OSes in an embedded system is “horses for courses.” Modern embedded devices frequently contain massive amounts of software, measuring in the mill