Académique Documents
Professionnel Documents
Culture Documents
Le Langage LOTOS
Language
Of
LOTOS… -1
5.1. Introduction
LOTOS… -2
5.1. LOTOS : introduction
En bref…
LOTOS = Process Algebra (CCS & CSP)
+ Abstract Data Type Algebra (ACT-ONE)
=> ISO Standard: IS8807 (1987)
LOTOS… -3
5.1. LOTOS : introduction
En bref…
Algèbre de processus = un cadre mathématique (algèbre) qui permet de décrire
et d'analyser des processus communicants
=> algèbre = règles de construction des processus
+ lois de composition internes définies par des axiomes
=> possibilité de raisonner sur les termes de l'algèbre (i.e., les processus)
=> analysibilité des processus
Historique :
LOTOS… -4
5.1. LOTOS : introduction
En bref…
Types Abstraits de Données = un cadre mathématique (algèbre) qui permet
de décrire et d'analyser des formats de données
=> algèbre = règles de construction des données
+ lois de composition internes définies par des axiomes
=> possibilité de raisonner sur les termes de l'algèbre (i.e., les données)
=> analysibilité des données
Historique :
• La crise des fondements mathématiques (début XXème siècle)
LOTOS… -5
5.1. LOTOS : introduction
Plan du chapitre
– 5.1. Introduction
– 5.2. Algèbre de processus : aspects principaux
– 5.3. Basic LOTOS
=> sans les données
– 5.4. Exemple (Basic LOTOS)
– 5.5. Full LOTOS
=> avec les données
LOTOS… -7
5.2. Algèbre de processus :
aspects principaux
LOTOS… -8
5.2. Algèbre de processus : aspects principaux
Concepts fondamentaux…
– Objet : spécification des systèmes concurrents en insistant sur les
aspects communication et synchronisation
LOTOS… -9
5.2. Algèbre de processus : aspects principaux
lire
Les principaux opérateurs des algèbres de
processus… traiter
– la séquence (préfixage) notée « ; »
lire ; traiter ; ecrire ; STOP ecrire
stop
| [a, b] | b b
(a ; d ; b ; STOP)
stop
c
LOTOS… -11
5.3. Basic LOTOS
Basic LOTOS = sous-ensemble de LOTOS sans les
données
LOTOS… -12
5.3. Basic LOTOS
Pour commencer…
– Le comportement d'un processus détermine, à tout moment, quelles
actions sont possibles comme action suivante du processus
On distingue
– des actions qu'un processus peut effectuer de façon interne et
indépendante (par souci d'abstraction) : i appelée action interne ou
silencieuse
LOTOS… -13
5.3. Basic LOTOS
Pour continuer…
– La structure du langage : Nom du processus
a b c
LOTOS… -14
5.3. Basic LOTOS
LOTOS… -15
5.3. Basic LOTOS
Exemple : out_data
process P [out_data] :=
out_data ; stop
out_data P
stop
endproc
endproc P
out_data
stop
LOTOS… -16
5.3. Basic LOTOS
Exemple :
process choix [a, b] :=
a ; stop a b
[]
b ; stop
endproc a b choix
stop stop
LOTOS… -17
5.3. Basic LOTOS
Les opérateurs et constructions du langage
Exemple :
process duplex [in_a, in_b, out_a, out_b] :=
in_a ; (in_b ; (out_a ; out_b ; stop
[] out_b ; out_a ; stop)
[] out_a ; in_b ; out_b ; stop) in_a out_a
[]
in_b ; (in_a ; (out_b ; out_a ; stop duplex
[] out_a ; out_b ; stop)
[] out_b ; in_a ; ou_a ; stop) in_b out_b
endproc
LOTOS… -19
5.3. Basic LOTOS
Exemple :
process generator [in_data, out_data] :=
in_data
in_data ; out_data ;
generator[in_data, out_data]
out_data
endproc
LOTOS… -20
5.3. Basic LOTOS
Les opérateurs et constructions du langage
– Parallélisme sans interaction : B1 ||| B2
• B1 et B2 sont des expressions de comportement
• B1 ||| B2 se comporte comme B1 et comme B2 sans interactions
• Axiomes :
– B1 ||| B2 = B2 ||| B1
– B1 ||| (B2 ||| B3) = (B1 ||| B2) ||| B3
– B ||| stop = B
– (a; B1) ||| (b; B2) = a; (B1 ||| (b; B2)) [] b; ((a; B1) ||| B2)
– …
a b
équivalent à a
b
stop stop
LOTOS… -21
5.3. Basic LOTOS
Exemple :
process duplex [in_a, in_b, out_a, out_b] := in_a out_a
line[in_a, out_a]
||| line[in_a, ou_a]
line[in_b, out_b] duplex
line[in_b, out_b]
where process line[in, out] :=
LOTOS… -22
5.3. Basic LOTOS
Exemple :
process two_buffers [in, out] := in
buff[in, middle]
|[middle]| buff[in, middle]
buff[middle, out] middle
buff[middle, out]
where process buff[in, out] :=
LOTOS… -24
5.3. Basic LOTOS
int1 int2
entity1 entity2
int3 int4
service
where ...
endproc
LOTOS… -25
5.3. Basic LOTOS
int1 int2
entity1 entity2
int3 int4
service
where ...
endproc
LOTOS… -26
5.3. Basic LOTOS
Les opérateurs et constructions du langage
– Hiding : hide a1, …, an in B
• B est une expression de comportement
• a1, …, an sont des actions offertes par B et cachées à l'environnement de B
=> ces actions ne peuvent pas se synchroniser avec des actions de l'environnement
=> a1, …, an sont internes à B
• Axiomes :
– hide a, b in B = hide a in (hide b in B)
– hide a in a ; B = i ; hide a in B
– … int1 int2
entity1 entity2
LOTOS… -27
5.3. Basic LOTOS
Les opérateurs et constructions du langage
LOTOS… -29
5.3. Basic LOTOS
Les opérateurs et constructions du langage
– Préemption de processus : B1 [> B2
• B1 peut être interrompue à tout moment par B2. Alors B2 continue à s'exécuter sans
reprise de B1.
• Axiomes :
– B1 [> (B2 [> B3) = (B1 [> B2) [> B3
– stop [> B = B
– B [> stop = B
– (a; B1) [> (b; B2) = (a ; B1 [> (b; B2)) [] (b; B2)
– …
LOTOS… -30
5.4. Basic LOTOS : exemple
LOTOS… -31
5.4. Basic LOTOS : exemple
philo3 philo2
?
fourchette1 fourchette2
philo1
LOTOS… -32
5.4. Basic LOTOS : exemple
LOTOS… -33
5.4. Basic LOTOS : exemple
prise-gauche prise-droite
fourchette
rendue-gauche rendue-droite
LOTOS… -34
5.4. Basic LOTOS : exemple
LOTOS… -35
5.4. Basic LOTOS : exemple
LOTOS… -36
5.4. Basic LOTOS : exemple
…/…
LOTOS… -37
5.4. Basic LOTOS : exemple
(philo[philo1-pense, philo1-mange,
fourche2-prise-gauche, fourche1-prise-droite,
fourche2-rendue-gauche, fourche1-rendue-droite]
|||
philo[philo2-pense, philo2-mange,
fourche3-prise-gauche, fourche2-prise-droite,
fourche3-rendue-gauche, fourche2-rendue-droite]
|||
philo[philo3-pense, philo3-mange,
fourche1-prise-gauche, fourche3-prise-droite,
fourche1-rendue-gauche, fourche3-rendue-droite] )
|[fourche1-prise-gauche, fourche1-rendue-gauche, fourche1-prise-droite,
fourche1-rendue-droite, fourche2-prise-gauche, fourche2-rendue-gauche,
LOTOS… -39
5.5. Full LOTOS
LOTOS… -40
5.5. Full LOTOS
LOTOS… -41
5.5. Full LOTOS
– préfixage : a ?x: t ; B
LOTOS… -42
5.5. Full LOTOS
Les opérateurs et constructions du langage
• Synchronisation : value matching
process process Synchron. condition Type of interaction Effect
Exemple :
A := g !3 ?x :primitive ; B
LOTOS… -44
5.5. Full LOTOS
Exemple :
g1 ?x: nat [x<3] ; g2 !x; stop
g2(x)
stop
LOTOS… -45
5.5. Full LOTOS
LOTOS… -46
5.5. Full LOTOS
Exemple :
LOTOS… -47
5.5. Full LOTOS
Les opérateurs et constructions du langage
=> instanciation de processus et passage de paramètres
Un processus peut être paramétré par des variables typées et instancié par des
valeurs
Exemple :
process compare [in, out](min, max: nat) :=
in ?x: nat;
(
[min<x<max] -> out !x; compare[in, out](min, max)
LOTOS… -48
5.5. Full LOTOS
LOTOS… -49
Ingénierie des protocoles - 2ème année N7 Télécom et Réseaux
5.6. Les Abstract Data Types dans LOTOS
LOTOS… -50
5.6. Les Abstract Data Types dans LOTOS
LOTOS… -51
5.6. Les Abstract Data Types dans LOTOS
LOTOS… -53
5.6. Les Abstract Data Types dans LOTOS
LOTOS… -54
5.6. Les Abstract Data Types dans LOTOS
LOTOS… -55
5.6. Les Abstract Data Types dans LOTOS
– modulaires et structurés
LOTOS… -56
5.7. Full LOTOS : exemples
LOTOS… -57
5.7. Full LOTOS : exemple 1
Un routeur simple
paquet
inp
LOTOS… -58
5.7. Full LOTOS : exemple 1
inp
LOTOS… -59
5.7. Full LOTOS : exemple 1
héritage de
type Data
Un routeur simple sorts
=> La spécification du type abstrait "Packet" data
opns …
eqns …
type Packet is Data endtype
sorts défini ailleurs (en bibliothèque)
packet, dest
opns
trois opérations
mkpacket: dest, data -> packet sur les sorts packet,
getdest: packet -> dest data et dest définies
deux constantes
LOTOS… -60
5.7. Full LOTOS : exemple 1
inp
da Router da
left right
– Dynamique :
LOTOS… -61
5.7. Full LOTOS : exemple 1
Un routeur simple
=> La spécification du comportement du routeur
LOTOS… -62
5.7. Full LOTOS : exemple 1
Un routeur simple
… ou encore sous une forme équivalente plus simple :
LOTOS… -63
5.7. Full LOTOS : exemple 2
Drop_Tail FIFO_Queue
forward
output
LOTOS… -64
5.7. Full LOTOS : exemple 2
Mécanisme de gestion de trop plein d'une FIFO
=> La spécification des données :
On parle de :
• FIFO
=> il se faut se donner :
– une constante empty_queue (une FIFO vide)
– une opération d'empilage : enqueue
– une opération de dépilage : dequeue
• paquets
=> il faut se donner :
– une opérations retournant la taille su paquet : getsize
– une opération retournant le champ donnée d'un paquet : getdata
LOTOS… -65
5.7. Full LOTOS : exemple 2
Mécanisme de gestion de trop plein d'une FIFO
=> La spécification des données
LOTOS… -66
5.7. Full LOTOS : exemple 2
Drop_Tail FIFO_Queue
forward
output
LOTOS… -67
5.7. Full LOTOS : exemple 2
LOTOS… -69
Ingénierie des protocoles - 2ème année N7 Télécom et Réseaux
5.8. Résumé et conclusion
LOTOS… -70
5.8. Résumé et conclusion
Expressivité
– permet la description d'architectures (système = assemblage de blocs)
– permet l'expression de comportements dynamiques
• concurrence, non déterminisme, communication synchrone et asynchrone
LOTOS… -71
5.8. Résumé et conclusion
Mais
LOTOS = Lots Of Terribly Obscure Symbols
! LOTOS = Language Of Thousands of Styles
…
LOTOS… -72