5 ms·
Ask HN: What's the difference between a unikernel and an exokernel?
Personally I can't tell much. It seems exokernels were a prime research interest from MIT's work starting in the mid-90s, before at some point they went off the radar into the 21st century.
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.
Then it seems like more of a divergence in the proposed use cases than any significant architectural differences.
Any views on this? Will it take off or just become another novelty?
- amirmc 11y agoI 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 11y agoroughly 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
- Someone 11y agoExokernel 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 11y agoThey 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).