Skip to content
Snippets Groups Projects
Commit 7a76c6ca authored by Pierre Roux's avatar Pierre Roux Committed by Björn Brandenburg
Browse files

Make the ideal uniprocessor hypothesis more explicit

parent 98e1a897
No related branches found
No related tags found
1 merge request!205Make instances of most type classes local
Require Export prosa.util.all. Require Export prosa.util.all.
Require Export prosa.model.processor.platform_properties. Require Export prosa.model.processor.platform_properties.
Require Export prosa.analysis.facts.behavior.service. Require Export prosa.analysis.facts.behavior.service.
(** Throughout this file, we assume ideal uni-processor schedules. *)
Require Import prosa.model.processor.ideal. Require Import prosa.model.processor.ideal.
(** Note: we do not re-export the basic definitions to avoid littering the global (** Note: we do not re-export the basic definitions to avoid littering the global
...@@ -11,6 +9,9 @@ Require Import prosa.model.processor.ideal. ...@@ -11,6 +9,9 @@ Require Import prosa.model.processor.ideal.
(** In this section we establish the classes to which an ideal schedule belongs. *) (** In this section we establish the classes to which an ideal schedule belongs. *)
Section ScheduleClass. Section ScheduleClass.
(** We assume ideal uni-processor schedules. *)
#[local] Existing Instance ideal.processor_state.
Local Transparent scheduled_in scheduled_on. Local Transparent scheduled_in scheduled_on.
(** Consider any job type and the ideal processor model. *) (** Consider any job type and the ideal processor model. *)
Context {Job: JobType}. Context {Job: JobType}.
......
...@@ -6,6 +6,7 @@ Require Export prosa.analysis.transform.wc_trans. ...@@ -6,6 +6,7 @@ Require Export prosa.analysis.transform.wc_trans.
Require Export prosa.analysis.facts.transform.swaps. Require Export prosa.analysis.facts.transform.swaps.
Require Export prosa.analysis.definitions.schedulability. Require Export prosa.analysis.definitions.schedulability.
Require Export prosa.util.list. Require Export prosa.util.list.
Require Import prosa.model.processor.ideal.
(** * Correctness of the work-conservation transformation *) (** * Correctness of the work-conservation transformation *)
(** This file contains the main argument of the work-conservation proof, (** This file contains the main argument of the work-conservation proof,
...@@ -14,16 +15,17 @@ Require Export prosa.util.list. ...@@ -14,16 +15,17 @@ Require Export prosa.util.list.
and ending with the proofs of individual properties of the obtained and ending with the proofs of individual properties of the obtained
work-conserving schedule. *) work-conserving schedule. *)
(** Throughout this file, we assume ideal uniprocessor schedules and (** Throughout this file, we assume the basic (i.e., Liu & Layland)
the basic (i.e., Liu & Layland) readiness model under which any readiness model under which any pending job is ready. *)
pending job is ready. *)
Require Import prosa.model.processor.ideal.
Require Import prosa.model.readiness.basic. Require Import prosa.model.readiness.basic.
(** In order to discuss the correctness of the work-conservation transformation at a high level, (** In order to discuss the correctness of the work-conservation transformation at a high level,
we first need a set of lemmas about the inner parts of the procedure. *) we first need a set of lemmas about the inner parts of the procedure. *)
Section AuxiliaryLemmasWorkConservingTransformation. Section AuxiliaryLemmasWorkConservingTransformation.
(** We assume ideal uni-processor schedules. *)
#[local] Existing Instance ideal.processor_state.
(** Consider any type of jobs with arrival times, costs, and deadlines... *) (** Consider any type of jobs with arrival times, costs, and deadlines... *)
Context {Job : JobType}. Context {Job : JobType}.
Context `{JobArrival Job}. Context `{JobArrival Job}.
......
...@@ -2,8 +2,6 @@ Require Export prosa.analysis.transform.swap. ...@@ -2,8 +2,6 @@ Require Export prosa.analysis.transform.swap.
Require Export prosa.analysis.transform.prefix. Require Export prosa.analysis.transform.prefix.
Require Export prosa.util.search_arg. Require Export prosa.util.search_arg.
Require Export prosa.util.list. Require Export prosa.util.list.
(** Throughout this file, we assume ideal uniprocessor schedules. *)
Require Export prosa.model.processor.ideal. Require Export prosa.model.processor.ideal.
(** In this file we define the transformation from any ideal uniprocessor schedule (** In this file we define the transformation from any ideal uniprocessor schedule
...@@ -12,7 +10,10 @@ Require Export prosa.model.processor.ideal. ...@@ -12,7 +10,10 @@ Require Export prosa.model.processor.ideal.
its arrival, therefore there could still exist idle instants between any two its arrival, therefore there could still exist idle instants between any two
job allocations. *) job allocations. *)
Section WCTransformation. Section WCTransformation.
(** We assume ideal uni-processor schedules. *)
#[local] Existing Instance ideal.processor_state.
(** Consider any type of jobs with arrival times, costs, and deadlines... *) (** Consider any type of jobs with arrival times, costs, and deadlines... *)
Context {Job : JobType}. Context {Job : JobType}.
Context `{JobArrival Job}. Context `{JobArrival Job}.
......
...@@ -20,8 +20,8 @@ Section State. ...@@ -20,8 +20,8 @@ Section State.
(** We connect the notion of an ideal processor state with (** We connect the notion of an ideal processor state with
the generic interface for the processor-state abstraction in Prosa by the generic interface for the processor-state abstraction in Prosa by
declaring a so-called instance of the [ProcessorState] typeclass. *) declaring a so-called instance of the [ProcessorState] typeclass. *)
Global Program Instance processor_state : ProcessorState Job := Program Definition processor_state : ProcessorState Job :=
{ {|
(** We define the ideal "processor state" as an [option Job], (** We define the ideal "processor state" as an [option Job],
which means that it is either [Some j] (where [j] is a which means that it is either [Some j] (where [j] is a
[Job]) or [None] (which we use to indicate an idle [Job]) or [None] (which we use to indicate an idle
...@@ -35,7 +35,7 @@ Section State. ...@@ -35,7 +35,7 @@ Section State.
(** Similarly, we say that a given job [j] receives service in a (** Similarly, we say that a given job [j] receives service in a
given state [s] iff [s] is [Some j]. *) given state [s] iff [s] is [Some j]. *)
service_on j s (_ : unit) := if s == Some j then 1 else 0; service_on j s (_ : unit) := if s == Some j then 1 else 0;
}. |}.
Next Obligation. by rewrite /nat_of_bool; case: ifP H => // ? /negP[]. Qed. Next Obligation. by rewrite /nat_of_bool; case: ifP H => // ? /negP[]. Qed.
End State. End State.
......
...@@ -3,14 +3,13 @@ From mathcomp Require Import ssreflect ssrbool eqtype ssrnat seq path fintype bi ...@@ -3,14 +3,13 @@ From mathcomp Require Import ssreflect ssrbool eqtype ssrnat seq path fintype bi
Require Export prosa.results.fixed_priority.rta.bounded_nps. Require Export prosa.results.fixed_priority.rta.bounded_nps.
Require Export prosa.analysis.facts.preemption.rtc_threshold.floating. Require Export prosa.analysis.facts.preemption.rtc_threshold.floating.
Require Export prosa.analysis.facts.readiness.sequential. Require Export prosa.analysis.facts.readiness.sequential.
Require Import prosa.model.processor.ideal.
(** * RTA for Model with Floating Non-Preemptive Regions *) (** * RTA for Model with Floating Non-Preemptive Regions *)
(** In this module we prove the RTA theorem for floating non-preemptive regions FP model. *) (** In this module we prove the RTA theorem for floating non-preemptive regions FP model. *)
(** Throughout this file, we assume the FP priority policy, ideal uni-processor (** Throughout this file, we assume the FP priority policy,
schedules, and the sequential readiness model. *) schedules, and the sequential readiness model. *)
Require Import prosa.model.processor.ideal.
Require Import prosa.model.readiness.sequential. Require Import prosa.model.readiness.sequential.
(** Furthermore, we assume the task model with floating non-preemptive regions. *) (** Furthermore, we assume the task model with floating non-preemptive regions. *)
...@@ -21,6 +20,9 @@ Require Import prosa.model.task.preemption.floating_nonpreemptive. ...@@ -21,6 +20,9 @@ Require Import prosa.model.task.preemption.floating_nonpreemptive.
Section RTAforFloatingModelwithArrivalCurves. Section RTAforFloatingModelwithArrivalCurves.
(** We assume ideal uni-processor schedules. *)
#[local] Existing Instance ideal.processor_state.
(** Consider any type of tasks ... *) (** Consider any type of tasks ... *)
Context {Task : TaskType}. Context {Task : TaskType}.
Context `{TaskCost Task}. Context `{TaskCost Task}.
......
...@@ -4,14 +4,13 @@ Require Export prosa.results.fixed_priority.rta.bounded_nps. ...@@ -4,14 +4,13 @@ Require Export prosa.results.fixed_priority.rta.bounded_nps.
Require Export prosa.analysis.facts.preemption.task.nonpreemptive. Require Export prosa.analysis.facts.preemption.task.nonpreemptive.
Require Export prosa.analysis.facts.preemption.rtc_threshold.nonpreemptive. Require Export prosa.analysis.facts.preemption.rtc_threshold.nonpreemptive.
Require Export prosa.analysis.facts.readiness.sequential. Require Export prosa.analysis.facts.readiness.sequential.
Require Import prosa.model.processor.ideal.
(** * RTA for Fully Non-Preemptive FP Model *) (** * RTA for Fully Non-Preemptive FP Model *)
(** In this module we prove the RTA theorem for the fully non-preemptive FP model. *) (** In this module we prove the RTA theorem for the fully non-preemptive FP model. *)
(** Throughout this file, we assume the FP priority policy, ideal uni-processor (** Throughout this file, we assume the FP priority policy,
schedules, and the sequential readiness model. *) schedules, and the sequential readiness model. *)
Require Import prosa.model.processor.ideal.
Require Import prosa.model.readiness.sequential. Require Import prosa.model.readiness.sequential.
(** Furthermore, we assume the fully non-preemptive task model. *) (** Furthermore, we assume the fully non-preemptive task model. *)
...@@ -21,6 +20,9 @@ Require Import prosa.model.task.preemption.fully_nonpreemptive. ...@@ -21,6 +20,9 @@ Require Import prosa.model.task.preemption.fully_nonpreemptive.
Section RTAforFullyNonPreemptiveFPModelwithArrivalCurves. Section RTAforFullyNonPreemptiveFPModelwithArrivalCurves.
(** We assume ideal uni-processor schedules. *)
#[local] Existing Instance ideal.processor_state.
(** Consider any type of tasks ... *) (** Consider any type of tasks ... *)
Context {Task : TaskType}. Context {Task : TaskType}.
Context `{TaskCost Task}. Context `{TaskCost Task}.
......
...@@ -4,14 +4,13 @@ Require Export prosa.results.fixed_priority.rta.bounded_nps. ...@@ -4,14 +4,13 @@ Require Export prosa.results.fixed_priority.rta.bounded_nps.
Require Export prosa.analysis.facts.preemption.task.preemptive. Require Export prosa.analysis.facts.preemption.task.preemptive.
Require Export prosa.analysis.facts.preemption.rtc_threshold.preemptive. Require Export prosa.analysis.facts.preemption.rtc_threshold.preemptive.
Require Export prosa.analysis.facts.readiness.sequential. Require Export prosa.analysis.facts.readiness.sequential.
Require Import prosa.model.processor.ideal.
(** * RTA for Fully Preemptive FP Model *) (** * RTA for Fully Preemptive FP Model *)
(** In this section we prove the RTA theorem for the fully preemptive FP model *) (** In this section we prove the RTA theorem for the fully preemptive FP model *)
(** Throughout this file, we assume the FP priority policy, ideal uni-processor (** Throughout this file, we assume the FP priority policy,
schedules, and the sequential readiness model. *) schedules, and the sequential readiness model. *)
Require Import prosa.model.processor.ideal.
Require Import prosa.model.readiness.sequential. Require Import prosa.model.readiness.sequential.
(** Furthermore, we assume the fully preemptive task model. *) (** Furthermore, we assume the fully preemptive task model. *)
...@@ -21,6 +20,9 @@ Require Import prosa.model.task.preemption.fully_preemptive. ...@@ -21,6 +20,9 @@ Require Import prosa.model.task.preemption.fully_preemptive.
Section RTAforFullyPreemptiveFPModelwithArrivalCurves. Section RTAforFullyPreemptiveFPModelwithArrivalCurves.
(** We assume ideal uni-processor schedules. *)
#[local] Existing Instance ideal.processor_state.
(** Consider any type of tasks ... *) (** Consider any type of tasks ... *)
Context {Task : TaskType}. Context {Task : TaskType}.
Context `{TaskCost Task}. Context `{TaskCost Task}.
......
...@@ -3,15 +3,14 @@ From mathcomp Require Import ssreflect ssrbool eqtype ssrnat seq path fintype bi ...@@ -3,15 +3,14 @@ From mathcomp Require Import ssreflect ssrbool eqtype ssrnat seq path fintype bi
Require Export prosa.results.fixed_priority.rta.bounded_nps. Require Export prosa.results.fixed_priority.rta.bounded_nps.
Require Export prosa.analysis.facts.preemption.rtc_threshold.limited. Require Export prosa.analysis.facts.preemption.rtc_threshold.limited.
Require Export prosa.analysis.facts.readiness.sequential. Require Export prosa.analysis.facts.readiness.sequential.
Require Import prosa.model.processor.ideal.
(** * RTA for FP-schedulers with Fixed Preemption Points *) (** * RTA for FP-schedulers with Fixed Preemption Points *)
(** In this module we prove the RTA theorem for FP-schedulers with (** In this module we prove the RTA theorem for FP-schedulers with
fixed preemption points. *) fixed preemption points. *)
(** Throughout this file, we assume the FP priority policy, ideal uni-processor (** Throughout this file, we assume the FP priority policy,
schedules, and the sequential readiness model. *) schedules, and the sequential readiness model. *)
Require Import prosa.model.processor.ideal.
Require Import prosa.model.readiness.sequential. Require Import prosa.model.readiness.sequential.
(** Furthermore, we assume the task model with fixed preemption points. *) (** Furthermore, we assume the task model with fixed preemption points. *)
...@@ -22,6 +21,9 @@ Require Import prosa.model.task.preemption.limited_preemptive. ...@@ -22,6 +21,9 @@ Require Import prosa.model.task.preemption.limited_preemptive.
Section RTAforFixedPreemptionPointsModelwithArrivalCurves. Section RTAforFixedPreemptionPointsModelwithArrivalCurves.
(** We assume ideal uni-processor schedules. *)
#[local] Existing Instance ideal.processor_state.
(** Consider any type of tasks ... *) (** Consider any type of tasks ... *)
Context {Task : TaskType}. Context {Task : TaskType}.
Context `{TaskCost Task}. Context `{TaskCost Task}.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment