• Aucun résultat trouvé

Stratégie d’ordonnancement LCP

La stratégie d’ordonnancementLCP se décrit comme suit : • Chaque liste d’instances est ordonnancée parEDF .

• les instancesGp et les instances W p sont exécutées au plus tôt. • les instancesB et les instances Ga sont exécutées au plus tard.

La figure5.1représente le pseudo-code de l’ordonnanceurLCP .

5.5

Stratégie d’ordonnancement

LCJ

LCJ est introduite dans le but d’avoir un équilibrage entre le taux de respect d’échéances (QdS1) et le taux de respect d’échéances par les primaires (QdS2).

D’où, nous adoptons la définition suivante :

La stratégie d’ordonnancementLCJ se décrit comme suit : • Chaque liste d’instances est ordonnancée parEDF . • les instancesGp, W a et W p sont exécutées au plus tôt.

• les instancesB et les instances Ga sont exécutées au plus tard.

La figure5.2représente le pseudo-code de l’ordonnanceurLCJ.

5.6

Stratégie d’ordonnancement

LCP − t

La stratégie d’ordonnancement LCP − t diffère uniquement de LCP sur le point suivant : avant d’ad- mettre pour exécution toute instance Gp ou W p, un test d’admission est mis en oeuvre. Celui-ci a pour objectif de vérifier que la durée d’exécution de l’instance sélectionnée est compatible avec une exécution faisable de celle-ci. En d’autres termes, l’instance ne sera lancée que si sa fin d’exécution intervient avant la date de démarrage de la séquence EDL, c’est à dire avant le démarrage au plus tard des instancesB et Ga.

L’idée de ce test d’acceptation est de comparer le temps d’exécution de chaque instanceGp ou W p dès son arrivée avec le temps processeur disponible dans l’intervalle[t, dj] après avoir soustrait le temps réservé

5.6. STRATÉGIE D’ORDONNANCEMENTLCP − T 107

Algorithm 4 Algorithme d’ordonnancementLCP

Entrées : Γ = {τ1, ..., τn}

BGaList, Liste des instancesB et Ga prêtes ordonnancées entre elles selon EDF ; GpList, Liste des instancesGp prêtes ordonnancées entre elles selon EDF ; WpList, Liste des instancesW p prêtes ordonnancées entre elles selon EDF ; WaList, Liste des instancesW a prêtes ordonnancées entre elles selon EDF ; t, L’instant courant ;

begin

if Le temps creux à l’instant (t) != 0 then /* Il y a un temps disponible à l’instant (t)*/ if GpList.Head != NULL then

/* Présence des instancesGp prêtes pour s’exécuter */ exécuterGpList.Head et supprimer le, après exécution ;

supprimer l’instanceGa correspondante à l’instance Gp, de la liste BGaList ; else

/* Il n’y a pas des instancesGp prêtes pour s’exécuter */ if WpList.Head != NULL then

/* Présence des instancesW p prêtes pour s’exécuter */ exécuterW pList.Head et supprimer le, après exécution ;

supprimer l’instanceW a correspondante à l’instance W p, de la liste W aList ; else

if BGaList.Head != NULL then

/* Présence des instancesB ou Ga prêtes pour s’exécuter */ exécuterBGaList.Head et supprimer le, après exécution ;

supprimer l’instanceGp correspondante à l’instance Ga, de la liste GpList ; end if

end if end if

elseLe temps creux à l’instant (t) == 0

/* Il n’y a pas un temps disponible à l’instant (t)*/ if BGaList.Head != NULL then

/* Présence des instancesB ou Ga prêtes pour s’exécuter */ exécuterBGaList.Head et supprimer le, après exécution ;

supprimer l’instanceGp correspondante à l’instance Ga, de la liste GpList ; end if

end if end

FIGURE 5.1 – Pseudo-code deLCP

Définition : La laxitéωj(t) à l’instant t, d’une instance Gp ou W p d’échéance dj, est définie par :

