Vous êtes sur la page 1sur 49

Serge.Midonnet@univ-paris-est.

fr
Java Temps Reel
De la thorie a la pratique
2009/2010
Plan du Cours
Introduction - Motivation pour RTJS
Plateformes RTSJ
Ordonnancement
Priorit xe / Priorit Dynamique
Entits Ordonnanables
Modle thorique de tches et Classes RTSJ
Paramtres dordonnancement (SchedulingParameters)
Paramtres dactivation (ReleaseParameters) / modles de trac
Analyse de Faisabilit (conditions)
Charge Processeur / Temps de rponse / Priode dtude
Tolrance aux Fautes: Dtecteurs et Interruptions asynchrones
Partage de Ressource et Algorithmes de Synchronisations
Modles de Mmoire et Algorithmes de collection
2
Spcication - RTSJ
Spcication de proprits temporelles pour Java
Historique des spcications
1998: Appel Spcication - JSR1 par JCP (Java Community Process)
2002: RTSJ approuv par JCP
2003: Premire implantation par Timesys (JTIME)
2005: RTSJ 1.0.1 (spec) ; JSR 282 (interaction java5, )
2006: RTSJ 1.0.2 (spec) ; JSR 302 (safety critical)
2009: 1st Draft JSR282 (extensions JSR1)
Plateformes: RI (TimeSys); JamaicaVM (Aicas); Java RTS (Sun) ; Perc Pico (Aonix);
WebSphere Real Time (IBM) ; Jrate (sourceforge); OVM (Purdue); J9VM (IBM) ;
aphlion (apoge).
venir: RTSJ multiprocesseurs (Jeopard) / Implantations DRTSJ (JSR50)
3
Spcications RTSJ
Apport de Java au Temps Rel
Choix de lordonnanceur et plusieurs types dentits ordonnanables (RTT,AEH)
EO: Proprits temporelles: Paramtres dactivation, Paramtres
dordonnancement
Plus de contrle: Interruptions Asynchrones, choix du Protocole de
Synchronisation; choix du type de mmoire (Memory Parameters).
Analyse de Faisabilit
Dtection de fautes temporelles: non respect des priodes dactivation, dpassement
de cot
Dtection de dfaillances temporelles: dpassement dchance
JAVA (Write Once Run Anywhere) RTSJ (Write Once Carefully Run Anywhere
4
Caractristiques des systemes temps rel
STR contraintes strictes (temps rel dur): le non respect des contraintes temporelles
peut conduire des catastrophes (avionique)
Le standard DO-178B a t dvelopp aux USA pour lavionique (5 niveaux de
consquence en cas de faute. (a-catastrophique; b-svre; c-majeur; d-mineur; e-sans
effet).
Safety Critical: lchec dune excution ou des fautes conduit des pertes
humaines (niveaux a,b,c).
Mission Critical: DO-178B (niveaux d et e). Systmes de navigation, Systme
dafchage (avionique)/
STR contraintes relatives (temps rel souple): le non respect de contraintes
temporelles est tolr, sans consquence catastrophique (multimdia)
STR contraintes mixtes compos de tches temps rel dures et de tches temps rel
souples.
5
Caractristiques des tches temps rel
Date dactivation: ri. Lorsque toutes les activations sont simultane (r1=r2=...=ri) on
parle dactivation synchrone
Dure dexcution (charge processeur): Ci
Priode dactivation: Ti,TiMin: Dure xe ou minimale entre les activations de deux
instances successives.
Echance ou Dlai critique; Di: Temps allou la tche pour terminer son excution.
Echance sur requte (Di=Ti) / Echance contrainte (Di<=Ti)
Ci
+
t0 ri + Ti ri
Ractivation Activation
ri + Di
Echance
6
QQS Dnitions
un ordonnanceur premtif et non premtif.
une tche est dite concrte: si linstant de premire activation est connu.
des tches sont synchrones si leur activation est simultanne.
des tches sont harmoniques si leurs priodes sont des multiples.
une tche est rentrante sil est possible que plusieurs instances soient en cours
dexcution simultanment (Di>Ti).
tches sporadiques: Ti tches apriodiques: TiMin.
ordonnancement hors ligne: une squence dordonnancement est gnre, implante
dans une table et rpte linni par un squenceur.
ordonnancement en ligne: lalgorithme est implant dans le noyau et excut chaque
instant.
7
ordonnaNcement FP/HPF
Rate Monotonic
17
2 4 6 7
5
7
t1
t2
t3
11
11
14
13
2 7 7
3 11 11
5 13 13
8
Earliest Deadline First (EDF)
17
2 4 6 7
5
7
t1
t2
t3
11
11
14
13
Algorithmes dordonnaNcement
Principaux algorithmes: Rate Monotonic, Deadline Monotonic, Earliest Deadline
First, FIFO.
RTSJ: un ordonnanceur priorits xes est obligatoire: FP/HPF
-> classe PriorityScheduler (obligatoire)
-> autre classes (optionnelles) EDFScheduler
un minimum de 28 priorits
Prio > 10 threads temps rel / Prio < = 10 threads non temps rel
Scheduler Scheduler.getDefaultScheduler();
void Scheduler.setDefaultScheduler(Scheduler s);
String Scheduler.getPolicyName();
public static void main(String [] args){
Scheduler.setDefaultScheduler(PriorityScheduler.instance());
10
RTSJ: Entits ordonnaNcables
Runnable
Thread
RealtimeThread
NoHeapRealtimeThread
Schedulable
AsyncEventHandler
BoundAsyncEventHandler
Diagramme de classes RTSJ
11
Threads Temps Rel
oneshot
classe RealTimeThread
Note: Thread oneshot. Quelle priorit par dfaut ?
public static int MIN_PRIORITY = PriorityScheduler.instance().getMinPriority();
public static int MAX_PRIORITY = PriorityScheduler.instance().getMaxPriority();
import javax.realtime.*;
public class LaPlusSimple {
public static void main (String [] args){
RealtimeThread lps = new RealtimeThread(){
public void run () {
System.out.println ("hello from LaPlusSimple");
}
};
lps.start();
}
}
12
Evnements asynchrones
AsyncEventHandler aeh=new AsyncEventHandler(){
public void handleAsyncEvent(){
System.out.println("hello from laPlusSimpleAperiodic");
}
};
AsyncEvent ae = new AsyncEvent();
ae.addHandler(aeh);
ae.re();
classe AsyncEventHandler
classe AsyncEvent
Note:
On peut associer plusieurs AEH un mme vnement;
On peut associer un mme AEH un plusieurs vnements ;
Dans ce cas on en pas capable dindentier la source de lvnement
13
Parametres dordonnncement
classe SchedulingParameters
classe PriorityParameters
import javax.realtime.*;
public class PasTropDure {
public static void main (String [] args){
RealtimeThread ptd = new RealtimeThread(new PriorityParameters(prio)){
public void run () {
System.out.println ("hello from PasTropDure");
}
};
lps.start();
}
}
ImportanceParameters
SchedulingParameters
PriorityParameters
14
Parametres Dactivation
classe ReleaseParameters
classe PeriodicParameters
classe SporadicParameters
PeriodicParameters(HighResolutionTime start,
RelativeTime period,
RelativeTime cost,
RelativeTime deadline,
AsyncEventHandler overrunHandler,
AsyncEventHandler missHandler)
PeriodicParameters
ReleaseParameters
AperiodicParameters
SporadicParameters
SporadicParameters(RelativeTime
minInterarrival,
RelativeTime cost,
RelativeTime deadline,
AsyncEventHandler overrunHandler,
AsyncEventHandler missHandler)
15
Realtime Thread Periodique
import javax.realtime.*;
public class SimplePeriodic {
public static void main (String [] args){
RealtimeThread spt = new RealtimeThread(
new PriorityParameter(prio),
new PeriodicParameters(
null, Offset null=dmarrage immdiat
new RelativeTime(7000,0), Priode (Ti)
new RelativeTime(2000,0), Cot (Ci)
new RelativeTime(7000,0), Echance (Di)
null, Handler de dpassement de cout overrunHandler
null) Handler de dpassement dchance DeadlineMissHandler
){
public void run () {
do {
System.out.println ("hello from SimplePeriodic!");
} while (waitForNextPeriod()
};
spt.start();
}
}
Ci Ti Di
2 7 7
16
venement Sporadique
import javax.realtime.*;
public class SimpleSporadic {
public static void main (String [] args){
AsyncEventHandler aeh=new AsyncEventHandler(
new PriorityParameters(20),
new SporadicParameters(
new RelativeTime(4000,0), priode min
new RelativeTime(1000,0), cot
new RelativeTime(2000,0), chance
null, overrunHandler
null); deadlineMissHandler
null, null, null, true,
null){
public void handleAsyncEvent(){
System.out.println("hello from SimpleSporadic");
}
};
AsyncEvent ae = new AsyncEvent();
ae.addHandler(aeh);
ae.re();
sleep(800);
ae.re();
sleep(800);
ae.re();
}
}
Serge Midonnet
a(3)
4
a(0)
ti
16 12 8 0
Ti (0)
Ti (1) Ti(2)
a(1) a(2)
17
AsyncEventHandler
interface
Schedulable
RealtimeThread
interface
Runnable
Thread
AsyncEventHandler
interface
Schedulable
RealtimeThread
interface
Runnable
Thread
analsye de Faisabilit
1.utilisation processeur
Principaux algorithmes: Rate Monotonic, Deadline Monotonic, Earliest Deadline
First, FIFO
3 mthodes pour vrier la faisabilit dun systme (respect des chances)
1. analyse de lutilisation processeur: fraction de temps passe par le processeur a
excuter les tches
Dans certain cas le facteur dutilisation permet de conclure sur la faisabilit du
systme.
Dans le cas (ri=0 et Di=Ti), un ordo Rate Monotonic sera valide si U <= n
(2^1/n-1);
Dans le cas EDF U <= 1;
U =
n

i=1
C
i
T
i
1
1
18
Conditions dordonnanabilit
utilisation processeur
Rate Monotonic
Thorme 1: Lalgorithme RM est optimal, dans la classe des algorithmes priorits xes, pour des systmes
de tches indpendantes, synchrones, et priodiques chances sur requte.
Thorme 2 (Condition Sufsante): Un systme S compos de n tches priodiques chance sur
requte et indpendantes est ordonnanable par RM si :
Deadline Monotonic
Thorme 3: Lalgorithme DM est optimal, dans la classe des algorithmes priorits xes, pour des systmes
de tches indpendantes, synchrones, et priodiques chances infrieures aux priodes (Di<=Ti).
U =
n

i=1
C
i
T
i
n(2
1/n
1)
1
19
Conditions dordonnanabilit
utilisation processeur
Systme 1:
U=2/7 + 3/11 + 5/13 = 0,943
n(2**1/n-1)=0,80 -> U > 0,80 et U < 1
La condition sufsante nest pas respecte: IMPOSSIBLE de DECIDER
Systme 2:
U=2/7+3/11+5/17=0,852
La condition sufsante nest pas respecte: IMPOSSIBLE de DECIDER
2 7 7
3 11 11
5 13 13
2 7 7
3 11 11
5 17 17
17
2 4 6 7
5
7
t1
t2
t3
11
11
14
13
20
Analyse des temps de rponse
(analyse de faisabilite)
21
2 7 7
3 11 11
3 20 20
t 1 2
w(t) 2 2
t1
t 1 5
w(t) 5 5
t2
t 1 8 10
w(t) 8 10 10
t3
w(t) = C
i
+

kHP(j)

t
T
k

C
k
(1)
1
t3
2 4 6 7
5
7
t1
t2
11
11
14
R
1
(1)
w(1) = 2
w(2) = 2
R
2
(1)
w(1) = 3 +

1
7

2 = 5
w(5) = 3 +

5
7

2 = 5
R
3
(1)
w(1) = 3 +

1
7

2 +

1
11

3 = 8
w(2) = 3+

8
7

2+

8
11

3 = 10
w(3) = 3+

10
7

2+

10
11

3 = 10
1
Temps de rponse (R(i) : demande processeur (w(t)) = quantit de travail effectu t
ordonnaNcement FP/HPF
Rate Monotonic
17
2 4 6 7
5
7
t1
t2
t3
11
11
14
13
2 7 7
3 11 11
5 13 13
22
Earliest Deadline First (EDF)
17
2 4 6 7
5
7
t1
t2
t3
11
11
14
13
Priode detude (Busy Period)
Priode dtude de niveau 15
7
11
14 12 6
4
7
14
pri = 20
pri = 15
t1
t2
Priode dtude de niveau 20
t 1 5 7 10 12
w(t) 5 7 10 12 12
Bp_15
3 6 6
2 4 7
24
Priode detude (Busy Period)
w(t) =

kHP(j)
j

t
T
k

C
k
(1)
BP
i
= min{t > 0|w(t)} (2)
Q
i
=

BP
i
T
i

(3)
1
t = 1
w(t) =

1
6

3 +

1
4

2 = 5
t = 5
w(t) =

5
6

3 +

5
4

2 = 7
t = 7
w(t) =

7
6

3 +

7
4

2 = 10
t = 10
w(t) =

10
6

3 +

10
4

2 = 12
t = 12
w(t) =

12
6

3 +

12
4

2 = 12
t = w(t) = 12
1
3 6 6
2 4 7
Priode dtude de niveau 15
7
11
14 12 6
4
7
14
pri = 20
pri = 15
t1
t2
Priode dtude de niveau 20
25
Analyse des temps de rponse
CT
i
(m) = min{t > 0 | w(t)}
(1)
w(t) = mC
i
+

kHP(j)

t
T
k

C
k
(2)
R
i
(m) = CT
i
(m) (m1) T
i
(3)
R
i
= max
m=1...Q
i
1
(R
i
(m) (4)
1
Priode dtude de niveau 15
7
11
14 12 6
4
7
14
pri = 20
pri = 15
t1
t2
Priode dtude de niveau 20
Calcul du Temps de rponse de linstance
(Ri (m))
Calcul de la date de Terminaison de chaque
instance (CTi(m))
avec
i=numro de la tche
m=numro de linstance
Calcul du pire temps de rponse (Ri)
avec
Qi=nombre dinstances tudier pour la
tche i (dans la busy period)
26
Analyse des temps de rponse
CT
i
(m) = min{t > 0 | w(t)}
(1)
w(t) = mC
i
+

kHP(j)

t
T
k

C
k
(2)
R
i
(m) = CT
i
(m) (m1) T
i
(3)
R
i
= max
m=1...Q
i
1
(R
i
(m) (4)
1
CT
2
(1)
w(1) = 1 2 +

1
6

3 = 5
w(5) = 1 2 +

5
6

3 = 5
CT
2
(2)
w(4) = 2 2 +

4
6

3 = 7
w(7) = 2 2 +

7
6

3 = 10
w(10) = 2 2 +

10
6

3 = 10
CT
2
(3)
w(8) = 3 2 +

8
6

3 = 12
w(12) = 3 2 +

12
6

3 = 12
R
2
, 1 = 5
R
2
, 2 = 10 4 = 6
R
2
, 3 = 12 8 = 4
R
2
= 6
1
27
Synchronisations
classes de moniteurs
import javax.realtime.*;
public class SimpleMonitor{
public static void main(String[] args){
java.lang.Object res1 = new java.lang.Object();
PriorityInheritance pip = new PriorityInheritance.instance();
MonitorControl.setMonitorControl(res1,pip);
MonitorControl policy = res1.getMonitorControlPolicy();
}
}
MonitorControl
PriorityInheritance PriorityCeilingEmulation
28
inversion de priorit non borne
l
i
b

r
a
t
i
o
n

d
e

r
e
s
s
o
u
r
c
e
5
7
d
e
m
a
n
d
e

d
e

r
e
s
s
o
u
r
c
e
d
e
m
a
n
d
e

d
e

r
e
s
s
o
u
r
c
e
l
i
b

r
a
t
i
o
n

d
e

r
e
s
s
o
u
r
c
e
a
c
c


l
a

r
e
s
s
o
u
r
c
e
t3 Basse Priorit
t2 Priorit Moyenne
t1 Priorit Haute
excution normale utilisation de la ressource inversion de priorit
t1 t2 t3 t4 t5 t0
tau_1 subit linterfrence de tau_2 avec laquelle elle ne partage pas de ressource (ni directement ni indirectement).
Le rsultat est limpossibilit de borner le temps de blocage (calcul du facteur de blocage de tau_1).
29
invrsion de priorit non borne
inversion de priorit
2 4 6 7 11
d
e
m
a
n
d
e

d
e

r
e
s
s
o
u
r
c
e
t1 Priorit Haute
5 11
5 11
5 11
7
d
e
m
a
n
d
e

d
e

r
e
s
s
o
u
r
c
e
t3 Basse Priorit
t2!A Priorit Moyenne
t2!B Priorit Moyenne
t2!C Priorit Moyenne
l
i
b

r
a
t
i
o
n

d
e

r
e
s
s
o
u
r
c
e
a
c
c


l
a

r
e
s
s
o
u
r
c
e
l
i
b

r
a
t
i
o
n

d
e

r
e
s
s
o
u
r
c
e
excution normale utilisation de la ressource
30
Priority inheritance protocol
Deux types de blocage:
Direct Blocking (blocage direct)
Push-through Blocking (blocage indirect)
d
e
m
a
n
d
e

(
S
C
1
)
2 4 6 7
5
7
11
11
t3 Basse Priorit
t2 Priorit Moyenne
t1 Priorit Haute
excution normale utilisation de la ressource inversion de priorit utilisation de la ressource en priorit leve
i
n
s
t
a
n
t

d

r
i
t
a
g
e
a
c
c

s

(
S
C
1
)
l
i
b

r
a
t
i
o
n

(
S
C
1
)
d
e
m
a
n
d
e

(
S
C
1
)
31
Priority inheritance protocol
algorithme
Lorsquune tche J1 demande laccs une ressource utilise par une tche moins prioritaire J2. J1 se bloque et
J2 hrite de la priorit de J1.
La le dattente de la ressource est ordonne par priorit dcroissantes
Lhritage de priorit est transitif. Lorsque J3 bloque J2 et que J2 bloque J1, alors J3 hrite de la priorit de J1 via
J2 (avec Prio1 > Prio2 > Prio3).
Lorsque J2 libre la ressource elle rcupre sa priorit initiale
Lorsque la ressource est libre, elle est alloue la tche la plus prioritaire.
Blocage Direct (direct blocking): Lorsquune tche de priorit H est bloque par une tche de priorit L
Blocage indirect (push through blocking): Lorsquune tche de priorit M est bloque par une tche de priorit L qui
hrit dune priorit H.
Blocage par transitivit
32
Priority inheritance
implantation
monitorControljavax.realtime.PriorityInheritance@7b0c1c
t3 : debut de instance 0
t3 : instance 01sec
thread3enter RES-1
t31sec
t1 : debut de instance 0
t1 : instance 01sec
t32sec
t33sec
t34sec
t35sec
thread3leaves RES-1
thread1enter RES-1
t11sec
t12sec
t13sec
t14sec
t15sec
thread1leaves RES-1
t1 : instance 01sec
t1 : n de instance 0
t2 : debut de instance 0
t2 : instance 01sec
t2 : instance 02sec
t2 : instance 03sec
monitorControljavax.realtime.PriorityInheritance@13ee78
t3 : debut de instance 0
t3 : instance 01sec
thread3enter RES-1
t31sec
t1 : debut de instance 0
t1 : instance 01sec
t32sec
t33sec
t2 : debut de instance 0
t2 : instance 01sec
t2 : instance 02sec
t2 : instance 03sec
t2 : n de instance 0
t34sec
t35sec
thread3leaves RES-1
thread1enter RES-1
t11sec
t12sec
t13sec
t14sec
t15sec
thread1leaves RES-1
Sans PIP Avec PIP
33
Priority inheritance protocol
Transitivit
l'instant t4 tau_2 demande l'accs SC1. Laccs lui est refus et tau_3 hrite de la priorit de tau_2.
l'instant t6: tau_1 demande l'accs SC2. Laccs est refus (bloqu par tau_2) et tau_2 hrite de la priorit de tau_1. Comme tau_2 est bloque par tau_3, tau_3 hrite
par transitivit de la priorit de tau_1
INTERET: viter les interfrences de tches de priorit intermdiaires (entre M et L). Si pas de transitivit alors les interfrences sur tau_3 conduiront des inversions
non bornes sur tau_1.
Section 2
5
t3 Basse Priorit
t2 Priorit Moyenne
t1 Priorit Haute
t1 t2 t3 t4 t5 t6
D(SC2)
D(SC1)
D(SC1)
L(SC2)
L(SC1)
t7 t8 t9
excution normale
Section 1
34
Priority inheritance protocol
accs imbriqus
linstant t4 tau_2 demande laccs SC2 et se bloque; tau_3 hrite de la priorit de tau_2.
linstant t6 tau_1 demande laccs SC1 se bloque; tau_3 hrite de la priorit de tau_1.
linstant t7 tau_3 libre SC1 mais ne retrouve pas sa priorit initiale car elle dtient toujours SC2 (demande par tau_1)
linstant t8 tau_3 libre SC2 et retrouve sa priorit.
ATTENTION: si tau_3 retrouve sa priorit linstant t7 tau_2 sexcutera hors SC avant tau_1 (inversion non borne)
t8
5
t3 Basse Priorit
t2 Priorit Moyenne
t1 Priorit Haute
t1 t2 t3 t4 t5 t6
excution normale
D(SC2)
D(SC1) L(SC1)
L(SC2)
D(SC1)
D(SC2)
Section 1 Section 2
t7
35
interblocages
blocage ...
2 4 6 7
t1 Priorit Haute
d
e
m
a
n
d
e

R
E
S
1
d
e
m
a
n
d
e

R
E
S
2
7
t3 Basse Priorit
d
e
m
a
n
d
e

R
E
S
2
d
e
m
a
n
d
e

R
E
S
1
excution normale utilisation de RES2 utilisation de RES1
36
Chaines de blocages
t3 Basse Priorit
t2 Priorit Moyenne
t1 Priorit Haute
L
(
S
C
2
)
D
(
S
C
2
)
excution normale utilisation de SC1 utilisation de SC2
D
(
S
C
1
)
t7
t3 t4
t5 t6
t0
t1 t2 t8
37
Priority CEILING emulation
algo
appel aussi Highet Locker Priority ou Priority Protect (Ada)
Principe:
On dni la priorit plafond C(S) dune ressource S comme la plus haute priorit des tches qui lutilise. C(S)
doit tre calcule priori(off-line)
Lorsquune tche entre dans une ressource (lock) S, sa priorit change, elle prend la valeur max entre sa
propre priorit et la priorit de la ressource.
Lorsquelle libre la ressource elle reprend la priorit quelle avait avant dutiliser la ressource (sa priorit
initiale ou une priorit hrite).
38
Priority Ceiling emulation
Proprit
l'instant t1 tau_3 demande et obtient l'accs SC1, elle hrite alors de la priorit plafond de la ressource (H).
l'instant t2: tau_2 est active mais ne peut pas s'excuter car sa priorit est infrieure celle de tau_3.
l'instant t3: tau_1 veut s'excuter mais sa priorit est gale celle de tau_3.
l'instant t4 tau_3 libre SC1 et tau_1 s'excute. A l'instant t5 tau_1 accde SC1 puis l'instant t6 tau_1 accde SC2.
2 4 6 7
5
7
11
t3 Basse Priorit
t2 Priorit Moyenne
t1 Priorit Haute
excution normale utilisation de SC1 inversion de priorit utilisation de la ressource SC2
t7 t3 t4 t5 t0 t1 t9 t10 t2 t6 t8
H H
39
Priority CEILING protocol
proprits
algorithme:
A chaque smaphore est assign une priorit gale la priorit du thread le plus prioritaire utilisant la ressource.
Cs(*) est la plus haute priorit des sections critiques en cours dutilisation. (Priorit Critique Systme)
Entrer dans une section critique J_i doit avoir une priorit suprieure Cs(*).
Dans le cas contraire, J_i est bloque. Lorsque J_i se bloque elle transmet sa priorit la tche qui possde le
smaphore. J_k continue dans la section critique avec la priorit de J_i.
Lhritage de priorit est transitif
+ Inversions de Priorits Bornes
+ Pas de deadlocks
+ Nombre max de blocages = 1
+ Meilleur Temps de Rponse pour les tches de haute priorit
- Difcile implanter
40
Priority CEILING protocol
avec rtsj
41
public class TestInterPCE {
! private final static Object Bleue = new Object();
! private final static Object Jaune = new Object();
! public static final int NB_IT = 177500;
! public static void main(String[] args) throws InterruptedException {
! ! while (!RConsole.isOpen()){
RConsole.open();
}
! !
! ! PriorityCeilingEmulation pce1 = PriorityCeilingEmulation.instance(19);
! ! MonitorControl.setMonitorControl(Bleue,pce1);
! !
! ! PriorityCeilingEmulation pce2 = PriorityCeilingEmulation.instance(19);
! ! MonitorControl.setMonitorControl(Jaune,pce2);
! ! RealtimeThread t1 = new RealtimeThread(new PriorityParameters(18),new PeriodicParameters(new RelativeTime(3000,0),
new RelativeTime(50000,0), new RelativeTime(50000,0), new RelativeTime(50000,0), null, null)) {
! ! !
public void run() {
! ! ! !
! ! ! ! for(int j=0 ; j < NB_IT ; j++);//une seconde
! ! ! ! RConsole.print("T1 : - 1 seconde hsc\n");
! ! ! ! RConsole.print("T1 : - demande ressource Jaune\n");
! ! ! !
! ! ! ! synchronized(Jaune){
! ! ! ! ! RConsole.print("T1 : - entre ressource Jaune\n");
! ! ! ! ! for(int j=0 ; j < NB_IT ; j++);//une seconde
! ! ! ! ! RConsole.print("T1 : - "+(1)+" seconde Jaune\n");
! ! ! ! ! for(int j=0 ; j < NB_IT ; j++);//une seconde
! ! ! ! ! RConsole.print("T1 : - "+(2)+" seconde Jaune\n");
! ! ! ! !
! ! ! ! ! synchronized(Bleue){
! ! ! ! ! ! RConsole.print("T1 : - entre ressource Bleue\n");
! ! ! ! ! ! for(int j=0 ; j < NB_IT ; j++);//une seconde
! ! ! ! ! ! RConsole.print("T1 : - "+(1)+" seconde Bleue\n");
! ! ! ! ! ! for(int j=0 ; j < NB_IT ; j++);//une seconde
! ! ! ! ! ! RConsole.print("T1 : - "+(2)+" seconde Bleue\
! ! ! ! ! ! RConsole.print("T1 : - quitte ressource Bleue\n");
! ! ! ! ! }
! ! ! ! ! for(int j=0 ; j < NB_IT ; j++);//une seconde
! ! ! ! ! RConsole.print("T1 : - "+(3)+" seconde Jaune\n");
! ! ! ! ! for(int j=0 ; j < NB_IT ; j++);//une seconde
! ! ! ! ! RConsole.print("T1 : - "+(4)+" seconde Jaune\n");
! ! ! ! ! RConsole.print("T1 : - quitte ressource Jaune\n");
! ! ! ! }
! ! ! ! for(int j=0 ; j < NB_IT ; j++);//une seconde
! ! ! ! RConsole.print("T1 : - derniere seconde hsc\n");
! ! ! }
! ! !
! ! };
Priority Ceiling protocol
exemple 1
linstant t1 tau_3 demande et accde SC1;
linstant t2 tau_2 est active et prempte tau_3; linstant t3 tau_2 demande laccs SC2 et se bloque (la priorit plafond des ressources est H) tau_3 hrite de la priorit
de tau_2 et continue sexcuter.
linstant t4 tau_1 est active et prempte tau_3;
linstant t5 tau_1 demande laccs SC1 laccs est refus (sa priorit nest pas strictement sup la priorit plafond systme (H);
mande refuse car
11
2 4 6 7
5
7
11
t3 Basse Priorit
t2 Priorit Moyenne
t1 Priorit Haute
excution normale utilisation de SC1 inversion de priorit utilisation de la ressource SC2
D
(
S
C
1
)
D
(
S
C
1
)
a
c
c

s

(
S
C
1
)
L
(
S
C
1
)
D
(
S
C
2
)
a
c
c

s

(
S
C
2
)
L
(
S
C
2
)
L
(
S
C
2
)
t10 t4 t5 t6 t7 t8
t0
t1 t2 t9 t3
H H
42
utilisation de SC2
t3 Basse Priorit
t2 Priorit Moyenne
t1 Priorit Haute
L
(
S
C
2
)
D
(
S
C
2
)
D
(
S
C
1
)
D
(
S
C
0
)
D
(
S
C
2
)
excution normale utilisation de SC1 utilisation de SC0
t7 t6
t0
t1 t2 t8
t3 t4
t5
Priority Ceiling protocol
exemple 2
a t0: tau_3 sexcute puis entre en SC2.
a t1: tau_2 est active sexcute puis a t2 demande l accs a SC2 : la priorit de tau_2 nest pas suprieure M, tau_3 hrite de la priorit de tau_2 et continue
t3: tau_3 entre dans la section SC1 (accs imbriqu); autoris car aucune section nest utilise par dautres tches
t4 tau_1 est active, sexcute puis t5: demande accs SC0 (libre); mais laccs est refus car sa priorit nest pas suprieure SC1 (priorit systme).
t6 tau_3 sort de la section SC1 retrouve sa priorit, la priorit de tau_1 devient suprieure la priorit systme (SC2=M) donc tau_1 entre en section critique SC0.
t7 tau_1 termine
t7
mande refuse car
Affectation des priorit aux
ressources:
SC0: H;
SC1: H;
SC2: M
H H
tau_1 utilise successivement SC0 puis SC1. tau_2 utilise SC2.
tau_3 utilise SC2 avec appel imbriqu SC1. M
43
Faisabilite
Integration du facteur de blocage
Dnition: facteur de blocage: interfrence due aux tches moins prioritaires lors du
partage de ressource. Dans RTSJ 1.1
Problme: le calcul du facteur de blocage est correct en cas dabsence dinversions de
priorits non borne.
La dtermination du facteur de blocage Bi est moins simple quil ne parait
Direct Blocking (simple)
Push-through Blocking, blocage par transitivit
CT
i
(m) = min{t > 0 | w(t)}
(1)
w(t) = mC
i
+B
i

kHP(j)

t
T
k

C
k
(2)
1
44
Faisabilite
Dtermination du facteur de blocage
Facteur de Blocage: cas de PIP (priorit xe)
Pour toute tche tau_k avec Prio_k < Prio_j partageant m sections critiques
avec tau_j. Linterfrence B_j,k (blocage de tau_j du tau_k) est gale au Max
des dures dutilisation des m sections critiques partages.
Facteur de Blocage: cas PCP (priorit xe)
B
j,k
= max
m
(SC
j,k
) (1)
B
j
=

kLP(j)
max
m
(SC
j,k
) (2)
1
45
Chapitre 4
Dtection des fautes temporelles
Tches Sporadiques (MitViolationBehavior)
Tches Priodiques (DeadlineMiss)
Interruptions Asynchrones des Tches (ATC)
Ordonnancement mixte & Gestion des tches apriodiques
Background Scheduling (BS)
Serveur de tches (PollingServer, DefferableServer)
Vol de temps creux (SlackStealer)
46
Dtection des fautes temporelles
tche sporadiques
assurer le respect de la frquence maximale dinter arrive: MITViolationException
RelativeTime getMinimumInterarrival()
void setMinimumInterarrival(RelativeTimeminimum)
void setMinimumInterarrival(RelativeTimeminimum)
java.lang.String getMitViolationBehavior()
re() sur un AE conduit lajout dune requte dans une le dattente pour chaque aeh associ lvnement. Lors de lactivation de
lAEH les requtes sont traites dans lordre FIFO.
4 politiques possibles appeles MIT Violation Policies: EXCEPT; IGNORE; REPLACE; SAVE
exemple: soit un AEH sporadique de priode minimale 2. A linstant t la le contient une requte en attente, linstant t+1 la mthode
re() est invoque sur un vnement auquel lAEH est attach.
Si la politique est EXCEPTjava.lang.String mitViolationExcept : une exception MITViolationException est leve par le mthode re()
Si la politique est IGNOREjava.lang.String mitViolationIgnore : la le est inchange, lappel est ignor
Si la politique est REPLACE java.lang.String mitViolationReplace : le traitement de la prcdente requte est remplac par la nouvelle
requte.
Si la politique est SAVE: (dfaut) java.lang.String mitViolationSave la requte est ajoute la le mais t+2
47
Dtection des fautes temporelles
tche Priodiques
Rappel: Structure dune tche priodique do -----> while(waitForNextPeriod)
staticboolean waitForNextPeriod()
!!!!!!!!!!force le thread est suspendu jusqu sa prochaine date dactivation si son chance na pas t dpasse (retour=true).
staticboolean waitForNextPeriodInterruptible()
!!!!!!!!!!Le mthode waitForNextPeriodInterruptible peut lever lexception InterruptedException. Il est alors possible dinterrompre un thread suspendu.
void deschedulePeriodic()
!!!!!!!!!!Le thread va se bloquer ds le prochain appel a waitForNextPeriod()
void schedulePeriodic()
!!!!!!!!!!Le thread priodique bloqu sur waitForNextPeriod() est dbloqu, il sera activ sa prochaine priode.
48
Dtection des fautes temporelles
cost Overrun & deadline miss
49
Cost Overrun: Le thread est d-schedul et si un handler est associ (CostOverrunHandler) il est appl. Le threads est re-schedul sa
prochaine date dactivation et son cot est rinitialis
Deadline Miss: Le thread est d-schedul et si un handler est associ (CostOverrunHandler) il est appl.