• Aucun résultat trouvé

Nous définissons dbfi(t) la fonction de la demande processeur maximum causée par une tran-saction Γi dans un intervalle de temps de longueur t. Cette fonction mesure alors la demande maximum de toutes les demandes que Γi peut causer, en considérant chacune de ses tâches τic comme celle qui initie la période d’activité.

Définition 14 (Demand Bound Function.) Soit Γi une transaction. La fonction de la demande maximum dbfi(t) dénote la demande cumulative maximum en temps processeur causée par les instances de toutes les tâches τij, de Γi, qui ont une date d’activation dans [−Jij, t[ et un échéance dans l’intervalle de temps t. Formellement :

dbfi(t) = max

∀τic∈Γi

dfic(t) (5.13)

La nouvelle méthode d’analyse consiste à effectuer, uniquement, un test d’ordonnançabilité du système, dans la plus longue période d’activité, en utilisant la demande processeur maximum, au lieu de traiter toutes les périodes d’activité. Autrement dit, pour toutes les échéances t des tâches appartenant à la plus longue période d’activité, vérifier si la demande maximum dbf (t), du système, est inférieure ou égale à la longueur de l’intervalle t. Ce test est équivalent à l’analyse exacte présentée dans la section précédente, i.e. il fournit une condition nécessaire et suffisante d’ordonnançabilité (théorème 29)

Théorème 29 Un système de transactions est ordonnançable si et seulement si P∀Γ

idbfi(t) ≤ t pour tout nombre positif t.

Preuve :

La preuve consiste à montrer algébriquement l’équivalence entre la partie gauche de l’inégalité 5.12, du test exact (théorème 28), et celle du théorème 29. Pour un intervalle de temps de lon-gueur t, notons dfici(t) la demande processeur dans t de Γi lorsque la tâche candidate τici initie la période d’activité. Supposons θ =< df1c1(t), df2c2(t), ..., dfnc|S|(t) > l’ensemble des demandes processeurs de toutes les transactions du système < Γ1, Γ2, ..., Γ|S|>, pour une période d’activité initiée par l’activation d’une tâche τici dans chaque transaction Γi.

Notons Θ = {θ : ∀i ∈ 1.. |S| , ci∈ 1.. |Γi|} l’ensemble de tous les scénarii possibles (périodes d’activités). La valeur de la fonction de la demande processeur (équation 5.12) du système, dans le test exact est donnée par :

dbf (t) = max θ∈Θ   |S| X i=1 dfici(t)  

dfici(t) est le ieme élément de l’ensemble θ. i.e. la demande processeur de transaction Γi pour une combinaison donnée θ. Puisque chaque demande processeur dfici(t) d’une transaction Γi est indépendante de toute autre transaction Γj 6= Γi, alors les éléments de tous les ensembles θ sont indépendants. D’où on peut permuter les opérations de la somme et de la maximisation. La formule de la demande processeur du système, utilisée dans le test, devient :

5.4. Analyse pseudo-polynomiale dbf (t) = |S| X i=1  max θ∈Θdfici(t) 

Dans chaque combinaison θ le ieme élément correspond toujours à la demande processeur de la transaction Γi. D’où cet élément appartient toujours à l’ensemble des demandes possibles que Γi

peut produire {dfici : ci ∈ 1.. |Γi|}. Pour un i donné alors, nous avons :

max

θ∈Θdfici(t) = max

ci=1..|Γi|dfici(t)

La demande processeur du système devient :

dbf (t) = |S| X i=1  max ci=1..|Γi|dfici(t) 

Par définition de la fonction de la demande processeur (équation 5.13), nous pouvons réécrire la formule comme suit :

dbf (t) =

|S|

X

i=1

dbfi(t)

Alors, le test exact, présenté par l’équation 5.12 est équivalent au test suivant (théorème 29)

∀t ≤ L,X ∀Γi  max c∈1..|Γi|dfic(t)  ≤ t (5.14) 2

D’après le résultat du théorème 29, l’utilisation de la fonction de la demande processeur maximum de chaque transaction, dans le test, fournit une condition nécessaire et suffisante d’ordonnan-cabilité. Ce résultat est intéressant en comparaison avec le résultat présenté dans [71] où les auteurs focalisent sur l’analyse de temps de réponse des transactions avec EDF et proposent une condition suffisante d’ordonnançabilité avec une complexité pseudo-polynomiale.

La procédure du test d’ordonnançabilité d’un système S, consiste alors à déterminer s’il existe une date d’échéance L, dans la plus longue période d’activité de longueur L, telle que la demande processeur totale avant L est supérieure à la longueur L.

∃L ≤ L :   X Γi∈S dbfi(L)  > L ? (5.15)

La longueur de la plus longue période d’activité est calculée en utilisant la fonction d’interférence maximum (chapitre 2), dans le contexte des priorités fixes (sans prendre en considération les échéances des tâches)

Chapitre 5. Analyse d’ordonnançabilité des transactions avec priorités dynamiques EDF

L(n+1)=X

∀Γi

Wi(L(n)) (5.16)

Wi(t) désigne l’interférence cumulative maximum causée par toutes les instances (activées dans t) de toutes les tâches de la transaction Γi, dans n’importe quel intervalle de temps de longueur t. Wi(t) = max ∀τic    X ∀j  Jij + Φijc Ti  + t − Φijc Ti  Cij    (5.17) Pour notre exemple de la figure 5.3, nous calculons la demande processeur de la transaction Γi, dans un intervalle de temps t = 23, lorsque chacune des tâches τi1, τi2, ou τi3 initie la période d’activité. Alors le maximum parmi toutes les demandes est considéré comme une borne de la demande de Γi. Nous détaillons le calcul de la demande de la tâche τi1lorsqu’elle initie la période d’activité : dfi11set1(23) =  min  1, 1 × 11 + 23 − 5 − 13 11  + 1  0 × 1 = 1 dfi11set2(23) =  min 23 − 5 11  , 23 − 5 − 13 11  + 1  0 × 1 = 1 D’où

dfi11(23) = dfi11set1(23) + dfi11set2(23) = 2

Avec le même principe, nous calculons la demande causée par τi2 (dfi21(23) = 2), et celle causée par τi3 (dfi31(23) = 2). La demande causée par la transaction Γi, lorsque τi1 initie la période d’activité, est dfi1(23) = 2 + 2 + 2 = 6 (Figure 5.4).

Lorsque τi2initie la période d’activité, Γi produit une demande de dfi2(23) = 7 unités de temps ; tandis que lorsque τi3 l’initie la demande processeur produite par Γi est de dfi3(23) = 5 unités de temps. D’où la demande maximum, causée par Γi, dans un intervalle de temps de 23 unités de temps, est dbfi(23) = max {dfi1(23), dfi2(23), dfi3(23)} = 7.

Cette méthode a un complexité pseudo-polynomiale, le calcul de la borne de la demande proces-seur d’une transaction a une complexité O(|Γi|2) car pour chaque tâche candidate τicqui initie la période d’activité, nous devons calculer la demande causée par chacune des tâches τij de Γi. Soit X le nombre des échéances à vérifier dans la plus longue période d’activité, alors la complexité de la méthode d’analyse est O(X |Γi|2|S|).