ωj(t) = ΩEDLΓ(t) (t, dj) − j X i=1 Cip(t) (5.1) ΩEDL

Γ(t) (t, dj) représente la somme totale des temps creux disponibles dans l’intervalle [t, dj].

La grandeur Pj

i=1C p

i(t) représente la somme des temps d’exécution restants à l’instant t sur l’ensemble

des instancesGp et W p déjà acceptées dont l’échéance est inférieure ou égale à dj. Le test d’acceptation

108 CHAPITRE 5. ORDONNANCEMENTS ÉVOLUÉS POUR BGW

Algorithm 5 Algorithme d’ordonnancementLCJ

Entrées : Γ = {τ1, ..., τn}

BGaList, Liste des instancesB et Ga prêtes ordonnancées entre elles selon EDF ; GpList, Liste des instancesGp prêtes ordonnancées entre elles selon EDF ; WpList, Liste des instancesW p prêtes ordonnancées entre elles selon EDF ; WaList, Liste des instancesW a prêtes ordonnancées entre elles selon EDF ; t, L’instant courant ;

begin

if Le temps creux à l’instant (t) != 0 then /* Il y a un temps disponible à l’instant (t)*/ if GpList.Head != NULL then

/* Présence des instancesGp prêtes pour s’exécuter */ exécuterGpList.Head et supprimer le, après exécution ;

supprimer l’instanceGa correspondante à l’instance Gp, de la liste BGaList ; else

/* Il n’y a pas des instancesGp prêtes pour s’exécuter */ if WaList.Head != NULL then

/* Présence des instancesW a prêtes pour s’exécuter */ exécuterW aList.Head et supprimer le, après exécution ; else

/* Pas des instancesW a prêtes pour s’exécuter */ if WpList.Head != NULL then

/* Présence des instancesW p prêtes pour s’exécuter */ exécuterW pList.Head et supprimer le, après exécution ; else

/* Pas des instancesW p prêtes pour s’exécuter */ if BGaList.Head != NULL then

/* Présence des instancesB ou Ga prêtes pour s’exécuter */ exécuterBGaList.Head et supprimer le, après exécution ;

supprimer l’instanceGp correspondante à l’instance Ga, de la liste GpList ; end if

end if end if end if

elseLe temps creux à l’instant (t) == 0

/* Il n’y a pas un temps disponible à l’instant (t)*/ if BGaList.Head != NULL then

/* Présence des instancesB ou Ga prêtes pour s’exécuter */ exécuterBGaList.Head et supprimer le, après exécution ;

supprimer l’instanceGp correspondante à l’instance Ga, de la liste GpList ; end if

end if end

FIGURE 5.2 – Pseudo-code deLCJ

5.6.1

Algorithme LCP-t

La figure5.5représente le pseudo-code de l’algorithme d’ordonnancementLCP − t. Remarque :

Il est possible d’avoir des instancesW a qui s’exécutent alors que les instances correspondantes W p ont été refusées par le test d’acceptation, dû à la différence possiblement très grande entre leur durée d’exécution.

5.7. STRATÉGIE D’ORDONNANCEMENTLCJ − T 109

Algorithm 6 Algorithme du test d’admission en ligne d’une instanceGp

Entrées : Γ = {τ1, ..., τn}

BGaList, Liste des instancesB et Ga prêtes ordonnancées entre elles selon EDF ;

AcceptedGpWpList, Liste des instancesGp et W p prêtes acceptées, ordonnancées entre elles selon EDF ; WaList, Liste des instancesW a prêtes ordonnancées entre elles selon EDF ;

t, l’instant courant ;

Sorties : L’instanceGp est acceptée si ωi(t) est supérieur à 0, non acceptée dans le cas contraire.

begin

while Une instanceGp arrive au temps t do acceptable = 1 ;

chercher la plus grande échéancedjde l’ensembleGpt∪ AcceptedGpW pList ;

calculer le temps creux total dans l’intervalle[t, dj], f (t)EDL(t, dj) ;

