On 12/16/18, Anna.Lyons@data61.csiro.au
The root task can act as a loader to load multiple images according to whatever policies suit the system. One example loader we have is the capdl loader (https://github.com/seL4/capdl) which can load capabilities and set up processes based on a specification. Camkes (https://docs.sel4.systems/CAmkES/) can be used to initialise such specifications.
CAmkES is good for building static embedded systems (excluding stuff running in VMs), but can't really do anything more AFAIK. If you're trying to build a general-purpose OS it's far from ideal. I guess it might be possible to build the lowest user-mode part of a general-purpose OS out of CAmkES components with one component acting as a dynamic loader, but that might over-complicate the design. For UX/RT I'm just going to build the lowest-level components (core VFS and process/memory management) into the root server since I can't see much benefit to splitting them across different processes (each component will be a separate Rust crate though).