Job-Class-Level Scheduling
The module RealTimeScheduling.Papers.JobClassLevelScheduling
implements the scheduler and schedulability test from the paper "Toward Practical Weakly Hard Real-Time Systems: A Job-Class-Level Scheduling Approach" by Choi, Kim, and Zhu. DOI: 10.1109/JIOT.2021.3058215. The scheduler from this paper divides jobs of each task into job-classes on the basis of the length of the most recent sequence of consecutive deadline hits, and assigns each job-class of each task a fixed priority. This enables the scheduling of weakly hard task systems that are infeasible with any task-level fixed priority scheduler.
RealTimeScheduling.Papers.JobClassLevelScheduling.schedule_jcl
— Functionschedule_jcl(T, time, prio)
Simulate a job-class-level (JCL) schedule of task system T
on 1 processor for the specified time
. Job-class priorities are given by prio
.
See also schedule_global
for more general global scheduling.
RealTimeScheduling.Papers.JobClassLevelScheduling.miss_threshold
— Functionmiss_threshold(c::MeetAny)
Compute the miss threshold $w_i$ for the given MeetAny
constraint.
miss_threshold(τ::PeriodicWeaklyHardTask{<:Real, MeetAny})
Compute the miss threshold $w_i$ for the given weakly hard task.
RealTimeScheduling.Papers.JobClassLevelScheduling.low_index_first
— Functionlow_index_first(T::AbstractRealTimeTaskSystem)
Compute priorities for each job-class of each task in T according to the low-index job-class first with miss thresholds (LIF-w) heuristic.
RealTimeScheduling.Papers.JobClassLevelScheduling.low_index_first_hold
— Functionlow_index_first_hold(T::AbstractRealTimeTaskSystem)
Compute priorities for each job-class of each task in T according to the low-index job-class first with priority holding mechanism (LIF-h) heuristic.
RealTimeScheduling.Papers.JobClassLevelScheduling.wcrt_jcl
— Functionwcrt_jcl(T, prio)
Compute worst-case response times (WCRTs) for each job-class in task system T
, with the given job-class priorities prio
.
RealTimeScheduling.Papers.JobClassLevelScheduling.schedulable_jcl
— Functionschedulable_jcl(T, prio)
Check if the AbstractRealTimeTaskSystem
T
is schedulable by job-class-level scheduling with the job-class priorities given by prio
.