for toute instanceτide l’ensembleGpt∪ AcceptedGpW pList telle que di≥ d do

calculer la laxitéωi(t) de l’instance τi;

ifωi(t) ≤ 0 then acceptable = 0 ; end if end for return admitted ; end while end

FIGURE5.3 – Pseudo-code du test d’admission en ligne deGp

Algorithm 7 Algorithme du test d’admission en ligne d’une instanceW p

Entrées : Γ = {τ1, ..., τn}

BGaList, Liste des instancesB et Ga prêtes ordonnancées entre elles selon EDF ;

AcceptedGpWpList, Liste des instancesGp et W p prêtes acceptées, ordonnancées entre elles selon EDF ; WaList, Liste des instancesW a prêtes ordonnancées entre elles selon EDF ;

t, L’instant courant ;

Sorties : L’instanceW ptest acceptée siωi(t) est supérieur à 0, non acceptée dans le cas contraire.

begin

while Une instanceW ptarrive au temps (t) do

acceptable = 1 ;

chercher la plus grande échéancedjde l’ensembleW p ∪ AcceptedGpW pList ;

caculer le temps creux dans l’intervalle[t, dj], f (t)EDL(t, dj) ;

for toute instanceτide l’ensembleW p ∪ AcceptedGpW pList telle que di≥ d do

caculer la laxitéωi(t) de l’instance τi;

ifωi(t) ≤ 0 then acceptable = 0 ; end if end for return acceptable ; end while end

FIGURE5.4 – Pseudo-code du test d’acceptation d’une instanceW p

5.7

Stratégie d’ordonnancement

LCJ − t

Au lieu de tester l’acceptation des instancesGp et W p (cas précédent), nous testons ici l’acceptation des instancesGp et W a.

110 CHAPITRE 5. ORDONNANCEMENTS ÉVOLUÉS POUR BGW

Algorithm 8 Algorithme d’ordonnancementLCP − t

Entrées : Γ = {τ1, ..., τn}

BGaList, Liste des instancesB et Ga prêtes ordonnancées entre elles selon EDF ;

AcceptedGpList, Liste des instancesGp prêtes acceptées, ordonnancées entre elles selon EDF ; AcceptedWpList, Liste des instancesW p prêtes acceptées, ordonnancées entre elles selon EDF ; WaList, Liste des instancesW a prêtes ordonnancées entre elles selon EDF ;

t, L’instant courant ; begin

if AcceptedGpList.Head != NULL then

/* Présence des instancesGp acceptées pour être exécutée */ exécuter AcceptedGpList.Head et supprimer le, après exécution ;

supprimer l’instanceGa correspondante de l’instance Gp, de la liste BGaList ; else

/* Il n’y a pas des instancesGp acceptées pour être exécutée */ if AcceptedWpList.Head != NULL then

/* Présence des instancesW p acceptées pour être exécutée */ exécuter AcceptedWpList.Head et supprimer le, après exécution ;

supprimer l’instanceW a correspondante de l’instance W p, de la liste W aList ; else

/* Il n’y a pas d’instancesW p acceptées pour être exécutée */ if BGaList.Head != NULL then

/* Présence des instancesB ou Ga prêtes pour s’exécuter */ exécuter BGaList.Head et supprimer le, après exécution ; else

/* Pas d’instancesB ou Ga prêtes pour s’exécuter */ if WaList.Head != NULL then

/* Présence des instancesW a prêtes pour s’exécuter */ exécuter WaList.Head et supprimer le, après exécution ; end if end if end if end if end FIGURE5.5 – Pseudo-code deLCP − t

5.7.1

Algorithme

LCJ − t

La figure5.6représente le pseudo-code de l’ordonnanceurLCJ − t. Remarque :

En pratique, s’il y a assez de temps pour exécuter une instance W p après avoir exécuté l’instance W a correspondante, évidement dans ce cas, le résultat considéré sera celui de la version donnant la meilleure QdS, soitW p.