Virtual Machines: An Introduction to Platform Virtualization

This post is the first of an eight-part series introducing virtualization for security and DevOps productivity in the aerospace domain.

By Julian Thomson, Performance Software Product Leader

While virtual machines have been around since the early days of computing, the increasing popularity of cloud and highly scalable architectures, as well as the growing sophistication of cyber-attacks, has made virtualization one of the most sought-after, and misunderstood, technologies in computing. At its most basic level, virtualization allows developers and end-users to use software to emulate all or part of a system’s hardware, which can have certain advantages over traditional computing.

Traditionally, we think of virtual machines as a software entity behaving as a general-purpose computer. In a rather Turing-esque fashion, an application doesn’t know if it is running on a hard computer or inside a virtual representation of a hard computer. However, in the world of real-time, intelligent, embedded hardware systems that perform domain-specific functions such as avionics, medical systems, or intelligent vehicle control, the term virtual platform helps us to discern between the world of computing and the world of specific functionality systems. A virtual machine is a specific example of a virtual platform, one looking and feeling like a general-purpose computer.

There are many different types of virtual machines, but most fall into one of two major categories. The first of these, emulators, are software programs that are designed to simulate all the hardware and peripheral features of a platform, i.e. the “real” computer. Most emulators run on top of a general-purpose computing platform. When this is the case, the virtual machine software interacts with the real computer’s operating system and peripherals, sometimes appearing within a special application window, and at other times functioning like a regular piece of software in the user’s environment.

The architecture and software of the virtual machine may be similar to, or different from, the architecture of the real computer. For instance, many development environments for embedded computer systems, mobile telephones, and Internet-of-Things devices use emulators running on desktop operating systems like Windows, OS X, or Linux. These emulators are meant to simulate the features of the specialized hardware in a way that is easy to develop and test. Emulators are often used to make applications portable from one kind of hardware to another. The Java Virtual Machine (JVM) was created specifically to allow applications written in Java to run on any computing platform that supports the machine, regardless of the underlying hardware. Java accomplished this by creating a fully virtual instruction set, called Java byte code, that can be efficiently emulated on a wide variety of processors. Java applications all run inside of a byte-code-interpreting virtual machine, though each platform-specific implementation of Java presents a look-and-feel native to that platform.

There are also full-platform emulators for Intel-family PCs. The most popular of these are Dell’s VMware and Oracle’s Virtual Box. These emulators run as software on Microsoft Windows and Mac computers, but function as computers-within-a-computer, running their own operating systems, applications, and networking. By using a platform emulator, it is possible to run Windows applications on a Mac or vice versa, as well as to have a separate, isolated version of the same operating system for a special purpose.

The second category of virtual machines takes advantage of specific emulation features in the underlying hardware, as most modern computer architectures now have built-in support for virtualization. Hypervisors are a category of lightweight virtual machines that take advantage of special instructions in Intel and RISC processors to create separate containers with the computer’s memory and processing space. Cloud computing is made possible by data centers using hypervisor-based virtualization, allowing the on-demand creation of new virtual servers and websites. While servers and applications belonging to many different companies are hosted on the same physical hardware, virtualization is able to provide logical separation, privacy, and security.

Embedded and high-reliability applications such as aerospace and defense can benefit significantly from incorporating platform virtualization into their software development and delivery processes. Platform virtualization offers a variety of advantages to organizations looking to improve development scalability, security, and performance as they migrate to a DevOps paradigm. In an always-on environment, migrating to virtualization can help the DevOps team deliver software more frequently and more quickly and automatically conduct high-fidelity testing to find bugs sooner. Because both cloud and on-premise data centers leverage large collections of identical hardware, deploying virtualization also offers improved scalability and reliability from traditional hardware lab environments. Virtualization may also reduce the need for costly specialized hardware, by moving traditional embedded software development onto virtual machines, or “virtual platforms”, hosted on low-cost, commodity systems. Finally, platform virtualization can also offer added security, especially in sensitive applications like communications or flight control where data integrity and separation is critical.