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

* Creation Brochure Trévoux


***Web2007 est un bureau indépendant situé à Genève et a l'habitude de travailler pour des entreprises PARTOUT en France et en Europe

Creation Brochure Trévoux





Article:

La programmation concurrente détermine un paradigme de programmation tenant compte, dans un programme, de l'existence de plusieurs piles sémantiques. Ces piles peuvent être dénommées threads, processus ou tâches. Elles sont matérialisées en machine par une pile d'exécution et un ensemble de données privées. Les threads aménagent d'une zone de mémoire partagée alors que les processus sont strictement isolés. La concurrence est indispensable lorsque l'on souhaite écrire des programmes interagissant avec le monde réel (qui est concurrent) ou tirant parti de multiples unités centrales (couplées, comme dans un système multiprocesseurs, ou disées, éventuellement en grille ou en grappe).
La programmation concurrente reste plus complexe et difficile que la programmation impérative, fonctionnelle ou encore déclarative. En fait, à chacun de ces modèles de programmation, on peut associer une version concurrente, par extension de la sémantique du langage de programmation associé. Par exemple, Prolog a été élargi en Concurrent Prolog, Haskell avec Concurrent Haskell, Java et Ada sont des langages à objets avec des primitives pour la concurrence, etc. Les techniques spécifiques pour le traitement de la concurrence peuvent être agencées en allant de la moins expressive (mais la plus facile à utiliser) à la plus expressive (et la plus complexe).
Le phénomène central apporté par la concurrence est le suivant : dans un programme non concurrent, ou séquentiel, l'ordre d'exécution des instructions élémentaires du programme est un ordre total qui reste le même d'une exécution à l'autre pour les mêmes paramètres en entrée. Dans un programme concurrent, l'exécution forme un ordre partiel. Comme la d'ordonnancement est généralement inconnue (elle est déterminée par le noyau du système d'exploitation par exemple) ou incontrôlée, on parle de l'indéterminisme de l'ordre d'exécution.
Les èmes relatifs à la concurrence se manifestent dans les cas de la concurrence compétitive et coopérative. À cause de l'indéterminisme de l'exécution, l'ac à des données partagées par les entités concurrentes peut conduire à des incohérences au niveau des relations liant ces données. Pour cela, on a historiquement employé différentes primitives de synchronisation comme les mutex, les moniteurs ou encore les sémaphores. Ces différentes primitives sont toutes une forme plus ou moins évoluée de verrouillage qui sert à mettre en place la synchronisation des entités concurrentes (sur une ressource ou plus généralement une section critique). Mais leur utilisation ne s'effectue pas sans difficultés.
Des abstractions de plus haut niveau ont été développées afin de disposer de l'expressivité de la concurrence sans les inconvénients associés à l'usage des primitives de synchronisation de bas niveau.






****Web2007 est un bureau indépendant situé à Genève et a l'habitude de travailler pour des entreprises PARTOUT en France et en Europe