Abstract:
La révolution multi-coeurs dans ces dernières années a mis les techniques utilisées pour la programmation parallèle en cause. Ces techniques sont largement fondées sur les verrous qui sont difficiles à gérer et qui souffrent d’un ensemble de problèmes comme l’inter-blocage, l’inversion de priorité, le Livelook, etc. qui réduisent leur utilisation et rendent le développement des applications parallèles une tâche très délicate même pour les experts. Ces problèmes ont poussé les chercheurs à trouver d’autres solutions pour réaliser la synchronisation dans les applications parallèles sans fait recours aux verrous. Pour cette fin, les deux dernières décennies ont connu la naissance de la Mémoire Transactionnelle, une nouvelle technique pour réaliser la synchronisation dans les applications parallèles qui vise à fournir une haute évolutivité en comparaison avec le verrouillage à grain gossier et à être plus facile à utiliser que le verrouillage à grain fin. L’idée principale derrière cette technique est d’exécuter les séquences de code critiques d’une manière atomique dans des transactions. Les recherches indiquent que les mémoires transactionnelles puissent être plus performantes que les verrous traditionnels. Vu l’importance du sujet, le manque des travaux dans ce domaine et pour comprendre les différents concepts et implémentations de mémoire transactionnelle logicielle existants, une claire étude comparative de ces implémentations est nécessaire. Malgré l’existence de certains travaux dans ce sens, mais ces travaux sont très restreints et ne couvrent que quelques implémentations. Ce mémoire présente les différents concepts utilisés dans le domaine des STMs, il fournit une étude détaillée des STMs proéminents représentant l’état de l’art jusqu'à nos jours en discutant la différence entre leurs choix de conception et d’implémentation.