Scheduler Properties #
Here we focus on properties about the scheduler in isolation. In particular, we want to write propeties about who can and cannot take control of the scheduler.
We want to guarantee that active operators do not lose their right to operate.
The scheduler measures time, and thus, we can prove that time advances by shifts.
After step, new scheduler shift starts when the previous one finishes.
Current operators are chosen from the active queue.
The current scheduler operator was in the active queue upon activation.
Operators can retire while operating. However, there is no way of proving that
here, operators directory operates outside of the scheduler scope.
See PoC.Blaster, I tried make the model checker detect this case.
The property that the current operator operating is active is a property of the composition of the OperatorDirectory and Scheduler modules.
Equations
- Scheduler.Properties.ActiveCondition opsDir root = (MUList.State.ListST.is_root_node root opsDir.active = true ∧ ¬MUList.State.ListST.is_last_node root opsDir.active = true)
Instances For
Equations
- Scheduler.Properties.ShiftDuration p = ∃ (t : ℕ), p.shift_duration < t ∧ t < 2 * p.shift_duration
Instances For
Property: The next operator can claim the scheduler if times are alright.
Claiming the scheduler after rewind.
Equations
- Scheduler.Properties.EligibleForAct time last_tid = sorry
Instances For
Equations
- Scheduler.Properties.OpsEligibleForAct time = sorry