Skip navigation


Saw a fun talk at the Eurosys conference today on Otherworld, a facility that allows applications to recover after an OS crash. It included a demo of an editor running over Linux running over a virtual machine. Fault injected into Linux, which crashes, reboots, and restores the editor to its previous state. Nifty. The authors point out how nice this would be for a very stateful app — say mysql running on in-memory files. (Fast and easy, right? Though clearly not a good idea relative to a real main memory db with smart logging, e.g. TimesTen, in terms of performance or reliability.)

But this got me thinking about the datacenter software stack we’re starting to take for granted, and I no longer see why we need an operating system at all.

Consider the stack:

  • the virtual machine monitor (vmm) isolates and manages the hardware in a minimalist fashion, exposing the x86 interface as a programming model
  • the OS “manages” the virtualized hardware, and provides a unix-like programming model for low-level development, including process models, memory models, and system libraries.
  • for a large class of applications, a language runtime (jvm, ruby interpreter, etc) bridges the os programming model to a higher-level model for programmers, including threading models, garbage collection, and system library wrappers
  • app code in a high-level language (java, ruby, python) captures the intent of the application programmer

Pretty thick software stack. And it’s clear which piece of it should be disintermediated: the OS, which no longer “operates” anything real, it just provides unix and libc as a programming model for developers of language runtimes. That’s fine, but there are only a handful of those runtimes and they could be ported to run on the vmm (is that any harder than embedded java vms?). Once that’s done, who needs an os? If unix/libc has any use left at all, its to play the role of a “cvm” for people who want to run legacy C code.

Now this is a bit reductive and it’s easy to quibble about ways that it ignores certain aspects of current practice. Still, projecting forward 5 or 10 years, it seems doubtful to me that such stuff matters. If we’re still running Linux in the cloud by then, it will be a vestigial burden that nobody really wants or needs. My guess is that language runtime engineers will do away with it — or much of it. (And maybe Intel and the vm folks can get rid of the more baroque parts of the x86 interface too…)

I’ve been discussing this in the Linux world, but it seems even more urgent for Microsoft, and I’m sure the vmware/emc/cisco cabal makes them very nervous. Not to mention google app engine.

What do you think? Is the next evolutionary step a vmware-native jvm, and is that easy? Should we build our Bloom interpreter to run natively on xen?

Advertisements

5 Comments

  1. Ok, answer to the first question was explored a couple years back: BEA LiquidVM did a JVM over VMWare. Anybody have experience with that? Oracle is still selling it apparently.

  2. You are just playing games with semantics. Whatever layer isolates applications from each other and from the hardware is, by definition, the OS.

    If you want to drop GNU/Linux and keep VMWare and the JVM, that’s fine. Any number of variations are possible. Android, for example, dropped GNU but kept Linux and something like the JVM.

    • Hey — using the word “just” in proximity to the word “semantics” is guaranteed to get a rise out of an academic, especially one designing a programming language! Semantics are everything! :-)

      Seriously, though, I do kind of agree with you at the high level — there’s always a need to abstract the hardware, it’s just the players that may need to change. Still, there are two important practical effects here. First this could have big ramifications for those players, and I’m sure that Microsoft and VMWare and others have these kinds of issues on their minds, if not this particular scenario. Second, this could really change the environment for programming languages, systems infrastructure, and hardware abstractions. We’ve been living in a UNIX-inspired world for almost 40 years now, and if that layer is removed, there’s even more room for change. The change is coming anyway due to parallelism, but changes to the hardware abstractions could also be big.

      So maybe it’s not semantics at all … maybe I’m only playing with the practical details. :-)

  3. “The bottom line is that operating system services in many existing systems are either too slow or inappropriate. Current DBMSs usually provide their own and make little or no use of those offered by the operating system. It is important that future operating system designers become more sensitive to DBMS needs. A DBMS would prefer a small efficient operating system with only desired services. Of those currently available, the so-called real-time operating systems which efficiently provide minimal facilities come closest to this ideal. On the other hand, most general-purpose operating systems offer all things to all people at much higher overhead. It is our hope that future operating systems will be able to provide both sets of services in one environment. ”

    Michael Stonebraker, in a paper entitled “Operating System Support for Database Management”, back in 1981!

  4. I had a similar idea before – I wasn’t as radical in thinking of getting rid of OSes but more about blending the line between the OS and the hypervisor. It seems natural to me that to make the most informed decisions, the scheduler should be aware of all resources in the hardware cluster, i.e. built into the hypervisor. But I guess when the scheduler is taken out, OSes are no longer “independent” and it is debatable whether we can still call it OS or not.


2 Trackbacks/Pingbacks

  1. […] This post was mentioned on Twitter by Joe Williams, tweetcloud. tweetcloud said: The death of the OS?: Saw a fun talk at the Eurosys conference today on Otherworld, a facility that allows applica… http://bit.ly/dxvhTK […]

  2. By EMC += Greenplum « Data Beta on 06 Jul 2010 at 9:52 pm

    […] technical trends I’ve posted about before, regarding both data-centric programming and the decreasing reliance on traditional notions of operating systems in the […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: