WEB2007 ALSO SPEAKS ENGLISH
06 44 00 14 84 (ou 0033644001484)

* Creation Flyer Annecy-le-Vieux


Creation Flyer Annecy-le-Vieux





Article:

La famine fait allusion à un ème que peut avoir un algorithme d'exclusion mutuelle. Il se réalise lorsqu'un algorithme n'est pas équitable, c'est-à-dire qu'il ne garantit pas à tous les threads souhaitant accéder à une section critique une probabilité non nulle d'y parvenir en un temps fini. Il est difficile de concevoir des systèmes à l'abri de famines. Pour le cas de l'exclusion mutuelle par exemple, il existe deux algorithmes garantissant qu'il ne se produira pas de famine, l'algorithme de Dekker et l'algorithme de Peterson, mais dans les deux cas, cette garantie est obtenue au prix d'une coûteuse attente active.
Une des causes aléatoires de famine provient d'algorithmes qui n'assurent pas que les processus qui souhaitent entrer dans une section critique y entrent dans le même ordre que les demandes (c'est-à-dire un comportement FIFO). Un exemple typique de mécanisme de synchronisation qui ne garantit pas cet ordre est le synchronized du langage java.
Un algorithme classique aide la détection des interblocages à l'avance est l'Algorithme du Banquier. Celui-ci nécessite de connaître à l'avance les limites d'utilisation des ressources. Malgré cela, pour beaucoup de systèmes, il est impossible de connaître à l'avance les demandes de chaque processus. Cela implique que l'évitement des interblocages est souvent impossible.
Les algorithmes Attente/Mort (Wait/Die) et Blessé/Attente (Wound/Wait) traduisent deux autres méthodes d'évitement qui utilisent une technique de rupture de la symétrie. Dans ces deux algorithmes on prend en compte l'âge des processus et l'on distingue un processus âgé (A) et un processus jeune (J).
l'âge d'un processus peut être défini par horodatage (timestamp) lors de sa création. Les dates les plus petites appartiennent à des processus plus âgés, les plus grandes à des processus plus jeunes. Il est important de se rendre compte qu'un processus peut être dans un état non sûr sans pour autant forcément conduire à un interblocage. La notion de sûr/non sûr fait uniquement référence à la possibilité que le système entre dans un interblocage ou non. Par exemple, si un processus fait une requête sur une ressource A qui résulte en un état non sûr, mais relâche une ressource B pour éviter une attente circulaire, alors l'état est non sûr mais le système n'est pas en interblocage.
Une méthode consiste à toujours négocier les mutex (exclusion mutuelle) dans le même ordre. En effet, si plusieurs processus légers (thread) nécessitent d'acquérir plusieurs verrous pour effectuer leur travail, s'ils acquièrent les verrous dans un ordre différent, il est possible qu'ils se bloquent lors de la séquence d'acquisition (comme dans l'exemple précédent). Il est aussi question de s'intéresser aux priorités des processus. En effet, si par exemple un processus de haute priorité utilise un verrou en commun avec un processus de basse priorité (voir aussi inversion de priorité), il est possible d'obtenir des situations de blocage.






* Web2007 est le site d'un informaticien indépendant qui peut et veut travailler pour des entreprises partout en Europe.
Si besoin, Web2007 peut se déplacer dans toute la région Rhones-Alpes.
Pour info, j'habite personnellement à Gaillard-Haute Savoie et mon bureau est juste à coté à Genève-Suisse.