Les programmes entrent en conflit lorsqu'ils tentent tous deux d'utiliser la même ressource. Lorsque plusieurs programmes tentent de fonctionner sur une ressource en même temps, il y a un risque de Problèmes de concussion . Les problèmes de concurrence surviennent lorsqu'un processus effectue une modification sur la ressource, et que l'autre programme (qui était en train d'effectuer sa propre modification de la ressource) n'en est pas conscient, et donc incapable de s'adapter.
Voici quelques exemples de problèmes de concurrence dans les manuels scolaires.
Le problème du dernier arrivé
Imaginez que vous utilisez un répertoire FTP pour partager un document. Vous collaborez avec un collègue sur un document. Vous téléchargez le document, le modifiez et le réaffichez, tout comme votre collègue.
- Vous téléchargez le document, et vous lancez une série de modifications qui prend une heure.
- Votre collègue télécharge le document en même temps que vous, mais il ne lui faut qu'une demi-heure pour compléter et retélécharger ses modifications.
Résultat : lorsque vous téléchargez votre document, vous écrasez leurs modifications et elles sont perdues.
Données périmées
Dans le même scénario, votre collègue apporte des modifications dont vous avez besoin, sans vous le dire. Votre copie du fichier ne contient pas les modifications,
Résultat : Vous écrivez vous-même les mêmes modifications avec des mots légèrement différents ou, pire encore, vous envoyez un courriel désagréable pour dire qu'il manque quelque chose.
Cela semble être un scénario simple, mais dans des cas avancés comme les bases de données multi-accès, si vous sélectionnez des enregistrements à la même milliseconde que quelqu'un les met à jour, vous pouvez rencontrer de sérieux problèmes.
Mauvais calcul
Un couple marié a un compte bancaire et des cartes de retrait communs. Ils ont 1000USD sur leur compte. Dans leur vie quotidienne, ils se trouvent dans des quartiers opposés de la ville et accèdent tous deux au distributeur automatique au même moment. Ils retirent tous deux 1000 USD. Les distributeurs savent tous deux que le solde est de 1000, ils autorisent donc le retrait, puis renvoient à la base de données centrale que le nouveau solde est de 0.
Résultat : la banque a maintenant perdu 1000USD, et ne le sait même pas.
Dans tous ces exemples, plusieurs parties effectuaient des actions sur une ressource partagée au même moment ou presque. D'où les termes "concurrence" ou "synchronisation".
Solutions
Il existe plusieurs façons de traiter ce genre de problèmes. La première consiste à utiliser un logiciel qui arbitre entre les différentes parties accédant à la ressource. Ces programmes d'arbitrage ont deux options, selon la portée et la prévisibilité des opérations :
- Fusionner les opérations de manière intelligente
- Bloquer/bloquer l'une des deux opérations jusqu'à ce que la première remarquée soit terminée.
Il est également possible de bloquer/bloquer, à condition que les deux programmes soient conçus pour vérifier un drapeau partagé indiquant l'état de la ressource. Cela nécessite généralement un développement personnalisé.
Votre réponse
Dans votre cas spécifique, les ressources sont les fichiers sur votre disque. Le synchronisme provient d'événements comme la lecture/écriture de fichiers, qui déclenchent des analyses à l'accès dans les deux programmes AV.
Windows agit comme un arbitre pour résoudre les problèmes de concurrence entre les systèmes de fichiers en verrouillage des fichiers lorsque des programmes les ouvrent pour des opérations spécifiques.
Cela signifie que les deux programmes sont en course pour accéder au fichier, et que celui qui arrive en premier obtient le verrou. À un bas niveau, cela entraîne un certain nombre d'écrasements de disque lorsque les deux programmes commencent leurs propres activités d'E/S, ce qui oblige le matériel à effectuer les deux tâches séparément, tout en entrelaçant les instructions d'E/S, ce qui rend les deux beaucoup moins efficaces, et au final, seul l'un d'entre eux gagnera. l'autre tournera et attendra de pouvoir établir son propre verrou.