Library rt.model.schedule.apa.interference_edf
Require Import rt.util.all.
Require Import rt.model.arrival.basic.task rt.model.arrival.basic.job rt.model.priority rt.model.arrival.basic.task_arrival.
Require Import rt.model.schedule.global.basic.schedule.
Require Import rt.model.schedule.apa.affinity rt.model.schedule.apa.interference
rt.model.schedule.apa.platform.
Module InterferenceEDF.
Import Schedule Priority Platform Interference Priority Affinity.
Section Lemmas.
Context {sporadic_task: eqType}.
Context {Job: eqType}.
Variable job_arrival: Job → time.
Variable job_cost: Job → time.
Variable job_deadline: Job → time.
Variable job_task: Job → sporadic_task.
(* Assume any job arrival sequence... *)
Variable arr_seq: arrival_sequence Job.
(* Consider any schedule. *)
Variable num_cpus: nat.
Variable sched: schedule Job num_cpus.
(* Assume that every job at any time has a processor affinity alpha. *)
Variable alpha: task_affinity sporadic_task num_cpus.
(* Assume that the schedule satisfies the global scheduling invariant
for EDF, i.e., if any job of tsk is backlogged, every processor
must be busy with jobs with no larger absolute deadline. *)
Hypothesis H_scheduler_uses_EDF:
respects_JLFP_policy_under_weak_APA job_arrival job_cost job_task arr_seq sched
alpha (EDF job_arrival job_deadline).
(* Under EDF scheduling, a job only causes interference if its deadline
is not larger than the deadline of the analyzed job. *)
Lemma interference_under_edf_implies_shorter_deadlines :
∀ j j' t1 t2,
arrives_in arr_seq j' →
job_interference job_arrival job_cost job_task sched alpha j' j t1 t2 != 0 →
job_arrival j + job_deadline j ≤ job_arrival j' + job_deadline j'.
End Lemmas.
End InterferenceEDF.
Require Import rt.model.arrival.basic.task rt.model.arrival.basic.job rt.model.priority rt.model.arrival.basic.task_arrival.
Require Import rt.model.schedule.global.basic.schedule.
Require Import rt.model.schedule.apa.affinity rt.model.schedule.apa.interference
rt.model.schedule.apa.platform.
Module InterferenceEDF.
Import Schedule Priority Platform Interference Priority Affinity.
Section Lemmas.
Context {sporadic_task: eqType}.
Context {Job: eqType}.
Variable job_arrival: Job → time.
Variable job_cost: Job → time.
Variable job_deadline: Job → time.
Variable job_task: Job → sporadic_task.
(* Assume any job arrival sequence... *)
Variable arr_seq: arrival_sequence Job.
(* Consider any schedule. *)
Variable num_cpus: nat.
Variable sched: schedule Job num_cpus.
(* Assume that every job at any time has a processor affinity alpha. *)
Variable alpha: task_affinity sporadic_task num_cpus.
(* Assume that the schedule satisfies the global scheduling invariant
for EDF, i.e., if any job of tsk is backlogged, every processor
must be busy with jobs with no larger absolute deadline. *)
Hypothesis H_scheduler_uses_EDF:
respects_JLFP_policy_under_weak_APA job_arrival job_cost job_task arr_seq sched
alpha (EDF job_arrival job_deadline).
(* Under EDF scheduling, a job only causes interference if its deadline
is not larger than the deadline of the analyzed job. *)
Lemma interference_under_edf_implies_shorter_deadlines :
∀ j j' t1 t2,
arrives_in arr_seq j' →
job_interference job_arrival job_cost job_task sched alpha j' j t1 t2 != 0 →
job_arrival j + job_deadline j ≤ job_arrival j' + job_deadline j'.
End Lemmas.
End InterferenceEDF.