Microsoft Releases Code for ‘Multikernel’ Research OS ‘Barrelfish’

Most of us are probably aware of Singularity, a research operating system out of Microsoft Research which explored a number of new ideas, which is available as open source software. Singularity isn’t the only research OS out of Microsoft; they recently released the first snapshot of a new operating system, called Barrelfish. It introduces the concept of the multikernel, which treats a multicore system as a network of independent cores, using ideas from distributed systems.

The new concept operating system is a joint project byETH Zurich and Microsoft Research, Cambridge. The team argues that “the challenge of future multicore hardware is best met by embracing the networked nature of the machine, rethinking OS architecture using ideas from distributed systems.” “We investigate a new OS structure, the multikernel, that treats the machine as a network of independent cores, assumes no inter-core sharing at the lowest level, and moves traditional OS functionality to a distributed system of processes that communicate via message-passing,” they write in their article “The Multikernel: A new OS architecture for scalable multicore systems“.

They didn’t just investigate the concept, they also implemented it to show that it can work. They call their multikernel implementation ‘Barrelfish’, and according to them, it shows promising performance figures compared to other, more conventional operating systems. On top of that, the multikernel concept should be more scalable and adaptable for the future.

The team believes that challenges faced by traditional ccNUMA and SMP high performance computing machines are not the same as the challenges a general purpose operating system will face in the future. They argue that single computers increasingly resemble networked systems, “and should be programmed as such”.

Multikernel.

This resulted in the multikernel model. “In a nutshell, we structure the OS as a distributed system of cores that communicate using messages and share no memory,” they write. It’s based on three principles:

  1. Make all inter-core communication explicit.
  2. Make OS structure hardware-neutral.
  3. View state as replicated instead of shared.

“These principles allow the OS to benefit from the distributed systems approach to gain improved performance, natural support for hardware heterogeneity, greater modularity, and the ability to reuse algorithms developed for distributed systems,” they claim.

The article goes into quite some detail about the motivations, implementation, and performance figures, but a lot of that simply goes way over my head, so I’ll let the more educated people on this subject take over from here (lovely to have a reader base filled with people who actually understand stuff like this). It all sounds very intriguing and interesting to me, in any case.

The team has published their first snapshot release, licensed under a BSD-like license.

69 Comments

  1. 2009-09-26 1:55 am
    • 2009-09-26 4:52 am
      • 2009-09-26 5:07 am
        • 2009-09-26 5:14 am
          • 2009-09-26 5:31 am
          • 2009-09-26 6:02 am
          • 2009-09-26 6:51 am
          • 2009-09-26 7:20 am
        • 2009-09-26 7:00 am
          • 2009-09-26 6:57 pm
          • 2009-09-27 7:23 pm
        • 2009-09-27 4:18 am
      • 2009-09-26 5:10 am
        • 2009-09-26 3:04 pm
          • 2009-09-27 2:22 am
      • 2009-09-26 7:32 am
        • 2009-09-26 9:17 am
          • 2009-09-27 7:15 am
          • 2009-09-27 5:47 pm
      • 2009-09-27 4:19 am
      • 2009-09-28 6:44 am
    • 2009-09-26 10:42 pm
      • 2009-09-27 4:45 am
  2. 2009-09-26 4:08 am
  3. 2009-09-26 4:43 am
    • 2009-09-27 6:58 pm
  4. 2009-09-26 7:09 am
    • 2009-09-26 7:27 am
      • 2009-09-26 8:45 am
    • 2009-09-26 8:14 am
      • 2009-09-26 8:32 am
        • 2009-09-26 9:18 am
          • 2009-09-27 2:33 am
          • 2009-09-27 4:09 am
          • 2009-09-27 9:02 am
          • 2009-09-27 9:30 am
          • 2009-09-27 4:00 pm
    • 2009-09-26 8:46 am
      • 2009-09-26 10:08 am
        • 2009-09-26 4:51 pm
        • 2009-09-26 5:22 pm
          • 2009-09-26 5:42 pm
        • 2009-09-27 9:54 am
    • 2009-09-26 4:57 pm
  5. 2009-09-26 10:52 am
    • 2009-09-26 11:09 am
      • 2009-09-26 3:51 pm
        • 2009-09-27 4:31 am
      • 2009-09-28 1:58 am
    • 2009-09-26 9:45 pm
    • 2009-09-27 4:07 pm
      • 2009-09-27 5:21 pm
  6. 2009-09-26 2:46 pm
  7. 2009-09-26 3:01 pm
  8. 2009-09-26 5:42 pm
  9. 2009-09-27 12:42 am
  10. 2009-09-27 9:03 am
    • 2009-09-27 8:21 pm
      • 2009-09-27 8:52 pm
        • 2009-09-27 10:28 pm
          • 2009-09-28 10:21 am
          • 2009-09-28 10:50 am
      • 2009-09-27 8:56 pm
        • 2009-09-27 9:41 pm
          • 2009-09-27 10:26 pm
    • 2009-09-28 1:53 am
      • 2009-09-28 5:10 am
  11. 2009-09-28 4:00 am
  12. 2009-09-28 9:52 am