Examen de Sémantique des programmes concurrents du 19 janvier 2001


Tous documents autorisés. Durée 2h.


Première partie


Exercice 1 (Automates et langages réguliers)

Question 1 L'un des deux sous ensembles de {a,b,$}* est régulier et l'autre ne l'est pas. Lequel est régulier ? Le démontrer (en exhibant un automate et en utilisant le lemme de la pompe). #a(x) désigne le nombre de a dans la chaîne x.
{xy / x,y Î {a,b}*, #a(x) = #bx)}
{x$y} / x,y Î {a,b}*, #a(x) = #bx)}

Question 2 Montrer que l'ensemble
PRIMES = {ap / p est premier}
n'est pas régulier.

Dans les deux exercices qui suivent, vous pouvez faire une modélisation par des systèmes de transition avec produit synchronisé ou bien CCS.

Exercice 2 (Modélisation)

On souhaite modéliser un ensemble de n processus "lecteurs" et un ensemble de k processus "écrivains" cherchant à accéder un fichier commun. Il doivent respecter les règles suivantes : Question 3 Modéliser un tel système en considérant les deux variantes suivantes : Question 4 Construire le graphe d'état dans le cas de la première modélisation lorsque n=2 et k=2.

Exercice 3 (Modélisation)
On cherche à modéliser le "diner des philosophes" : quatres philosophes assis autour d'une table mangent des spaghettis. Devant chaque philosophes se trouve une assiette et une fourchette entre chaque assiette. Pour manger, le philosophe a besoin de deux fourchettes. Dès qu'il a fini de manger, il repose ses deux fourchettes.
Modéliser un tel système en considérant les deux variantes suivantes :

Deuxième partie


On s'intéresse au problèe suivant : un ensemble de processus partagent une ressource (par exemple de la mémoire). Il y a initialement K exemplaires de cette ressource. Les processus, initialement au repos, peuvent décider de travailler (transition s) puis reviennent au repos (transition w). Au repos, un processus X peut décider d'acquérir un exemplaire supplémentaire de la ressource. Pour cela il franchit les transitions tg1, tg2, tg3. Il peut aussi décider de libérer un exemplaire de la ressource et il franchit alors les transitions tr1, tr2, tr3. Ce comportement est décrit par le modèle de la figure 1. Un certain nombre de problème se posent que l'on va essayer de résoudre. Pour cela on commence par appliquer une série de réductions sur le modèle initial. On obtient successivement les réseaux des figures 2 et 3.


Question 5 Quelles réductions ont été appliquées ? (vous justifierez brièvement chacune de ces réductions)

Question 6 Pour quelles propriétés les modèles de lafigure 1 et de la figure 3 sont-ils équivalents et peut-on appliquer d'autres réductions sur le modèle de la figure 3 ?

Après un examen rapide du modèle réduit, vous constatez un problème su une évolution potentiellement aberrate du marquage de la place Ressource.

Question 7 Quel est ce problème ?

Afin de le corriger, vous rajoutez au modèle une nouvelle place Compte initialement non marquée (voi le réseau de la figure 4)

Question 8 Quelle interprétation simple pouvez-vous donner à cette nouvelle place ?
On utilise un outil pour calculer les invariants du modèle et on obtient les sommes formelles suivantes :
  1. Ressources + SxÎCCompte(x) = K
  2. "xÎC, Repos(x) + g1(x) = 1
  3. SxÎCRepos(x) + SxÎCg1(x) = N
Question 9Démontrez en utilisant ces invariants que le problème évoqué plus haut n'est plus présent dans le modèle de la figure 4.

On va maintenant résoudre l'autre problème important de cette modélisation. Pour cela on calcule les verrous du réseau (de la figure 4) et on obtient comme verrou strict l'ensemble S = {Ressource UxÎC Repos(x)}

Question 10 Montrez que ce verrou peut se vider. Qu'en déduisez vous sur la vivacité du réseau ?

On ajoute alors une nouvelle place au réseau (place Contrôle) dont le marquage initial est SxÎCkx. <x> (ce qui signifie qu'il y a pour tout x, kx fois la couleur x dans cette place, les kx pouvant être différents. Le rôle de cette nouvelle place est de garantir qu'un processus x ne pourra détenir qu'au plus kx exemplaires de la ressource à un moment donné.

Question 11 Intégrer cette place dans le réseau précédent (vous modifierez le réseau fourni en annexe).

Si vous avez corrigé le probème à l'aide de cette nouvelle place, la somme formelle suivante correspond à un invariant de votre modèle :
"xÎC, Contrôle(x) + g1(x) + Compte(x) = kx

Question 12 A l'aide de cet invariant et des invariants calculés précédemment, donnez une condition nécessaire et suffisante liant K, N et les kx garantissant que le verrou S ne peut se vider. Sous quelles hypothèses le problème soulevé à la question 7 est-il alors résolu ?

Question 13 Donnez en Ada ou en Java une implémentation de la partie serveur du dernier réseau (avec les corrections des problèmes évoqués). Ce serveur devra en particulier offrir deux entrées Get et Release (ou deux méthodes Java) permettant aux clients de prendre ou de relâcher un exemplaire de la ressource. Il gérera également les exemplaires disponibles de la ressource.

Annexe


Réseau à compléter et à rendre avec votre copie.