Mirage OS
About us
Our architecture
The MirageOS architecture can be divided into operating system libraries, typed signatures, and a metaprogramming compiler. The operating system libraries implement various functionalities, ranging from low-level network card drivers to full reimplementations of the TLS protocol, as well as the Git protocol to store versioned data. A set of typed signatures ensures that the OS libraries are consistent and work well in conjunction with each other. Most importantly, MirageOS is also a metaprogramming compiler that can input OCaml source code along with its dependencies, and a deployment target description to generate an executable unikernel, i.e., a specialised binary artefact containing only the code needed to run on the target platform. Overall, MirageOS focuses on providing a small, well-defined, typed interface with the system components of the target architecture.
-
Fast Start
MirageOS applications take a few milliseconds to start-up instead of the few minutes that traditional OS takes.
-
Small Binaries
MirageOS binaries are self-contained: they do not need an additional OS to execute. Despite this, the size of MirageOS binary is usually a few megabytes.
-
Small Footprint
MirageOS applications use a few megabytes of memory, while traditional applications and their associated OS waste gigabytes for simple applications.
-
Safe Logic
MirageOS applications are written in OCaml, an industrial strength programming language supporting functional, imperative, and object-oriented styles.
Development process
License
The Mirage codebase is released under the ISC license, with some portions of code released under LGPLv2.
Sub-Projects hosted by the Xen Project team typically use GPLv2. In the case of Mirage, it is necessary to use a permissive open source license such as “ISC” because Mirage based microkernels need to be statically linked with applications to form a stand-alone appliance.