Supporting legacy code is not limited to legacy RTOS APIs and system calls. It also entails preserving the performance attributes of the legacy code, especially real-time responsiveness. Rather than attempt to tune an application OS such as Linux to meet both legacy and emerging performance requirements, virtualization lets developers deploy real-time software stacks and underlying RTOS code intact.
A real-world example lies in mid-tier mobile phones based on a single processor core. In the legacy design, a single RTOS-based CPU ran both user applications (e.g, dialer, phonebook, games) and radio baseband code requiring exacting responsiveness to meet protocol deadlines. While baseband protocol stacks and drivers could be ported to Linux, they are typically highly optimized for their original embedded host OSes. By migrating such baseband code into a dedicated VM partition, developers can count on continuing to meet baseband performance needs while adding differentiating functionality on Linux or another application OS running in another VM partition.
Many device designs combine a mix of real-time code with general-purpose computing functions that are readily available for application OSes such as Linux and Windows. Segregating real-time and user application code into different partitions lets developers address a broader range of products and designs with a single software base. In this case, spanning low-cost single-core feature phones up through well-provisioned smartphones, and beyond.