For those, such as myself, who were not previously familiar with it:
"MirageOS is a library operating system that constructs unikernels for secure, high-performance network applications across a variety of cloud computing and mobile platforms. Code can be developed on a normal OS such as Linux or MacOS X, and then compiled into a fully-standalone, specialised unikernel that runs under a Xen or KVM hypervisor."
I really like the idea of unikernels, but I find it a little strange to hamper the performance of one by using Ocaml when performances one of the most significant advantages.
I'll be a bit of a devil advocate here but both the choice of words and attitude are obscuring facts.
First with a name like MirageOS and calling itself a unikernel, you'd think this was an OS. But this actually has no driver, no user-space, no file system. It receives boot parameters and communicates over TCP or UDP. Mmmm I'd call that a program that receives command-line parameters and communicates over the network. But "program" sounds a lot less exciting than "unikernel".
It does not even manage memory or processes or anything like that. It uses a thin C wrapper to load on virtual machines or . Just like you could with any program that does use any OS facilities.
It does not have process, praising cooperative multi-tasking over multi-threading or multi-processing. Cooperative multi-threading means every part of your system is dependent on every other part behaving correctly to yield the CPU at short interval. Mis-design any single algorithm in the system to be quadratic or worse and you can have long, unpredictable scheduling delays. Forget doing anything requiring real-time responses. Even semi-regular response times are not guaranteed under cooperation.
You could achieve the same goals with a statically linked program in any languages...
The exciting thing is exactly that it lacks all those capabilities. Thus the attack surface is smaller.
> You could achieve the same goals with a statically linked program in any languages...
Typically statically linked programs still run under an operating system like Linux. (And Linux might run on top of a hypervisor.) Linux is a complicated beast, with lots of (undiscovered) vulnerabilities and bugs.
MirageOS cuts out Linux.
Basically, MirageOS treats the hypervisor as if it was an operating system. It's just an accident of history, that we call processes running on a hypervisor 'virtual machines', but fundamentally a hypervisor is just a special kind of OS.
16 comments
[ 0.22 ms ] story [ 57.3 ms ] thread"MirageOS is a library operating system that constructs unikernels for secure, high-performance network applications across a variety of cloud computing and mobile platforms. Code can be developed on a normal OS such as Linux or MacOS X, and then compiled into a fully-standalone, specialised unikernel that runs under a Xen or KVM hypervisor."
https://mirage.io
It seems an interesting idea.
https://github.com/anuragsoni/ocaml-opium-unikernel/blob/mas...
If not mistaken one should be able to use ReasonML[1] as a language frontend with this as well, thereby bringing down the entry barrier.
https://reasonml.github.io/docs/en/what-and-why
(Speaking of grants, does anyone know any funding opportunities similar to NGI Pointer but in the US?)
These are not US-only but worth a look nevertheless:
https://github.com/nayafia/microgrants
https://nlnet.nl/propose/
https://www.nitrokey.com/products/nethsm
https://www.calculatorti.com/os/mirageos/
Better Link: https://www.ticalc.org/archives/files/fileinfo/139/13949.htm...
First with a name like MirageOS and calling itself a unikernel, you'd think this was an OS. But this actually has no driver, no user-space, no file system. It receives boot parameters and communicates over TCP or UDP. Mmmm I'd call that a program that receives command-line parameters and communicates over the network. But "program" sounds a lot less exciting than "unikernel".
It does not even manage memory or processes or anything like that. It uses a thin C wrapper to load on virtual machines or . Just like you could with any program that does use any OS facilities.
It does not have process, praising cooperative multi-tasking over multi-threading or multi-processing. Cooperative multi-threading means every part of your system is dependent on every other part behaving correctly to yield the CPU at short interval. Mis-design any single algorithm in the system to be quadratic or worse and you can have long, unpredictable scheduling delays. Forget doing anything requiring real-time responses. Even semi-regular response times are not guaranteed under cooperation.
You could achieve the same goals with a statically linked program in any languages...
> You could achieve the same goals with a statically linked program in any languages...
Typically statically linked programs still run under an operating system like Linux. (And Linux might run on top of a hypervisor.) Linux is a complicated beast, with lots of (undiscovered) vulnerabilities and bugs.
MirageOS cuts out Linux.
Basically, MirageOS treats the hypervisor as if it was an operating system. It's just an accident of history, that we call processes running on a hypervisor 'virtual machines', but fundamentally a hypervisor is just a special kind of OS.