2025-11-17T23:28:19.912332

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

Informations Fondamentales

  • ID de l'article : 2510.11751
  • Titre : Verifying Correctness of Shared Channels in a Cooperatively Scheduled Process-Oriented Language
  • Auteurs : Jan Pedersen (University of Nevada Las Vegas), Kevin Chalmers (Ravensbourne University)
  • Classification : cs.PL (Langages de Programmation)
  • Date de publication : 12 octobre 2025 (préimpression arXiv)
  • Lien de l'article : https://arxiv.org/abs/2510.11751

Résumé

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.

Contexte et Motivation de la Recherche

Contexte du Problème

  1. 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.
  2. 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.
  3. 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.

Limitations des Approches Existantes

  1. 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.
  2. 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é.
  3. 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.

Motivation de la Recherche

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.

Contributions Principales

  1. 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é.
  2. 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.
  3. 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.

Détails de la Méthode

Définition de la Tâche

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

Architecture du Modèle

1. Cadre de Modélisation CSP

Utilisation de Communicating Sequential Processes (CSP) comme langage de modélisation formelle :

  • Processus : Composants abstraits définis par les événements qu'ils exécutent
  • Événements : Opérations de communication atomiques, synchrones et instantanées
  • Canaux : Médias de communication entre processus

2. Modélisation du Système de Planification

SCHEDULER = 
  rqdequeue?p → -- Retirer un processus de la file
  run.p → -- L'exécuter
  yield.p → -- Attendre la cession
  SCHEDULER -- Récursion

SCHEDULE_MANAGER = 
  schedule?pid → -- Attendre l'événement de planification
  rqenqueue!pid → -- Placer le processus dans la file d'exécution
  SCHEDULE_MANAGER -- Récursion

3. Modélisation des Métadonnées de Processus

Chaque processus nécessite un moniteur, un drapeau d'exécution et un drapeau de prêt :

PROCESS(p) = 
  VARIABLE(ready.p, true)
  ||| VARIABLE(running.p, false)
  ||| MONITOR(claim_process.p, release_process.p)

4. Modélisation des Canaux Partagés

  • Canaux Many-to-One : Plusieurs processus d'écriture, un processus de lecture
  • Canaux One-to-Many : Un processus d'écriture, plusieurs processus de lecture
  • Canaux Many-to-Many : Plusieurs processus d'écriture, plusieurs processus de lecture

Points d'Innovation Technique

1. Méthode de Vérification Considérant l'Environnement de Planification

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.

2. Vérification de Raffinement sous Contraintes de Ressources

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.

3. Traduction Bidirectionnelle de l'Implémentation à la Spécification

  • Code ProcessJ → Code Java → Modèle CSP
  • Établit une chaîne de traduction complète, assurant la fiabilité des résultats de vérification

Configuration Expérimentale

Outils de Vérification

  • FDR (Failures-Divergences Refinement) : Outil de vérification de raffinement CSP
  • CSPM : Version lisible par machine de CSP

Modèles de Vérification

Trois modèles sémantiques sont utilisés pour l'analyse :

  1. Modèle Traces : Basé sur le comportement observable externe
  2. Modèle Stable Failures : Traite les événements que le processus peut refuser
  3. Modèle Failures-Divergences : Traite les scénarios de blocage potentiels

Configurations de Test

  • Configurations de processus : Diverses combinaisons de 1-2 processus d'écriture et 1-3 processus de lecture
  • Nombre de planificateurs : 1 à 4 planificateurs
  • Types de canaux : Canaux partagés un-à-plusieurs, plusieurs-à-un, plusieurs-à-plusieurs

Résultats Expérimentaux

Résultats Principaux

| Type de Canal | Configuration de Processus | Nombre Total de Processus | Nombre de Planificateurs ||||| |---------------|----------------------------|--------------------------|--|--|--|--| | | | | 1| 2| 3| 4| | Un-à-Plusieurs| 1 écr-2 lec | 3 | T| T| F| F| | Un-à-Plusieurs| 1 écr-3 lec | 4 | T| T| T| F| | Plusieurs-à-Un| 2 écr-1 lec | 3 | T| T| F| F| | Plusieurs-à-Un| 3 écr-1 lec | 4 | T| T| T| F| | Plusieurs-à-Plusieurs| 2 écr-2 lec | 4 | T| T| T| F|

Explication des Symboles :

  • T = Passage de la vérification de raffinement traces
  • F = Passage de la vérification de raffinement failures
  • ✗ = Échec de la vérification de raffinement

Découvertes Clés

  1. 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.
  2. 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
  3. 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.

Travaux Connexes

