‘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éeSolutions 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)