Dynamic Domain Scheduler for seL4
Proofcraft delivered the implementation and formal proof of more flexible domain scheduling in seL4.
Before the change, the seL4 security proofs, and in particular the proof of information flow enforcement, required a fully static schedule that was compiled into the kernel. This meant that, when using seL4 to enforce the information flow boundaries between applications, developers were required to provide a fixed predetermined amount of time for each domain, for the entire lifetime of the running system. This strict policy made it hard to apply information flow control in practice and to support in SDK-style development such as the Microkit.
Proofcraft proposed a new seL4 runtime API (Application Programming Interface) allowing the loading of semi-static domain schedules. This means that a system with information flow protection can go through different phases at runtime that can satisfy different domain timing requirements. For instance, a boot phase of the system can have longer time slices to allow virtual machines to start without overrunning their domain time allocation, and an operational phase of the system can provide shorter time slices so that each domain can be responsive to outside interaction. Additionally, an SDK-based system such as the Microkit can use the new API to set a domain schedule at boot time.
This new seL4 API is implemented, verified and available in seL4 15.0.0.
