Simscript III/Dictionnaire des instructions/PRIORITY ORDER

Un livre de Wikilivres.

Cet énoncé, qui ne peut apparaître que dans le preamble, établit des priorités d’exécution entre plusieurs processus de classes différentes dans le cas où ils se trouvent activés simultanément (même heure d’activation time.a). Il doit se situer à la fin de la rubrique processes.

Syntaxe :



P1P2, ..., Pn est une liste de processus déjà déclarés. Il faut savoir que lorsque plusieurs processus ont la même heure d’activation (attribut time.a identique sur 16 chiffres), ils sont exécutés dans l’ordre correspondant aux règles suivantes :

1. Pour des processus de classes différentes, on suit l’ordre défini par l’énoncé priority order si il existe, ou bien l’ordre de leur déclaration dans la rubrique processes sinon.
2. Pour les processus d’une même classe, on suit l’ordre défini par l’énoncé break ... ties si il existe, ou bien l’ordre fifo (premier activé, premier activé, premier exécuté) sinon.


Exemple :

processes include P1, P2
	every P3 has	a Attr1,
			a Attr2
	define Attr1, Attr2 as integer variables
	break  P3    ties by high Attr1
		     then by low Attr2
	every P4 may belong to a Queue
	priority order  is P2,P3

Supposons qu’on ait un processus P1, deux processus P2, trois processus P3 ayant respectivement 9, 9, 2 comme valeurs d’attribut Attr1 et 3, 2, 1 comme valeurs d’attribut Attr2, et neuf processus P4 tous activés à la même heure... Ils seront exécutés dans l’ordre suivant :

1. Les deux processus P2 dans l’ordre fifo.

2. Les processus P3 qui a Attr1 = 9 et Attr2 = 2, puis celui qui a A1 = 9 et Attr2 = 3, puis celui qui a Attr1 = 2.

3. Le processus P1 (car déclaré avant les P4).

4. Enfin les 9 P4 dans l’ordre fifo.