Verifying Correctness of Shared Channels in a Cooperatively Scheduled Process-Oriented Language
Pedersen, Chalmers
Correct concurrent behaviour is important in understanding how components will act within certain conditions. In this work. we analyse the behaviour of shared communicating channels within a coorporatively scheduled runtime. We use the refinement checking and modelling tool FDR to develop both specifications of how such shared channels should behave and models of the implementations of these channels in the cooperatively scheduled language ProcessJ. Our results demonstrate that although we can certainly implement the correct behaviour of such channels, the outcome is dependant on having adequate resources available to execute all processes involved. We conclude that modelling the runtime environment of concurrent components is necessary to ensure components behave as specified in the real world.
academic
Vérification de la Correction des Canaux Partagés dans un Langage Orienté Processus à Planification Coopérative
Cet article analyse le comportement des canaux de communication partagés dans un environnement d'exécution à planification coopérative. La recherche utilise l'outil de vérification formelle FDR pour développer des spécifications du comportement des canaux partagés et des modèles de l'implémentation des canaux dans le langage ProcessJ. Les résultats montrent que bien que le comportement correct des canaux puisse être implémenté, les résultats dépendent de la disponibilité de ressources suffisantes pour exécuter tous les processus concernés. L'étude conclut que la modélisation de l'environnement d'exécution des composants concurrents est nécessaire pour assurer que les composants se comportent conformément à la spécification dans le monde réel.
Importance de la correction des logiciels concurrents : Le comportement correct des systèmes concurrents est crucial pour comprendre comment les composants fonctionnent dans des conditions spécifiques. Bien que les méthodes de test traditionnelles soient largement utilisées, elles peuvent ne pas détecter tous les erreurs de concurrence potentielles.
Nécessité de la vérification formelle : Les auteurs illustrent avec l'exemple du logiciel d'exploration de Mars qu'une simple erreur de blocage mutuel pourrait nécessiter d'attendre 8 millions de secondes (plus de 90 jours) pour avoir 50 % de probabilité d'être découverte par les tests, tandis que la vérification formelle utilisant CSP et FDR peut détecter immédiatement ces erreurs.
Défis de la vérification des systèmes d'exécution : Puisqu'un grand nombre de programmes s'appuient sur les systèmes d'exécution des langages de programmation, assurer que le système d'exécution est sans erreur et se comporte conformément à la spécification devient critique.
Omission de l'environnement d'exécution : Les méthodes traditionnelles de vérification des systèmes basés sur les canaux ne modélisent pas le système d'exécution, le système d'exploitation, le matériel, etc., en supposant que les événements prêts restent disponibles jusqu'à leur planification.
Hypothèse de rareté des ressources : Les méthodes de modélisation standard supposent que les événements peuvent se produire immédiatement, ce qui signifie que les ressources sont disponibles lors de l'exécution des événements, mais cette hypothèse extrême ne correspond pas à la réalité.
Impact de l'environnement de planification : Les processus doivent attendre à la fin de la file d'attente de prêt d'être planifiés, et leurs événements ne seront pas immédiatement disponibles, mais les méthodes traditionnelles ne considèrent pas cette situation.
ProcessJ est un langage de programmation orienté processus basé sur la sémantique CSP, utilisant une planification coopérative et s'exécutant sur la JVM. Cet article vise à vérifier la correction de l'implémentation des canaux partagés dans l'environnement d'exécution de ProcessJ, en se concentrant particulièrement sur l'impact de l'environnement de planification sur le comportement des canaux.
Vérification de la correction de l'implémentation des canaux partagés de ProcessJ : Démontre que l'implémentation des canaux partagés de ProcessJ utilisant le planificateur coopératif existant est correcte, vérifiée par la traduction CSP et la vérification de raffinement du modèle générique de canal partagé.
Développement d'une preuve algébrique étendue de la spécification des canaux partagés : Fournit une preuve formelle que la spécification des canaux partagés se comporte effectivement comme un canal partagé CSP.
Démonstration supplémentaire de la relation entre les ressources et les processus actifs : Montre à nouveau la relation entre les ressources disponibles et le nombre de processus actifs pour satisfaire la spécification, prouvant que le nombre de planificateurs disponibles doit être égal ou supérieur au nombre de processus dans le système pour obtenir un raffinement dans les deux directions entre la spécification et le modèle.
La tâche centrale de cet article est de vérifier la correction de l'implémentation des canaux partagés dans le langage ProcessJ. Cela comprend spécifiquement :
Entrée : Code d'implémentation Java des canaux partagés de ProcessJ et spécification CSP
Sortie : Résultats de vérification prouvant si l'implémentation est conforme à la spécification
Contraintes : Considération des limitations de ressources dans un environnement de planification coopérative
Contrairement aux méthodes traditionnelles, cet article modélise explicitement le planificateur coopératif lors du processus de vérification, ce qui permet de découvrir les problèmes qui n'apparaissent que sous des conditions de planification spécifiques.
En faisant varier le nombre de planificateurs, l'étude examine comment le comportement du système change selon différentes configurations de ressources, découvrant la relation entre l'adéquation des ressources et la correction.
Théorème d'Adéquation des Ressources : Lorsque le nombre de planificateurs est égal ou supérieur au nombre total de processus, le raffinement peut être réalisé dans les deux directions du modèle failures.
Impact de l'Insuffisance de Ressources :
Avec un nombre insuffisant de planificateurs, seul le raffinement traces peut être obtenu, pas le raffinement failures
Cela ne signifie pas que le système se bloquera mutuellement, mais que certaines traces ne seront plus réalisables
Impact de la File d'Attente de Planification : La file d'attente d'exécution impose un ordre naturel sur les processus. Lorsque les planificateurs sont insuffisants, l'ensemble d'acceptation de certains processus ne sera pas inclus dans l'ensemble d'acceptation global du système.
Vérification de CSO et JCSP : Les travaux antérieurs ont vérifié les systèmes d'exécution d'autres systèmes, mais ont omis l'environnement d'exécution
Vérification de modèles SPIN : D'autres systèmes utilisent des méthodes de vérification similaires, mais supposent généralement une planification préemptive
Première Considération de l'Environnement de Planification : Modélise explicitement le planificateur coopératif dans la vérification
Découverte de Problèmes Liés à la Planification : Peut détecter les problèmes tels que les blocages qui n'apparaissent que sous des conditions de planification spécifiques
Vérification Consciente des Ressources : Quantifie la relation entre les besoins en ressources et la correction
Correction de l'Implémentation : L'implémentation des canaux partagés de ProcessJ est correcte avec un nombre suffisant de planificateurs.
Dépendance aux Ressources : Le comportement correct dépend de la disponibilité de ressources de planification suffisantes pour exécuter tous les processus concernés.
Nécessité de la Modélisation : La modélisation de l'environnement d'exécution est nécessaire pour assurer que les composants se comportent conformément à la spécification dans le monde réel.
Utilisation de Verrous : L'implémentation actuelle utilise largement les verrous/moniteurs, ce qui peut affecter la concurrence et les performances.
Exigences en Planificateurs : La nécessité d'un nombre de planificateurs égal au nombre de processus peut être irréaliste dans les applications pratiques.
Complexité de la Vérification : L'espace d'états de la vérification croît rapidement avec l'augmentation du nombre de processus.
Langages de Programmation Orientés Processus : Particulièrement applicables à la vérification des environnements d'exécution des langages basés sur la sémantique CSP
Systèmes à Planification Coopérative : Peut être appliqué à d'autres systèmes concurrents utilisant la planification coopérative
Développement de Systèmes Critiques : Applicable au développement de systèmes concurrents avec des exigences extrêmes de correction
Cet article cite 51 références pertinentes, incluant principalement :
Théorie Fondamentale de CSP : Travaux classiques de Hoare sur CSP et théories connexes
Outils de Vérification Formelle : Outil FDR et méthodes de vérification connexes
Langages de Programmation Concurrents : Recherches connexes sur JCSP, occam-π, Go, Erlang et autres langages
Algorithmes de Planification : Travaux connexes sur les algorithmes d'exclusion mutuelle et les algorithmes concurrents
Travaux Antérieurs des Auteurs : Série de recherches sur la vérification de l'environnement d'exécution de ProcessJ
Résumé : Cet article apporte une contribution importante au domaine de la vérification formelle, particulièrement dans la vérification des systèmes concurrents considérant l'environnement d'exécution. Bien qu'il présente certaines limitations, sa méthode et ses découvertes ont une valeur importante pour améliorer la fiabilité des systèmes concurrents.