L'atomicité est une propriété utilisée en programmation concurrente pour désigner une opération ou un ensemble d'opérations d'un programme qui s'exécutent entièrement sans pouvoir être interrompues avant la fin de leur déroulement. Une opération qui vérifie cette propriété est qualifiée d'« atomique », ce terme dérive de grc qui signifie « que l'on ne peut diviser ». Ce concept s'applique par exemple à une partie d'un programme dont le processus ou le thread qui la gère ne cédera pas le monopole sur certaines données à un autre processus pendant tout le déroulement de cette partie. Ce concept s'applique également aux transactions des bases de données. En règle générale, les instructions assembleur peuvent être considérées comme atomiques, mais cela ne suffit pas pour assurer une cohérence des données. Pour ce faire, des mécanismes de synchronisation doivent être mis en œuvre. Par conséquent et par extension, il est possible de dire qu'une section protégée de la sorte, qualifiée de section critique protégée par une exclusion mutuelle, est aussi atomique. Plusieurs instructions utilisées dans certaines architectures parallèles sont atomiques, et servent à implémenter des synchronisations ou des algorithmes non-bloquants. On utilise souvent les instructions Compare-and-swap, Fetch-and-add ou Test-and-set, ainsi que le couple d'instructions Load-Link/Store-Conditional. L'instruction Test-and-set s'applique à un booléen, le met à la valeur « VRAI » et renvoie l'opposé de sa valeur d'origine. Il permet d'implémenter des verrous. Fetch-and-add incrémente de manière atomique un entier en mémoire : il permet de réaliser des compteurs ou des barrières. Compare-and-swap est plus général, et permet de modifier une valeur en vérifiant auparavant celle-ci, par exemple pour s'assurer qu'elle n'a pas été modifiée entretemps. Les deux instructions Load-Link et Store-Conditional permettent de s'affranchir des problèmes de Compare-and-swap, si une variable est modifiée, puis ramenée à sa valeur d'origine.

À propos de ce résultat
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.
Cours associés (7)
CS-451: Distributed algorithms
Computing is nowadays distributed over several machines, in a local IP-like network, a cloud or a P2P network. Failures are common and computations need to proceed despite partial failures of machin
CS-522: Principles of computer systems
This advanced graduate course teaches the key design principles underlying successful computer and communication systems, and shows how to solve real problems with ideas, techniques, and algorithms fr
CS-460: Systems for data management and data science
This is a course for students who want to understand modern large-scale data analysis systems and database systems. The course covers fundamental principles for understanding and building systems for
Afficher plus
Publications associées (38)

Graph Chatbot

Chattez avec Graph Search

Posez n’importe quelle question sur les cours, conférences, exercices, recherches, actualités, etc. de l’EPFL ou essayez les exemples de questions ci-dessous.

AVERTISSEMENT : Le chatbot Graph n'est pas programmé pour fournir des réponses explicites ou catégoriques à vos questions. Il transforme plutôt vos questions en demandes API qui sont distribuées aux différents services informatiques officiellement administrés par l'EPFL. Son but est uniquement de collecter et de recommander des références pertinentes à des contenus que vous pouvez explorer pour vous aider à répondre à vos questions.