
Ask HN: What's the difference between a unikernel and an exokernel? - vezzy-fnord
Personally I can&#x27;t tell much. It seems exokernels were a prime research interest from MIT&#x27;s work starting in the mid-90s, before at some point they went off the radar into the 21st century.<p>Now the idea of a unikernel is emerging with the name being unique, but conceptually it strikes me as a set of libOS packages meant to be run as a linked application under a bare metal hypervisor.<p>Then it seems like more of a divergence in the proposed use cases than any significant architectural differences.<p>Any views on this? Will it take off or just become another novelty?
======
Someone
Exokernel was designed to run multiple applications that needn't know of each
other's existence, on real hardware.

The idea behind an unikernel is to run a single application on virtual
hardware.

Both minimize the OS to only provide what the application(s) on the system
need. Exokernel also tried to move as much code as possible from the OS into
the applications. Unikernels do not do that, but do minimize what the 'real'
OS that runs on the hardware need to do.

And something can easily be 'just another novelty' and 'take off'. Whether
unikernels will is anybody's guess, IMO.

~~~
drudru11
They are very similar, but your answer hits on a good distinction between
them. There was a lot of work in Exokernels to allow them to run multiple
libOSs on the same hardware safely and securely.

Another distinction was that Exokernels did require a single language. For
example, each OS asked for packets using a network interface language.

I guess a way to look at it is alluded in another comment I just saw here.
Virtual machine hardware was not even a consideration in those days. An
exokernel played the role of VMM and libOS. The unikernel technology of today
pretty much requires a VMM layer (which is fine).

------
amirmc
I think it's already taking off and the key difference between now and then is
virtualisation. This provides a stable target and avoids the pain of having to
deal with device drivers while also providing good isolation.

Another way of looking at it is that the libOS's time has come. Early versions
like Exokernel and Nemesis were ahead of their time but the wider ecosystem is
now ready to make use of new implementations. Also, Unikernel is a more
general term, whereas Exokernel was largely for a specific project.

You might find the following two references useful.

[http://queue.acm.org/detail.cfm?id=2566628](http://queue.acm.org/detail.cfm?id=2566628)

[http://anil.recoil.org/papers/2013-asplos-
mirage.pdf](http://anil.recoil.org/papers/2013-asplos-mirage.pdf)

------
ahazred8ta
roughly 20 earlier HN threads on libOS -

[https://google.com/search?q=libos+site:news.ycombinator.com](https://google.com/search?q=libos+site:news.ycombinator.com)

