3.2 Scheduling basics

Scheduling in Ironclad is based broadly on ARINC 653 partitioning and process models. Like the standard specifies, it employs 2 hierarchies of schedulable entities, the thread cluster, and the thread (or partition and process in ARINC nomenclature respectively).

Each cluster needs to have a percentage of CPU time assigned at creation (which can be modified later on), that the scheduler will uphold with preemption, effectively promissing that any given cluster will be given, at least, the specified execution time. Validy of the cluster configuration is checked when adding, deleting, or modifying individual clusters.

Slack time (time not covered percent-wise by any cluster) will be used as seen fit, while not breaking scheduler guarantees, in an unspecified way. Thus, it shall be treated as UNDEFINED BEHAVIOUR by system users, and it is the responsability of the user to configure the scheduling to keep this into account. It is also why the above paragraph mentions "at least", as unspecified time can be assigned to other clusters.

Ironclad supports multicore configurations, shuffling cores around clusters, while always keeping the assigned slices for each cluster.