I should probably also read up on the domain features, that’s not something I 
had heard of before, somehow. Thanks again.


> On Mar 6, 2022, at 5:00 PM, Gerwin Klein <kle...@unsw.edu.au> wrote:
> 
> Hi Isaac,
> 
>>> On 7 Mar 2022, at 04:46, Isaac Beckett <isaactbeck...@gmail.com> wrote:
>>> 
>>>> From the infoflow proof paper
>>> (https://trustworthy.systems/publications/nicta_full_text/6464.pdf)
>>> where it is called the partition scheduler:
>>> "Similarly, the original seL4 scheduler, before partition
>>> scheduling was implemented, was known not to enforce
>>> isolation. We could not prove information flow security until
>>> we had fully and correctly specified the partition scheduler
>>> in the updated abstract specification. Proving information
>>> flow security then required us to show that the scheduler’s
>>> choice about which partition to schedule next can never be
>>> affected by any other partition, as one would expect."
>> 
>> Hello! It was my understanding that seL4 used to not have an in-kernel 
>> scheduler, and scheduling was up to the root task. How did that work?
> 
> seL4 still has an in-kernel scheduler, scheduling was never up to to 
> user-level tasks (incl the root task).
> 
> User-level threads may have capabilities which allow them to set scheduling 
> parameters (esp on MCS), but scheduling itself happens in the kernel. 
> 
> If you push it you can effectively implement user-level scheduling with this 
> in MCS if you combine it with other kernel mechanisms like notifications and 
> scheduling context donation. This is useful for implementing specific 
> real-time scheduling regimes for instance, but usual systems would just set 
> standard scheduling parameters (period and budget) for the kernel.
> 
> The combination of MCS and the domain scheduler is still not fully explored, 
> which also means that information flow protection under MCS is not fully 
> explored (or proved). There is an obvious-ish way to combine the two, which 
> is to run MCS within each domain. That will not be compatible with usual 
> system schedulability analysis methods, but might still be useful for 
> specific systems.
> 
> Since the MCS proofs are not finished yet, the static domain scheduler + 
> priority round-robin within domains is still the default configuration.
> 
> 
>> And why was the choice made to add the MCS features? Basically, why the 
>> change from having scheduling in the kernel vs. in userspace?
> 
> There was no such change. MCS is just a much more flexible in-kernel 
> scheduling mechanism, and by default user level, even on MCS, would not be 
> involved with scheduling apart from setting initial parameters.
> 
> In general, the philosophy is that the kernel should provide mechanisms, not 
> force policy. For scheduling, priority round-robin can be seen as a specific 
> scheduling policy. MCS is a mechanism that allows the user to configure a 
> more diverse set of policies.
> 
> Cheers,
> Gerwin
> 
_______________________________________________
Devel mailing list -- devel@sel4.systems
To unsubscribe send an email to devel-leave@sel4.systems

Reply via email to