Hi Demi,

> If I have a manycore machine, what is the best way to migrate a thread from
> one core to another?  Similarly, how can I send a capability (such as to
> memory)?  Cryptography is an option for the second one, but seems inelegant
> and inefficient.

When configured with SMP (which is not currently available in any verified
config
urations) a thread can be migrated to another core within a single kernel
image
cluster by changing its affinity.

The MCS API will change this slightly; each scheduling context is associated
with a core of the kernel image cluster so the scheduling context can be
reconfigured to run on a different core (using that core's ScheduleControl
capability) or a scheduling context already associated with that core can be
bound to the thread to move it to that core.

> Alternatively, are future versions of seL4 expected to
> scale to manycore systems without needing a multikernel?  That would
> presumably make the answer trivial.

IPC between cores in a single kernel image provides all of the necessary
mechanisms for transferring data and capabilities between threads.

In larger multicore machines, the cores would be split up into clusters where
each cluster would essentially map to a single shared L2 cache (more generally,
the clusters would be split to keep accesses to shared data structures in the
kernel in the higher-level caches). I'm not sure how we would approach
transferring kernel objects and capabilities between kernel images on different
clusters whilst preserving the particular design goals that seL4 aims to
implement.

Cheers,
Curtis
_______________________________________________
Devel mailing list
[email protected]
https://sel4.systems/lists/listinfo/devel

Reply via email to