Sie sind auf Seite 1von 3
SOLUTIONS DES EXERCICES CHAPITRE 2 Exercice | 1) SP. S¢P2, S(Ps. Pa)? 2) Pos, Pips. PlPs- Padi) 3) SlPu SCPIP2, P(S(Ps, Pla. Ps) Be) J» P(Ps- Pa) )) 4) Description impossible. /\, /\, fS “NS 1 Stretuce derbre 2) Graphe des processus 3) SUP(S(Pl ty). te). ta). 15) 310 Systémes dexpletation des ordinateurs Exercice 3 1) Cas de deux processus, 1) Une seule variable booléenne commune. Pour Técriture du pro- gramme de p; on désigne « Tautre processus » par py cest-a-dire paisa 2et =). contexte commun processis py (he) Ai wat section entique i: c= faux: este Gir programme | aller d di Sn: Supposons que ¢ ~ foxx. Si chaque processus teste e avant que autre ne Iai ait affectt fa valeur yay, les deux processus s‘engagent dens leur section critique. L-etclusion mutuelle mest done pas assurée 2) Une seule variable commune, fonetionnant en bascule. contexte commun processus p, abit = Ais Sit—/j alors aller @ Ai; Section critique |; tH reste da programme i ler @ Ai Le processus p; ne peut entrer dans sa section critique que si ¢ = 13 exclusion rutuelle est done garantie par l'indivisibilité de ope ration d'acoés a 1. Toutefois, la modification de 1 a chaque fin de section critique impose un fonctionnement en bascule des deux processus, incompatible avec la propriéié d'indépendance (condi- tion ©) da 2.31) de la solution. En particulier, Parrét de p; dans 1a pattie resie du programme i empéche p, d'exécuter plus d'une fois sa section critique. 3) Deux variables communes. (On pose encore j = 3 — 1 Une solution conforme aux conventions deV’énoncé peut Séerire = Solutions des exersioes 311 contexte commun bootéen tableau of : 2) AU} = 2) = fue rocesmns py: début ang Ais sie{i alors aller & ai) = war section critique i: d= faux: reste ds programme aller @ Ai fn. On a traduit ii te fait qu'un processus p, ne peut entreren section critique que si el/], Considérons toaiefos la séquence suivante 1) p, consulte e[ j] et trouve faux; 2) p,consalte {det stove fan: 3) pj fait cL] = vrai et entre dans sa section critique: 4) ps fait eli] — vrai et entre dans sa seetion critique. Leiclusion munielle n'est done pas garanti, et la solution est inaccep- table, On peut sonzer A modifier k programme de (acon 3 fare Yaffe. tation de c(i] avant le tet de {jh remplagant les deux instructions suivant Ai par : Ai: off] — wat 1 eff] alors aller @ i, Leexclusion mutuclle est cete fois garantie : en effet, si p, trouve Ly] = faux, pne se trouve pas en section enitique, et ne peut ¥ entrer puisque cfd] = yrai au moment du test de c{j]. Mais la condi- tion d) n'est maintenant pls verfiée,Soit en eet a quence suivante 1) prexécute instruction étiquetée Af ei] == vrai 2) p, exécute Tinstruction triquetée Aj + ej] = mai 3) py consults ef), trouve wai et réexécute Aj; 4) pi consuite cli), trouve vrai et réexéente A. Les deux processus sont césormais engagés dans une houcle infinie. On pourrait encore songer i améliorer Ia derniére solution en remet- tant temporairement eff] & faux & Vintérieur de la boucle d'attente e p, pour lasser passer p, = At ffj= wat; si oj) alors debut a= 3 32 ‘Systemes dexplotation des ordinates Le lecteur vérifera que la possibiité dattante infinie subsiste, en faisant exéeuter les deux processus a la méme vitesse, avec une ins- truction de retard. 4) Trois variables communes. On pose toujours j = 3 — i. ‘contexte commun = ‘tableau eft : 2): tem Toff] = cl2] = faux; Processus p,> début any “alors aller Li ‘ee sit = jalars aller & Bis itera A Sia; section riga fm jr] — few: teste programe I; aller 4 ai i La solution précédente est due 4 Dekker [Dijkstra, 67]. Montrons quielle satisfait aux conditions requises. Nous distinguons deux cas. 1) I n'y & pas confit d'accés a la section critique, Cesta-dire que Tun des processas (soit p) exteute Lt alors que el] — faux; p, entre alors en Section critique; comme c{i]¢ alors la valeur vraT ete gardera tant que p, sera en section critique, p, ne pourra entrer en section citigue avant que p, en soit sort. 2) My acontlt d’sceds, c'est-i-dire que exécution des instructions Ai, i est entrelacée avec celle de 4), Lj. On utilise alors le fait que la variable 1 n'est pas modifige par Texécution des instructions Af, Li. Sit =, alors p, entrera dans la boucle étiquetée Bj aprés avoir remis cL] faux : cola permet done entrée en section critique de pj, qui étalt engage dans la boucle Li A la fin de sa section critique, 2p, Temet 1 i la valeur j, ce qui libére p, dc la boucle Bj, 1ui permettant de tenter & nouveau Fentrée en section critique par 47. On évite done aussibien Fattenteinginie que Pentré simultanée puisque le processus p, ct lui seul entre en section critique en cas de confit Sohaions des exercices 313. 2) Cas de m processus. La solution ciaprés a été publige dans (Dijkstra, 65) ‘contexte commun : tier booléen tableau BID : n},e10 -n] our t= O pas I jus’ n faire ol T= Fae: 10: processus py : debut emir j; Aan) Ai BU] = wai; i: sit ¢ alors ‘tia T= faux: S17 billed t=: aller & Li fn. etd = vrai rj = 3 pas I aga faire eo) eas son fare Si] #1 el) alors aller 6 Li section crtine i: = 95 li] = Bf] = faux: reste du programme i; ater @ At On remarquera que la variable 1 peut prendre la valeur 0. Cola est dG au souci de conserver une solution symétrique ; sien effet n'était pas remis & 0 4 la fin de Ia section critique d'un processus p,,eelui-ci resterait privilégié en ces de confit lors de sa prochaine entrée ca section critique; les variables (0 et (0, initialisées & faux, ne sont jamais moditiées. ~— Le lecteur pourra consultec[Dijkstra, 65] pour Vexplication de cette solution, ainsi que (Knuth, 66] pour une solution modiiée, garantis- sant que tout processus demandent & entrer en section critique y parvient dans un temps fini (on notera que cette condition est plus contraignante que la condition 6) du 2.31, au spécific simplement que tout confit d’acots es résolu en un temps fini). 314 Systdmes d’explotation des ordinateurs Exercice & casa semaphore s = 0; Processus 1 Provesuas 2. Processus 3 Pes): vis): vo: is): : : Cas sémaghore s = Processus 1 Processus 2 Processus 3 POs): vis): Voss: Exorcice 5 sémaghore m= 1,1 = 0 ooleer masque = four; Matériel: arrivée du signal 'interruption masquage de Vinterruption démasquage de interruption : Pom): Vin); Vim) sim masque alors si masiue alors “début masque = faux, Vim) fn Cette solution suppose que le masquage et le démasquage ne peuvent se faire a parallele.

Das könnte Ihnen auch gefallen