1
April 5, 2005April 5, 2005IFT2880 -Nicolas Gorse -Avril 2005IFT2880 -Nicolas Gorse -Avril 200511
IF T 2 8 8 0 IF T 2 8 8 0 In te r- b lo ca g e Problèmes typiques et solutions
In te r- b lo ca g e
Problèmes typiques et solutions April 5, 2005April 5, 2005IFT2880 -Nicolas Gorse -Avril 2005IFT2880 -Nicolas Gorse -Avril 2005 22D é fi n it io n s D é fi n it io n s
Partage de ressources Plusieurs processus partagent l’accès àune même ressource qui ne peut être utilisée que par un seul processus àla fois Exclusion mutuelle Principe selon lequel un seul processus àla fois seulement peut accéder àune ressource, garantissant ainsi un accès exclusif àcette ressource Inter-blocage Deux processus (ou plus) attendent mutuellement l’accès à une ressource. Ex. Deux conducteurs qui attendent chacun que l’autre passe avant de redémarrer Famine Un processus qui attend indéfiniment l’accès àune ressourcePartage de ressources Plusieurs processus partagent l’accès àune même ressource qui ne peut être utilisée que par un seul processus àla fois Exclusion mutuelle Principe selon lequel un seul processus àla fois seulement peut accéder àune ressource, garantissant ainsi un accès exclusif àcette ressource Inter-blocage Deux processus (ou plus) attendent mutuellement l’accès à une ressource. Ex. Deux conducteurs qui attendent chacun que l’autre passe avant de redémarrer Famine Un processus qui attend indéfiniment l’accès àune ressource April 5, 2005April 5, 2005IFT2880 -Nicolas Gorse -Avril 2005IFT2880 -Nicolas Gorse -Avril 200533
P ro b lè m e s – In te rs e ct io n s P ro b lè m e s – In te rs e ct io n s
La règle stipule que la voiture qui arrive de la droite doit passer en premier.La règle stipule que la voiture qui arrive de la droite doit passer en premier. Que faire si les quatre voitures arrivent en même temps àl’intersection ?
Que faire si les quatre voitures arrivent en même temps àl’intersection ? April 5, 2005April 5, 2005IFT2880 -Nicolas Gorse -Avril 2005IFT2880 -Nicolas Gorse -Avril 2005 44
P ro b lè m e s – C in q P h il o so p h e s P ro b lè m e s – C in q P h il o so p h e s
Cinq philosophes sont assis àune table sur laquelle sont disposées 5 assiettes et 5 baguettes. Pour manger, un philosophe doit prendre les baguettes qui sont disposées de chaque cotéde son assiette.Cinq philosophes sont assis àune table sur laquelle sont disposées 5 assiettes et 5 baguettes. Pour manger, un philosophe doit prendre les baguettes qui sont disposées de chaque cotéde son assiette. Le comportement d’un philosophe est le suivant : prendre les baguettes, manger, reposer les baguettes, penser, et recommencer…
Le comportement d’un philosophe est le suivant : prendre les baguettes, manger, reposer les baguettes, penser, et recommencer… Que faire si deux philosophes prennent la même baguette en même temps ? Et si les cinq philosophes prennent en même temps la baguette qui est située àgauche de leur assiette ? Que faire si deux philosophes prennent la même baguette en même temps ? Et si les cinq philosophes prennent en même temps la baguette qui est située àgauche de leur assiette ?
2
April 5, 2005April 5, 2005IFT2880 -Nicolas Gorse -Avril 2005IFT2880 -Nicolas Gorse -Avril 200555
P ro b lè m e s – L e ct e u rs /E cr iv a in s P ro b lè m e s – L e ct e u rs /E cr iv a in s S o it u n c o m p te b an ca ir e ac ce ss ib le à p ar ti r d e p lu si eu rs g u ic h et s (p ro ce ss u s) . D es o p ér at io n s d e co n su lt at io n ( le ct u re ) o u d e m is e à jo u r (é cr it u re ) p eu v en t êt re f ai te s à p ar ti r d es g u ic h et s. Peut-on avoir plusieurs processus qui lisent en même temps ? Qui écrivent en même temps ? Peut-on avoir des processus qui lisent pendant qu’un autre écrit ? Que se passe-t-il si des processus se relaient pour lire les uns après les autres, bloquant ainsi l’accès en écriture à d’autre processus ?
S o it u n c o m p te b an ca ir e ac ce ss ib le à p ar ti r d e p lu si eu rs g u ic h et s (p ro ce ss u s) . D es o p ér at io n s d e co n su lt at io n ( le ct u re ) o u d e m is e à jo u r (é cr it u re ) p eu v en t êt re f ai te s à p ar ti r d es g u ic h et s.
Peut-on avoir plusieurs processus qui lisent en même temps ? Qui écrivent en même temps ? Peut-on avoir des processus qui lisent pendant qu’un autre écrit ? Que se passe-t-il si des processus se relaient pour lire les uns après les autres, bloquant ainsi l’accès en écriture à d’autre processus ? April 5, 2005April 5, 2005IFT2880 -Nicolas Gorse -Avril 2005IFT2880 -Nicolas Gorse -Avril 2005 66S o lu ti o n s S o lu ti o n s
Exclusion mutuelle Des mécanismes d’occupation sont instaurés de façon à permettre de bloquer l’accès aux autres processus pendant qu’un processus utilise la ressource Les opérations d’occupation et de libération doivent être atomiques : Un seul processus àla fois peut effectuer les opérations en question. Sinon, deux processus pourraient utiliser une ressource en même temps tout en pensant chacun être le seul àl’utiliser Inter-blocage et Famine Des mécanismes d’arbitrage et de prioritésont instaurés de façon àéviter les inter-blocages et àgarantir l’accès de la ressource aux processus àun moment donnéExclusion mutuelle Des mécanismes d’occupation sont instaurés de façon à permettre de bloquer l’accès aux autres processus pendant qu’un processus utilise la ressource Les opérations d’occupation et de libération doivent être atomiques : Un seul processus àla fois peut effectuer les opérations en question. Sinon, deux processus pourraient utiliser une ressource en même temps tout en pensant chacun être le seul àl’utiliser Inter-blocage et Famine Des mécanismes d’arbitrage et de prioritésont instaurés de façon àéviter les inter-blocages et àgarantir l’accès de la ressource aux processus àun moment donné April 5, 2005April 5, 2005IFT2880 -Nicolas Gorse -Avril 2005IFT2880 -Nicolas Gorse -Avril 200577
S o lu ti o n s – C in q P h il o so p h e s – E x cl u si o n S o lu ti o n s – C in q P h il o so p h e s – E x cl u si o n
Un mécanisme d’exclusion mutuelle est instauréde façon às’assurer que deux philosophes ne prendront pas la même baguette en même temps : prendreBaguette(intnumBaguette) reposerBaguette(intnumBaguette) Si une baguette est déjàprise, il faudra attendre qu’elle soit reposéeUn mécanisme d’exclusion mutuelle est instauréde façon às’assurer que deux philosophes ne prendront pas la même baguette en même temps : prendreBaguette(intnumBaguette) reposerBaguette(intnumBaguette) Si une baguette est déjàprise, il faudra attendre qu’elle soit reposée Cette solution garantie l’exclusion mutuelle mais elle n’évite ni l’inter-blocage, ni la famine.Cette solution garantie l’exclusion mutuelle mais elle n’évite ni l’inter-blocage, ni la famine. April 5, 2005April 5, 2005IFT2880 -Nicolas Gorse -Avril 2005IFT2880 -Nicolas Gorse -Avril 2005 88
S o lu ti o n s – C in q P h il o so p h e s – In te r- b lo ca g e S o lu ti o n s – C in q P h il o so p h e s – In te r- b lo ca g e
Un mécanisme est ajoutéde façon àce que si un philosophe a une baguette en main et que l’autre est déjàprise, il reposera alors celle qu’il a en main De cette façon, il n’empêchera pas un autre philosophe de prendre la baguette qu’il avait déjàdans la main Cela permet qu’au moins deux philosophes mangentUn mécanisme est ajoutéde façon àce que si un philosophe a une baguette en main et que l’autre est déjàprise, il reposera alors celle qu’il a en main De cette façon, il n’empêchera pas un autre philosophe de prendre la baguette qu’il avait déjàdans la main Cela permet qu’au moins deux philosophes mangent Cette ajout garantie l’exclusion mutuelle et évite l’inter-blocage, mais, il n’évite pas la famineCette ajout garantie l’exclusion mutuelle et évite l’inter-blocage, mais, il n’évite pas la famine
3
April 5, 2005April 5, 2005IFT2880 -Nicolas Gorse -Avril 2005IFT2880 -Nicolas Gorse -Avril 200599
S o lu ti o n s – C in q P h il o so p h e s – F a m in e S o lu ti o n s – C in q P h il o so p h e s – F a m in e
On ajoute un mécanisme de priorité qui ne permet pas àun philosophe de manger ànouveau tant que tous les autres n’ont pas mangé De cette façon, chaque philosophe est certain de finir par manger tôt ou tard puisque ses baguettes resteront libres tant qu’il ne les aura pas utilisées pour mangerOn ajoute un mécanisme de priorité qui ne permet pas àun philosophe de manger ànouveau tant que tous les autres n’ont pas mangé De cette façon, chaque philosophe est certain de finir par manger tôt ou tard puisque ses baguettes resteront libres tant qu’il ne les aura pas utilisées pour manger Cette ajout garantie donc l’exclusion mutuelle, évite l’inter- blocage et évite aussi la famineCette ajout garantie donc l’exclusion mutuelle, évite l’inter- blocage et évite aussi la famine April 5, 2005April 5, 2005IFT2880 -Nicolas Gorse -Avril 2005IFT2880 -Nicolas Gorse -Avril 20051010
S o lu ti o n s – L e ct e u rs /E cr iv a in s S o lu ti o n s – L e ct e u rs /E cr iv a in s S im il ai re m en t au p ro b lè m e d es c in q p h il o so p h es , i l su ff it d ’a jo u te r d es m éc an is m es p er m et ta n t d e co n tr ô le r l’ ac cè s à la r es so u rc e d e fa ço n à ce q u e La demande d’accès au compte bancaire est exclusive Plusieurs processus peuvent lire en même temps Un seul processus àla fois peut écrire Aucun processus ne peut lire si un est en train d’écrire De nouveaux processus ne peuvent commencer àlire si un processus est en attente pour l’écriture De nouveaux processus ne peuvent commencer àécrire si un processus est en attente pour la lecture
S im il ai re m en t au p ro b lè m e d es c in q p h il o so p h es , i l su ff it d ’a jo u te r d es m éc an is m es p er m et ta n t d e co n tr ô le r l’ ac cè s à la r es so u rc e d e fa ço n à ce q u e
La demande d’accès au compte bancaire est exclusive Plusieurs processus peuvent lire en même temps Un seul processus àla fois peut écrire Aucun processus ne peut lire si un est en train d’écrire De nouveaux processus ne peuvent commencer àlire si un processus est en attente pour l’écriture De nouveaux processus ne peuvent commencer àécrire si un processus est en attente pour la lecture April 5, 2005April 5, 2005IFT2880 -Nicolas Gorse -Avril 2005IFT2880 -Nicolas Gorse -Avril 20051111A p p li ca ti o n J a v a – T h re a d s A p p li ca ti o n J a v a – T h re a d s L ’u ti li sa ti o n d es t h re ad s p er m et d e fa ir e to u rn er p lu si eu rs p ro ce ss u s en m êm e te m p s L ’u ti li sa ti o n d es t h re ad s p er m et d e fa ir e to u rn er p lu si eu rs p ro ce ss u s en m êm e te m p s importjava.io.*; importjava.lang.*; importjava.lang.Thread.*; classProcessusextendsThread{ Processus(Stringname){ super(name); } publicvoidrun(){ while(true){ System.out.println("Processus"+getName()); } } }importjava.io.*; importjava.lang.*; importjava.lang.Thread.*; classProcessusextendsThread{ Processus(Stringname){ super(name); } publicvoidrun(){ while(true){ System.out.println("Processus"+getName()); } } } April 5, 2005April 5, 2005IFT2880 -Nicolas Gorse -Avril 2005IFT2880 -Nicolas Gorse -Avril 20051212
A p p li ca ti o n J a v a – T h re a d s A p p li ca ti o n J a v a – T h re a d s L es t h re ad s so n t ex éc tu és en p ar al lè le à p ar ti r d u m o m en t o ù il s so n t d ém ar ré s L es t h re ad s so n t ex éc tu és en p ar al lè le à p ar ti r d u m o m en t o ù il s so n t d ém ar ré s importjava.io.*; importjava.lang.*; classTestProcessus{ publicstaticvoidmain(Stringargs[]){ Processusp1=newProcessus("Platon"); Processusp2=newProcessus("Aristote"); Processusp3=newProcessus("Descartes"); p1.start(); p2.start(); p3.start(); } }importjava.io.*; importjava.lang.*; classTestProcessus{ publicstaticvoidmain(Stringargs[]){ Processusp1=newProcessus("Platon"); Processusp2=newProcessus("Aristote"); Processusp3=newProcessus("Descartes"); p1.start(); p2.start(); p3.start(); } }
4
April 5, 2005April 5, 2005IFT2880 -Nicolas Gorse -Avril 2005IFT2880 -Nicolas Gorse -Avril 20051313