Library Operating Systems: Functional Programming for the Whole System


Details
Mindy Preston will be speaking on library operating systems and MirageOS:
A monolithic operating system enforces a hard boundary between your userspace application code and the abstractions on which it depends in the kernel. The application programmer might have some verbal guarantees about the state of the system on which their code is running, but their capability to inspect the parameters of the system is usually incomplete. Worse, actually changing these parameters is often fraught with peril. As a result, the code depending on these systems often can’t make useful assertions about its runtime properties.
A library operating system presents a different approach: instead of an inaccessible kernel, why not provide the underlying functionality with a set of composable libraries, written just like application code? The programmer can examine and even alter implementations of, say, the system clock, or write their own entirely! The operating system becomes visible as a selection of components, composed as the application author requires. The code that underlies your application can work in concert with yours, from development to testing to deployment. Library operating systems don’t run for their own benefit -- everything they do supports your code.
Let’s explore some of the opportunities presented by the flexibility and hackability of library operating systems! Examples will be given using MirageOS, a OCaml library OS framework.

Library Operating Systems: Functional Programming for the Whole System