Library prosa.analysis.facts.model.dynamic_suspension
Require Export prosa.analysis.facts.suspension.
Require Export prosa.model.task.suspension.dynamic.
Require Export prosa.analysis.facts.model.arrival_curves.
Require Export prosa.model.task.suspension.dynamic.
Require Export prosa.analysis.facts.model.arrival_curves.
In this file, we prove some facts related to the dynamic self-suspension model.
Consider any type of tasks each characterized by a WCET task_cost,
an arrival curve max_arrivals, and a bound on the maximum total
self-suspension duration exhibited by any job of the task
task_total_suspension.
Context {Task : TaskType}.
Context `{TaskCost Task}.
Context `{MaxArrivals Task}.
Context `{TaskTotalSuspension Task}.
Context `{TaskCost Task}.
Context `{MaxArrivals Task}.
Context `{TaskTotalSuspension Task}.
Consider any kind of jobs associated with these tasks.
Context {Job : JobType}.
Context `{JobTask Job Task}.
Context `{JobArrival Job}.
Context `{JobCost Job}.
Context `{JobTask Job Task}.
Context `{JobArrival Job}.
Context `{JobCost Job}.
Here we consider that the jobs can exhibit self-suspensions.
Assume that all jobs respect the bound on the maximum total self-suspension duration.
Consider any valid arrival sequence of jobs ...
Variable arr_seq : arrival_sequence Job.
Hypothesis H_valid_arrival_sequence : valid_arrival_sequence arr_seq.
Hypothesis H_valid_arrival_sequence : valid_arrival_sequence arr_seq.
... and assume the notion of readiness for self-suspending jobs.
Consider any kind of processor model.
Consider any valid schedule.
Let tsk be any task.
Consider any arbitrary time interval
[t1, t1 + Δ)
.
We first prove a bound on the total self-suspension duration of a job.
Now we prove an upper bound on the total duration a job remains suspended
in the interval
[t1, t1 + Δ)
.
Lemma job_suspension_bounded :
\sum_(t1 ≤ t < t1 + Δ) suspended sched j t ≤ task_total_suspension tsk.
End JobSuspensionBounded.
(* Next, assume that tsk respects the arrival curve defined by max_arrivals. *)
Hypothesis H_tsk_respects_max_arrivals : respects_max_arrivals arr_seq tsk (max_arrivals tsk).
\sum_(t1 ≤ t < t1 + Δ) suspended sched j t ≤ task_total_suspension tsk.
End JobSuspensionBounded.
(* Next, assume that tsk respects the arrival curve defined by max_arrivals. *)
Hypothesis H_tsk_respects_max_arrivals : respects_max_arrivals arr_seq tsk (max_arrivals tsk).
Now we establish a bound on the total duration the jobs of task tsk remain suspended in the interval
[t1, t2)
.