Library rt.restructuring.behavior.service
From mathcomp Require Export ssreflect ssrnat ssrbool eqtype fintype bigop.
From rt.restructuring.behavior Require Export schedule.
Section Service.
Context {Job : JobType} {PState : Type}.
Context `{ProcessorState Job PState}.
Variable sched : schedule PState.
From rt.restructuring.behavior Require Export schedule.
Section Service.
Context {Job : JobType} {PState : Type}.
Context `{ProcessorState Job PState}.
Variable sched : schedule PState.
First, we define whether a job j is scheduled at time t, ...
... and the instantaneous service received by
job j at time t.
Based on the notion of instantaneous service, we define the
cumulative service received by job j during any interval t1, t2).
Using the previous definition, we define the cumulative service
received by job j up to time t, i.e., during interval 0, t).
Definition service (j : Job) (t : instant) := service_during j 0 t.
Context `{JobCost Job}.
Context `{JobDeadline Job}.
Context `{JobArrival Job}.
Context `{JobCost Job}.
Context `{JobDeadline Job}.
Context `{JobArrival Job}.
Next, we say that job j has completed by time t if it received enough
service in the interval 0, t).
We say that job j completes at time t if it has completed by time t but
not by time t - 1
We say that R is a response time bound of a job j if j has completed
by R units after its arrival
We say that a job meets its deadline if it completes by its absolute deadline
Job j is pending at time t iff it has arrived but has not yet completed.
Job j is pending earlier and at time t iff it has arrived before time t
and has not been completed yet.
Definition pending_earlier_and_at (j : Job) (t : instant) :=
arrived_before j t && ~~ completed_by j t.
arrived_before j t && ~~ completed_by j t.
Let's define the remaining cost of job j as the amount of service
that has to be received for its completion.