Library prosa.results.prm.edf.floating_nonpreemptive
Require Import prosa.analysis.facts.readiness.basic.
Require Export prosa.model.composite.valid_task_arrival_sequence.
Require Export prosa.analysis.facts.preemption.rtc_threshold.floating.
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.rtc_threshold.floating.
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 EDF Scheduling with Floating Non-Preemptive Regions 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
Context {Task : TaskType} `{TaskCost Task} `{TaskDeadline Task}
`{MaxArrivals Task} `{TaskMaxNonpreemptiveSegment Task}.
`{MaxArrivals Task} `{TaskMaxNonpreemptiveSegment Task}.
... and their associated jobs, where each job has a corresponding task
job_task, an execution time job_cost, an arrival time job_arrival,
and a list of preemption points job_preemptive_points.
Context {Job : JobType} `{JobTask Job Task} `{JobCost Job} `{JobArrival Job}
`{JobPreemptionPoints Job}.
`{JobPreemptionPoints Job}.
We assume that jobs are limited-preemptive.
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.
Assume a model with floating non-preemptive regions. I.e., for each task
only the length of the maximal non-preemptive segment is known and each
job is divided into a number of non-preemptive segments by inserting
preemption points.
Hypothesis H_valid_task_model_with_floating_nonpreemptive_regions :
valid_model_with_floating_nonpreemptive_regions arr_seq.
valid_model_with_floating_nonpreemptive_regions 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_schedule_with_limited_preemptions :
schedule_respects_preemption_model arr_seq sched.
Hypothesis H_valid_schedule : valid_schedule sched arr_seq.
Hypothesis H_work_conserving : work_conserving arr_seq sched.
Hypothesis H_schedule_with_limited_preemptions :
schedule_respects_preemption_model arr_seq 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 + ε)
+ bound_on_athep_workload ts tsk A F
∧ 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 + ε)
+ bound_on_athep_workload ts tsk A F
∧ 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 EDF scheduling with floating non-preemptive regions on a
unit-speed uniprocessor under the periodic resource model.