Domaine de la Vérification Formelle

  • 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

Recherche sur la Planification Coopérative

  • Planificateur occam-π : Le planificateur ProcessJ est similaire au planificateur coopératif multiprocesseur d'occam-π
  • Modèles async/await : Le multitâche coopératif devient de plus en plus populaire en JavaScript, Python, C++ et Rust

Avantages de Cet Article

  1. Première Considération de l'Environnement de Planification : Modélise explicitement le planificateur coopératif dans la vérification
  2. 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
  3. Vérification Consciente des Ressources : Quantifie la relation entre les besoins en ressources et la correction

Conclusions et Discussion

Conclusions Principales

  1. Correction de l'Implémentation : L'implémentation des canaux partagés de ProcessJ est correcte avec un nombre suffisant de planificateurs.
  2. 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.
  3. 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.

Limitations

  1. Utilisation de Verrous : L'implémentation actuelle utilise largement les verrous/moniteurs, ce qui peut affecter la concurrence et les performances.
  2. Exigences en Planificateurs : La nécessité d'un nombre de planificateurs égal au nombre de processus peut être irréaliste dans les applications pratiques.
  3. Complexité de la Vérification : L'espace d'états de la vérification croît rapidement avec l'augmentation du nombre de processus.

Directions Futures

  1. Implémentations Sans Verrous :
    • Utiliser des variables atomiques à la place des verrous
    • Implémenter des structures de file d'attente sans attente
    • Développer des modèles CSP supportant les opérations de comparaison-échange
  2. Simplification des Spécifications :
    • Développer des méthodes légères de construction de modèles CSP
    • Étudier le comportement de ProcessJ sous différentes conditions de planification
  3. Optimisation des Planificateurs :
    • Investiguer si le raffinement failures peut être réalisé avec moins de planificateurs que de processus
    • Analyser les exigences en planificateurs pour différents programmes

Évaluation Approfondie

Points Forts

  1. Innovativité de la Méthode :
    • Première prise en compte de l'environnement de planification coopérative dans la vérification formelle
    • Établit une chaîne de vérification complète de l'implémentation à la spécification
  2. Contributions Théoriques :
    • Fournit une preuve algébrique rigoureuse de la spécification des canaux partagés
    • Quantifie la relation entre les besoins en ressources et la correction
  3. Valeur Pratique :
    • Vérifie la correction d'un système d'exécution réel
    • Fournit une méthode de vérification pour d'autres systèmes à planification coopérative
  4. Suffisance Expérimentale :
    • Teste plusieurs configurations de canaux et nombres de planificateurs
    • Utilise des méthodes de vérification rigoureuses CSP/FDR

Insuffisances

  1. Problèmes d'Extensibilité :
    • La complexité de la vérification croît exponentiellement avec le nombre de processus
    • La nécessité d'un grand nombre de planificateurs peut limiter les applications pratiques
  2. Considérations de Performance Insuffisantes :
    • L'utilisation extensive de verrous peut affecter les performances du système
    • Discussion insuffisante des frais généraux de vérification
  3. Limitations de l'Applicabilité :
    • Principalement orienté vers le langage ProcessJ
    • L'applicabilité à d'autres systèmes à planification coopérative nécessite une vérification supplémentaire

Impact

  1. Contribution Académique :
    • Fournit une nouvelle perspective de vérification pour les domaines des langages de programmation et des méthodes formelles
    • Promeut le développement de méthodes de vérification considérant l'environnement d'exécution
  2. Valeur Pratique :
    • Améliore la fiabilité de l'environnement d'exécution de ProcessJ
    • Fournit une référence pour la vérification des environnements d'exécution d'autres langages
  3. Reproductibilité :
    • Fournit le code CSP complet et les scripts de test
    • Les processus et résultats de vérification peuvent être reproduits indépendamment

Scénarios Applicables

  1. 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
  2. Systèmes à Planification Coopérative : Peut être appliqué à d'autres systèmes concurrents utilisant la planification coopérative
  3. Développement de Systèmes Critiques : Applicable au développement de systèmes concurrents avec des exigences extrêmes de correction

Références Bibliographiques

Cet article cite 51 références pertinentes, incluant principalement :

  1. Théorie Fondamentale de CSP : Travaux classiques de Hoare sur CSP et théories connexes
  2. Outils de Vérification Formelle : Outil FDR et méthodes de vérification connexes
  3. Langages de Programmation Concurrents : Recherches connexes sur JCSP, occam-π, Go, Erlang et autres langages
  4. Algorithmes de Planification : Travaux connexes sur les algorithmes d'exclusion mutuelle et les algorithmes concurrents
  5. 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.