Library prosa.results.prm.edf.fully_nonpreemptive
Require Import prosa.analysis.facts.readiness.basic.
Require Export prosa.model.composite.valid_task_arrival_sequence.
Require Export prosa.analysis.facts.preemption.task.nonpreemptive.
Require Export prosa.analysis.facts.preemption.rtc_threshold.nonpreemptive.
Require Export prosa.analysis.abstract.restricted_supply.task_intra_interference_bound.
Require Export prosa.analysis.abstract.restricted_supply.bounded_bi.edf.
Require Export prosa.analysis.abstract.restricted_supply.search_space.edf.
Require Export prosa.analysis.facts.priority.edf.
Require Export prosa.analysis.facts.blocking_bound.edf.
Require Export prosa.analysis.facts.workload.edf_athep_bound.
Require Export prosa.analysis.facts.model.sbf.periodic.
Require Export prosa.model.composite.valid_task_arrival_sequence.
Require Export prosa.analysis.facts.preemption.task.nonpreemptive.
Require Export prosa.analysis.facts.preemption.rtc_threshold.nonpreemptive.
Require Export prosa.analysis.abstract.restricted_supply.task_intra_interference_bound.
Require Export prosa.analysis.abstract.restricted_supply.bounded_bi.edf.
Require Export prosa.analysis.abstract.restricted_supply.search_space.edf.
Require Export prosa.analysis.facts.priority.edf.
Require Export prosa.analysis.facts.blocking_bound.edf.
Require Export prosa.analysis.facts.workload.edf_athep_bound.
Require Export prosa.analysis.facts.model.sbf.periodic.
RTA for Fully Non-Preemptive EDF Scheduling on Uniprocessors under the Periodic Resource Model
Defining the System Model
- tasks, jobs, and their parameters,
- the task set and the task under analysis,
- the processor model,
- the sequence of job arrivals,
- the absence of self-suspensions,
- an arbitrary schedule of the task set, and finally,
- the resource-supply model.
Tasks and Jobs
... and their associated jobs, where each job has a corresponding task
job_task, an execution time job_cost, and an arrival time
job_arrival.
Furthermore, assume that jobs and tasks are fully non-preemptive.
#[local] Existing Instance fully_nonpreemptive_job_model.
#[local] Existing Instance fully_nonpreemptive_task_model.
#[local] Existing Instance fully_nonpreemptive_rtc_threshold.
#[local] Existing Instance fully_nonpreemptive_task_model.
#[local] Existing Instance fully_nonpreemptive_rtc_threshold.
Context `{PState : ProcessorState Job}.
Hypothesis H_uniprocessor_proc_model : uniprocessor_model PState.
Hypothesis H_unit_supply_proc_model : unit_supply_proc_model PState.
Hypothesis H_consumed_supply_proc_model : fully_consuming_proc_model PState.
Hypothesis H_uniprocessor_proc_model : uniprocessor_model PState.
Hypothesis H_unit_supply_proc_model : unit_supply_proc_model PState.
Hypothesis H_consumed_supply_proc_model : fully_consuming_proc_model PState.
The Job Arrival Sequence
Variable arr_seq : arrival_sequence Job.
Hypothesis H_valid_task_arrival_sequence : valid_task_arrival_sequence ts arr_seq.
Hypothesis H_valid_task_arrival_sequence : valid_task_arrival_sequence ts arr_seq.
Absence of Self-Suspensions
The Schedule
Variable sched : schedule PState.
Hypothesis H_valid_schedule : valid_schedule sched arr_seq.
Hypothesis H_work_conserving : work_conserving arr_seq sched.
Hypothesis H_nonpreemptive_sched : nonpreemptive_schedule sched.
Hypothesis H_valid_schedule : valid_schedule sched arr_seq.
Hypothesis H_work_conserving : work_conserving arr_seq sched.
Hypothesis H_nonpreemptive_sched : nonpreemptive_schedule sched.
We assume that the schedule respects the given EDF scheduling policy.
Periodic Resource Model
[Π⋅k, Π⋅(k+1)), the processor
provides at least γ units of supply. Furthermore, let prm_sbf Π γ
denote the corresponding SBF defined in the paper, which, as proven in the
same paper and verified in prosa.analysis.facts.model.sbf.periodic, is a
valid SBF.
Maximum Length of a Busy Interval
Definition busy_window_recurrence_solution (L : duration) :=
L > 0
∧ prm_sbf Π γ L ≥ total_request_bound_function ts L
∧ prm_sbf Π γ L ≥ longest_busy_interval_with_pi ts tsk.
L > 0
∧ prm_sbf Π γ L ≥ total_request_bound_function ts L
∧ prm_sbf Π γ L ≥ longest_busy_interval_with_pi ts tsk.
Response-Time Bound
Definition rta_recurrence_solution L R :=
∀ (A : duration),
is_in_search_space ts tsk L A →
∃ (F : duration),
prm_sbf Π γ F ≥ blocking_bound ts tsk A
+ (task_request_bound_function tsk (A + ε) - (task_cost tsk - ε))
+ bound_on_athep_workload ts tsk A F
∧ prm_sbf Π γ (A + R) ≥ prm_sbf Π γ F + (task_cost tsk - ε)
∧ A + R ≥ F.
∀ (A : duration),
is_in_search_space ts tsk L A →
∃ (F : duration),
prm_sbf Π γ F ≥ blocking_bound ts tsk A
+ (task_request_bound_function tsk (A + ε) - (task_cost tsk - ε))
+ bound_on_athep_workload ts tsk A F
∧ prm_sbf Π γ (A + R) ≥ prm_sbf Π γ F + (task_cost tsk - ε)
∧ A + R ≥ F.
Finally, using the sequential variant of abstract restricted-supply
analysis, we establish that, given a bound on the maximum busy-window
length L, any such R is indeed a sound response-time bound for task
tsk under fully non-preemptive EDF scheduling on a unit-speed
uniprocessor under the periodic resource model.