Connaissances Informatiques >> programmation >> C /C + + Programming >> Content
  Derniers articles
  • Comment compiler en Borland C + + 
  • Comment cacher un bouton de commande…
  • C + + et la vérification des erreur…
  • Comment faire un dossier dans C + + 
  • Turbo C Définition & Process 
  • Comment supprimer une ligne dans Dat…
  • Comment initialiser une ArrayList 
  • Comment faire pour démarrer un code…
  • Comment saisir un mélange de chiffr…
  • Qu’est-ce qui décrit un stratège e…
  •   C /C + + Programming
  • C /C + + Programming

  • Computer Programming Languages

  • Delphi Programming

  • Programmation Java

  • Programmation JavaScript

  • PHP /MySQL Programmation

  • programmation Perl

  • Programmation Python

  • Ruby Programming

  • Visual Basics programmation
  •  
    C /C + + Programming

    Qu'est-ce que cela signifie qu'un programme concurrent soit correct ?

    L'exactitude d'un programme concurrent est nettement plus complexe que celle d'un programme séquentiel en raison des dimensions supplémentaires de synchronisation, d'entrelacement et de ressources partagées. Un programme concurrent est considéré comme correct s'il satisfait à sa spécification *indépendamment de la planification de ses threads ou processus simultanés*. Cela signifie que le programme produit le résultat attendu et présente le comportement souhaité dans tous les entrelacements d'exécution possibles.

    Plusieurs aspects contribuent à la définition de l’exactitude dans un programme concurrent :

    * Sécurité : Le programme n'entre jamais dans un état invalide. Cela inclut d’éviter des problèmes tels que :

    * Courses de données : Plusieurs threads accèdent et modifient le même emplacement de mémoire partagée sans synchronisation appropriée, conduisant à des résultats imprévisibles.

    * Interblocages : Deux ou plusieurs threads sont bloqués indéfiniment, attendant que l'autre libère des ressources.

    * Livelocks : Les threads changent continuellement d'état en réponse les uns aux autres, mais aucun ne progresse.

    * Mamine : Un ou plusieurs threads se voient perpétuellement refuser l’accès à une ressource partagée.

    * Conditions de course : Le résultat dépend de l’ordre imprévisible dans lequel les threads s’exécutent.

    * Vivacité : Le programme finit par progresser et se termine s'il est censé le faire. Cela implique de s’assurer que :

    * Les threads finissent par acquérir les ressources nécessaires.

    * Le programme atteint finalement un état de fin.

    * Fonctionnalité : Le programme produit le résultat correct et atteint son objectif. Ceci est similaire aux programmes séquentiels, mais compliqué par la nature simultanée de l'exécution. Le résultat final doit être cohérent dans tous les scénarios d’exécution possibles.

    Par conséquent, prouver l’exactitude d’un programme concurrent implique généralement de démontrer que :

    1. Tous les entrelacements possibles d'exécutions de threads conduisent à un état final valide. C’est incroyablement difficile et souvent peu pratique à réaliser de manière exhaustive.

    2. Le programme est exempt de violations de sécurité (impasses, courses aux données, etc.). Ce problème est souvent résolu grâce à une conception soignée et à l'utilisation de mécanismes de synchronisation (mutex, sémaphores, moniteurs, etc.).

    3. Le programme satisfait à ses propriétés de vivacité. Cela signifie démontrer que le programme finira par terminer ses tâches et ne restera pas coincé dans une boucle infinie ou une impasse.

    En résumé, l'exactitude de la programmation simultanée signifie garantir un comportement prévisible et fiable sur tous les calendriers d'exécution possibles. Cela nécessite une attention méticuleuse à la synchronisation, à la gestion des ressources et à des techniques de test et de vérification rigoureuses. Des méthodes formelles peuvent être utilisées pour une vérification rigoureuse, mais elles sont souvent coûteuses en termes de calcul et ne s'appliquent qu'à des programmes plus petits. Par conséquent, une combinaison de conception minutieuse, de tests et éventuellement de vérification formelle est généralement nécessaire pour garantir l’exactitude d’un programme concurrent.

     
    Article précédent:
    Article suivant:
    Articles recommandés
  • Comment compiler des fichiers RPC multiples 
  • Comment s’appelle le processus d’allocation de la mémoire principale aux programmes et de conservat…
  • Comment puis-je accéder et manipuler les données stockées dans le noyau d'un programme C ? 
  • Comment écrire l'équivalent de la Parole de chèque Montant en programmation C 
  • Comment changer appDelegate dans un iPhone 
  • Comment faire pour augmenter la taille du segment pour le processus 
  • Types de données ANSI C 
  • Écrire un programme C pour supprimer les éléments en double dans un tableau ? 
  • Quels sont les variables de structure initialisée à en C 
  • Qu'est-ce qu'un Xilinx XPS 
  • Connaissances Informatiques © http://www.ordinateur.cc