|  
    
Un logiciel en temps réel est un logiciel qui doit réagir aux entrées dans un temps spécifique et limité. Cette contrainte est cruciale pour son fonctionnement, et le non-respect des délais peut avoir de graves conséquences. Ces conséquences vont des désagréments mineurs (un léger bégaiement dans un jeu vidéo) aux pannes catastrophiques (un dysfonctionnement du système de contrôle de l'avion). 
  
 Voici un aperçu de ses principales caractéristiques : 
  
 * Criticité temporelle : La caractéristique déterminante. Le logiciel doit répondre aux événements dans un délai prédéterminé. Ce délai est souvent très court, mesuré en millisecondes voire en microsecondes.  
  
 * Comportement déterministe : Son temps de réponse doit être prévisible et cohérent. Le logiciel ne doit pas présenter de retards ou de décalages imprévisibles.  
  
 * Fiabilité : Une grande fiabilité est essentielle. Les pannes peuvent avoir de graves répercussions, le logiciel doit donc être robuste et tolérant aux erreurs.  
  
 * Gestion des ressources : Une gestion efficace des ressources (CPU, mémoire, etc.) est essentielle pour garantir des réponses rapides.  
  
 Les logiciels temps réel sont classés en deux types principaux : 
  
 * Dur temps réel : Ces systèmes ont des délais stricts qui *doivent* être respectés. Ne pas respecter une date limite est considéré comme un échec, avec souvent des conséquences critiques. Les exemples incluent les systèmes de commandes de vol, les dispositifs médicaux et les systèmes de contrôle de processus industriels.  
  
 * Temps réel doux : Ces systèmes ont des délais qui *devraient* être respectés, mais le non-respect d'un délai ne conduit pas à un échec catastrophique. Au lieu de cela, les performances du système se dégradent (par exemple, qualité de service réduite). Les exemples incluent les jeux vidéo, les applications multimédias et certains robots industriels.  
  
 Il est important de noter que même les systèmes temps réel « souples » ont souvent des exigences de synchronisation strictes. Même si un léger retard peut être tolérable, des retards importants rendent le système inutilisable.  
  
 Le développement de logiciels en temps réel implique des techniques et des outils spécialisés pour garantir leur actualité et leur fiabilité, comprenant souvent des techniques de planification, de gestion des interruptions et de contrôle de la concurrence.
 
 |