You are on page 1of 5
‘Solutions des exercices MS Processus eyelique de traitement de interruption A: Pit): rocédure de traitement; aller 6A Exercice 6 [Courtois, 71] cas Solution a) (utilisation de sémaphores privés). Procédures de lecture et d'écriture utilisées per le processus 1 DEMANDE DE LECTURE DEMANDE D'ECRITURE debut début Pimuter) ; Fimuter) sine alors i (Te) et (nl = 0) alors debus abut ibm mid; = mai; VespriiD Veaprita) fn fa sinon ajouter(i, filelect) ; sinon ajouter(i, filered) Pemex); Vimtex) ; Pispriv{i\) P(sprivli|) fa: fin: FIN DE LECTURE abut eniier j; Prmutex) alm al ‘si (nl = 0) et (compre de filered - = 6) alors déout ter (j, filered) ; P(soriV fin: Vi(miutex) fia; FIN D'ECRITURE dbus enter j: Promuiex) com fa 36 Spstdmesa'explottarion des ordmateurs 4 (compte de filelect 1 = 0) alors répbier out nbs ni]; Gter(j, filelect) Vispritj) fin Jusqu’d compte de felect = 0 sinon ai (oomple de filered =) = 0) alors Sier(), fered) ; PespriiD Sn fn: Solution 6) ntier nl = 0 srraphore mutex! = I,muiex2 = I,w = 1; LECTEURS REDACTEURS Pemutex!) Pimutex2) ; nim ntl Pow); Sin! = 1 alors P(v) ; Vemurext); eerire; tire Vow) . Vimutex2) Prmutext) : nl = ni=3; sinl = Oalors Véw): Vemurex!); Remarques 1) w est un sémaphore d'exclusion .mutuslls pour tous les rédacteurs, I sert au premier lesteur qui occupe le fichier et au dernier qui le libére. 2) mutex] est un sémapitore d’exclusion mutuelle pour les leceurs sea- lement. 11 proiége le compte de lecteurs nl. Si un lecteur est bloaué par w, tous les autres lecteurs le seront par muex/ 3) mutex? permet de garantir la priorité des lecteurs. Sans mux? on pourrait avoir plusieurs rédacteurs en attente sur w, avant le premier lecteur bloqué par w. Solutions des exercices 317 Cas2 entier nt e mutex = Iw = 1; REDACTEURS Sinl = J alors Pw); Pw): Vimites}s ve . eerinure lecture “ Few): Permatex) 7 nbem nl 1; inl = 0 alors V(w): Vemurex} Remarques }) w est un sémaphore d’exclusion mutuelle pour tous les rédacteurs. IL sert aussi au premier lecteur qui oecupe la ressource tau dernier qui la libére. 2) muex est un sémaphore ¢’exslusion mutuelle pour les lectcurs seuls; il protige le compte de lecteur, nl. Cas3 ‘Bmaphore mutex = 1,1 = 1.w LECTEURS REDACTEURS Pir): Pemater) n= n+ 1; sinl = 1 alors Pw); Vematex); FO): Vir: Pow): ectwe; ecriture; Piomatex) Yow) lem nl 1: Von: si nl = O alors Vive): P ites) 318 Syottmer d'explotation des ordinatews Remarques 1) r blogue tous les lecteurs nouveaux dés qu'un rédacteur est arrive. 2) w bloque toute écriture tant que les lectures ne sont pas finies. IL y a au plus un rédacteur bloqué dans la file associée & w. 3) Dés qu'un lecceur passe ou est réveilé, il incrémente ke compte des lec~ teurs, bloque éventucllement la ressource et réveille le processus suivant de Ja ile associée a r. 4) Comme ordre P(r), P/w) est respecté dans chaque processus. Il ne peut y avoir de blocage par étreinte fatale. 5) Pour rendre Ia solution plus symétrique, le rédacteur peut exéeuter la primitive Vr) immédiatement aprés P/'. 6) Cette solution n’assure de service selon ordre Wartivée (FIFO) que si toutes les files sont gérées selon ce principe. Cas 4 emtier nl = 0, nr = Sémaphore mutex! = 1, mutex? = 1, muter: welrel LECTEURS REDACTEURS Plrratex3) Pin): Plmutexl) : nlm nl + 1; sin = 1 alors P(w); P/mutexi) ; vir) Vemutex3 lecture; Pimuext) ; n= nl 1; sirl = O alors Vw) ; V (materi) ; sire = 0 alors V(r) ; Vemutex2) Remarques 1) mutes! et w jovent le méme rble que mutex et w dans le cas 1, 2) r est utilise par les rédacteurs pour se réserver 'accés & Ia ressource, tout comme w par les lecteurs dans le cas 1. Le premier rédacteur, en faisant ‘P(7), bloque les lecteurs avant leur entrée dans la section critique contcdlée Solutions des exercicer 319 par mutex!. Hestsmportant qu'il e fase en dchors de cette section cat mutex! contrdle une autie section critique dans laquelle les lecteurs libérent la ressource 3) Sans mutex, on pourait trouver un rédacteur ct pluscurs leeteurs dans ta file dattente de r. On n'assurerait pas la priorté absolue ave rédac- teurs; matex3 garantt qu'un lecteur au plus utilise. Done la file d°attente ‘de r ne peut plis contenir qu'un lecteur ou qu'un rédacteur (pendant qu'un lecteur inerémente nf) Exercice 7 Cas 1. Le cactefour peut contenir une voiture. Semaphore mutex = 1, mutes? = 1, feat = TRAVERSEE 1 CHANGEMENT TRAVERSE 2 Plraex!) booléen a = wai: Pimuex2) Pifesi Fattendre(m Pifes2) naversée commentaire mest le deat dattene: traverse de carreiow: sta lors de carrfeur: Vifeu'): On Bhi Vigew) Vimates) Vemutes2) Remarqucs. 1) feud et feu2 reglent chaqve file Is évitent aussi toute modification de {eu tant qu’tine voiture est dans le carrefour. 2) mutex] et mutex2 ont pour fonction de prévenit toute coalition de voitures voulant bloquer le feu. En conséqucnce il y a au plus une voiture Dloquée par feu! ou feu2. 3) m indique un délai d'attente. Cas 2, Le carrefour peut contenir k voitures. re mutex! — k, muten2 = K, foul = 1, feu? = 0 fre mutex = 1, w = 1: batter n= 0° 320 Systémes dexplotation des ordinateurs TRAVERSE 1 CHANGEMENT — TRAVERSE 2 Plrutes!); booldene = wai; Pfmutes2) Pie!) cP aterdre’ my Pfs?) saabrr Pomutex) : On That need. sin = J alors Pw); Pifeul): Sin = 1 aers P(w) Plates): Pew). Prmatex) Vifea2) vijout)> traverse ds carrefow ; Pinter) nana; sin = Dalors Vw) ; Pimwexs: Pimucexd) Vemutex2) 1) mutex ct mutex? ne laissent passer que k voitures au plus. 2) fel et feud servent & arréter les voitures lorsque les feux vont changer. Le processus CHANGEMENT n’est jamais bloqué longtemps derrisre feul (ou feu2) car sil est bloqué aucune voiture ne peut se bloquer par P/vr). 3) w sert a bloquer le changement de feu tant qu’il y a des voitures dans le carrefour. A cause des deux primitives P/feu), P/w), seul le processus CHAN- GEMENT peut ere blogué par. Exercice 8 (Vamtilborgh, 72] » sémaphore w LECTEURS REDACTEURS PUL) § Pin, w): lecture ecrinre; Yed,w) V(x, w)' 2) Posons : nis : valeur maximum prise par le rang 1 Bloque) : nombre de processus de rang i, bloqués dans la file d'attente du sémaphore s. ‘Soluions des exercices 321 I vient sephemess » [ inp bn emp ns = a Spe cn eae ene sone bs) Pima LS ae inv) wet) Ealorg deb Biopeld Bogue = 1 tig meri Yesemorniy FIN : Vimutexs) : 3» a) sémaphore priorité = 2m — PROCESSUS CLASSE 1 Pn + i 1, prorté) ; witisation de la ressource Vii, priorté) pour j = 1 pas I jusqu'é n — 1 faire VUL, prorte); » mre mutex = 1; sEmaphore tableau sempri{l n] = OL 2] tention disponible ; entier tableau Blogue : = Ott : m) disponible = 1; PROCESSUS CLASSE i Pfmutex) ; 5 disponible = 1 alors début - ‘disponible Vmutex) ps S02 Systdmes explouaion des ordinatewrs V¢mmuiex,) ; Pisemprild) fn uuilsation de la ressource Plrutex) : aur j= I pas J usqu‘é n faire ‘ti Bloguel > 0 alors debut Blogue| f] = Bloguelf] — V (sempris i) + caller d FIN fai disponible = 1; FIN : Vemutex) Exercice 9 Soit avec les hypotheses de 2.411, nprod (respectivement ncons) le nombre dde cycles complets (phase 1 + phase 2) exéoutés par le producteur (respoc- {tverncat consommateur) depuis instant inical. On se place dans une situa- Hon oli les deux processus ont exécute operation P sur leurs sémaphores rospectifs mais n'ont pas encore exéeuié Lopération V du méme cycle. On a alors : vide = n ~ prod + neons — 1 rnplein = nprod — ncons — 1 Par ailleurs, on a les relations suivantes entre les valeurs de nplein (respec tivement nvide) et état dir producteur (respectivement consommnateus) plein = — 1 : producteur bloqué rein 0: producteur dans sa phase 2 On a done le tableau suivant : ProD| cons Phase de dapot 2) Blogué Phase de retrait (2) |0< mprod — ncons 0. Propriété 2. La relation 1éte ~ queue, aver ies deux processus en phase de dépét ou retrait implique nprod = ncons mod n, incompatible avec 0 < nprod — ncons <1 Exercice 10 » semaphore muiexres = 1, résenve = Smophore tableae muter,!.n] = I{U-n. ‘plein = Ofr-n} détnt enter. debut entier x PROD, : Produirefartice) CONS, : P(npleini) : Preserve) Plmatex{i) Pinautexres) ; Exraire(x. iy: Demander-case() Vimutes{iy) : V (mutexres) : Prélever(artcle. x): Déposer (article, x); P(mutexres) ; Perutexf) Restituer case (x) ; Chainer): Vematexres) Vmutexid) Viresene) : V¢nplein): Consommer(article aller d PROD, aller 6 CONS, in in 2) On note msémaphore le déclarateur de semaphore avec message msémaphore réserve = m; Tnitialiser a file de messages de « réserve » avec les addresses des m cases de la rézerve msémaphore tableau nplein{:n} = OU) debi enter: abu eiier x: PROD, : Produire(article) CONS, : Pu nple, x) Pulréserre, x); Prilever(article, x); Déoser(artcie, x): Vaal réserve, x) * Yog(rpletnf}, x) Consommner article) aller 4 PROD, aller & CONS; fe ra) On notera que les procédures permeitant de réaliser le chainage des cases sont devenues inutiles : les chalnages sont en effet établis dans ies files de ‘messages des sémaphores. 324 Systemes exploitation des ordincteurs 3) Si le nombre de cases d'un tampon 1, est limité 1, il suffit c'introduire Je tableau suivant sémaphore tableau nvidetn] — In}; Dans le programme des producteurs, aprés Vinstruction Produire(article), sjouter : Pensideti)): ‘Dans le programme des consommateurs, avant Consommeraricle), ajouter : Venda); Exercice H 1 bootton rableau e{06) = faux{0-4); PHILOSOPHE i Le penser ce loys > efi ~ Det 9 i + A fare i) = wat; manger: rec c faire off] = faux: er aL; 2) (Brinch Hansen, 72] Nous donnons fa solution dans le cas ot les rédacteurs sont plus priori= taires que les leteurs. On désigne pas » une variable composée constituée de deux entiers nf et nr; Vinstruction aver v faire assure Venclusion mutuelle nl et nr; la variable w est une variable siraple. LECTEURS REDACTEURS vee v lorsgue nr = 0 faire avec » faire alm nl +7 r= nr + 1 ef attendre nl — 0; lecture; sree w fre écvinure: sec vftire nl = nf ~ Se ate — 3) début ener j, compte: straphore mutex= I, s = 0; conpte = 0; ‘A Peter) 6 alors buat pee Baie} — 1 pas I Jusqu’ compte faire ¥(s) compte = 6: V(meatex)

You might also like