Hey Aslam,
It is certainly possible to have dynamic loading of your child processes at runtime: but that would require a bit of work. As far as I can tell, you would need to use one of two approaches:
(1) Include an initrd (initial ram-disk) and a filesystem driver in your root task image, and pack your user apps (app1, app2, etc) into the initrd. Then dynamically load your user apps from the initrd at
runtime.
(2) Include a disk driver and a filesystem driver in your root-task image. Then install your user apps on a physical disk. Then at runtime, use your disk driver and filesystem driver (embedded within your
root task) to load your user apps from your physical disk.
Approach #1 requires less work, and is slightly "cleaner" in the sense that it allows you to boot your final system in multiple stages and also to support diskless systems.
Approach #1 allows you to defray some tricky design decisions.
Both have tradeoffs. The main takeaway is that seL4 is a microkernel, and it does not provide you with drivers and it expects you to write the drivers to access your storage devices and the filesystems on
those storage devices from scratch. In addition, you'll also need to design some kind of driver API/Framework before you can even begin to write your storage and filesystem drivers.
There's a silver lining: by the end of this year, we should have published an extensible, fairly well generalized driver framework which you can just conform to in your implementation. But you'll still have to write the drivers for your target system though,
sorry ;)
--
Kofi Doku Atuah
Kernel engineer
DATA61 | CSIRO