1 Comment

Re-imagining Operating Systems: Xen, Unikernels, and the Library OS

As a Professional Problem Solver, much of my work deals with installing, configuring, and managing the Operating System layer of an application stack.

Managing the OS layer has been the work of System Administrators for many years. With the advent of virtualization, it became relatively easy to create and destroy virtual machines. With the “cloud” many of us no longer even own physical servers. With DevOps tools and configuration management, we’ve created abstractions for configuration and automated provisioning.

Yet…

The operating systems have remained relatively the same. When we’re not using a PaaS like Heroku, our application servers are often full Linux VMs. Even with containerization tools like Docker, the underlying OS is fundamentally the same. The advent of virtualization brought many changes, but we still haven’t seen the full impact of this paradigm shift.

We’re at the point now where we can look at the system as a whole and start to refactor it. We can eliminate unused components and invent new ones, more tailored to our current context. I’ve been keeping tabs on a handful of projects that re-imagine the role of the OS layer in the modern application stack.

One of the most interesting approaches leans heavily on the interface provided by modern hypervisors.

Here are a few of the projects now targeting Xen directly:

These projects all seem to ask, “do we really need to interject a redundant OS between our application code and the hypervisor at all?” OpenMirage, in particular, sees this as a problem that can be best solved by the compiler. The “dead code” of unused portions of the OS can be eliminated at compile time, leaving only what is necessary for the application to run.

Other projects in a similar vein are also worth a look:

Or, if papers are your thing: