I discovered MirageOS. I find the idea elegant.
It looks to me like a compiler of the whole Operating
System.<p>I wondering what are the pros and cons? How does they relate to micro kernels?
The main reason I've found is that very few people/organizations have focused on making it a first class citizen. A weekend hacker or two might work for a new web framework but unikernels involve entire operating system development. To compare - linux has been around for ~ 30 years.<p>This is something we are focused on at NanoVMs. (yes, I work there).<p>As for the other questions - unikernels descend from the microkernel family tree and some implementations (ours included) blur that line considerably. Andrew Tanenbaum was right. :)<p>Pros:<p>* many are <i>much</i> faster than comparable linux applications for boot and runtime (NEC can boot theirs in 5ms - fork takes ~3ms, docker containers boot in ~200ms)<p>* many are dramatically more secure (ours has the same aslr/page protections as linux does yet also doesn't have the notion of a shell, users or the ability to run other processes)<p>* if you have your own infrastructure you can massively consolidate your vms (this is a big benefit but you won't get this on public cloud)<p>Cons:<p>* in the past you had to manually port your application (this was too much to ask a user for) -- this is changing in many different implementations<p>* there are some hard constraints (eg: single process) for a lot of implementations (for instance postgres would need to be re-written)
It is hard to innovate in operating systems because people already have a lot of software written for POSIX and POSIX-like systems and if you wanted to make something entirely different people won't like it.<p>The Unikernel idea is one of the better ones. I've thought a lot about what an async-first operating system would look like and it is hard to picture, particularly when virtual memory is a fundamentally blocking abstraction.
An overview of unikernels <a href="https://github.com/cetic/unikernels" rel="nofollow">https://github.com/cetic/unikernels</a>