race condition
Un défaut dans un système ou un processus où la sortie ou le résultat dépend de manière inattendue et critique de la séquence ou du moment d'autres événements.
course critique: quand des problèmes de synchronisation brisent la logique
Une course critique se produit lorsque deux processus ou signaux ou plus tentent d'accéder, de lire ou de modifier simultanément une ressource partagée, et que le résultat final dépend de celui qui termine en premier. En électronique industrielle, cela se produit généralement dans les circuits numériques ou les automates programmables industriels (API) où plusieurs entrées, interruptions ou threads sont en concurrence pour le même emplacement mémoire, registre ou ligne de sortie. Le résultat est un comportement imprévisible qui peut fonctionner correctement parfois et échouer de manière catastrophique d'autres fois, ce qui en fait l'une des pannes les plus difficiles à diagnostiquer.
L'exemple matériel classique est celui de deux signaux asynchrones essayant de régler ou d'effacer une bascule presque en même temps. Si le timing est trop serré, la sortie peut se métastabiliser dans un état invalide, ou la logique ne peut tout simplement pas résoudre quelle entrée a gagné. Dans le code API, les courses critiques surviennent souvent lorsque les gestionnaires d'interruption et les boucles de programme principal tentent tous deux d'écrire dans la même variable à quelques microsecondes d'intervalle. Les processeurs multicœurs modernes et les systèmes en temps réel amplifient le risque car l'ordre d'exécution des instructions n'est plus garanti de correspondre à l'ordre du code source.
Détection et prévention
Les courses critiques sont notoirement difficiles à détecter pendant les tests car elles dépendent de marges de synchronisation exactes qui peuvent ne se produire que dans des conditions de charge spécifiques, des plages de température ou du bruit électrique. Elles n'apparaissent souvent qu'après des mois de fonctionnement sur le terrain, déclenchées par une combinaison rare d'événements. La prévention repose sur des primitives de synchronisation : sémaphores, mutex, opérations atomiques ou machines d'état soigneusement conçues qui imposent l'exclusion mutuelle. Les solutions matérielles incluent l'utilisation de verrous avec des spécifications de temps de configuration et de maintien appropriées, ou la dédicace de registres séparés à chaque processus.
Dans les anciennes logiques à relais discrètes et les circuits câblés, les courses critiques étaient moins courantes car la commutation séquentielle des relais est intrinsèquement lente et sérialisée. L'essor de la logique numérique à l'échelle de la microseconde et des E/S en réseau a fait des courses critiques une préoccupation majeure dans les applications critiques pour la sécurité, en particulier dans les industries automobile, des dispositifs médicaux et du contrôle de processus. De nombreuses normes industrielles exigent désormais une vérification formelle, des temporisateurs de surveillance et un traitement redondant pour garantir un comportement déterministe même lorsque des courses sont théoriquement possibles.
Sources
- Source de la définitionWiktionary