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
Überprüfung der Korrektheit gemeinsamer Kanäle in einer kooperativ geplanten prozessorientierten Sprache
Dieses Papier analysiert das Verhalten gemeinsamer Kommunikationskanäle in kooperativ geplanten Laufzeitumgebungen. Die Forschung nutzt das formale Verifikationswerkzeug FDR zur Entwicklung von Spezifikationen für gemeinsame Kanalverhalten und Modellen der Kanalimplementierung in der Sprache ProcessJ. Die Ergebnisse zeigen, dass zwar korrektes Kanalverhalten implementiert werden kann, die Ergebnisse jedoch von ausreichenden Ressourcen zur Ausführung aller relevanten Prozesse abhängen. Die Forschung kommt zu dem Ergebnis, dass die Modellierung der Laufzeitumgebung von nebenläufigen Komponenten notwendig ist, um sicherzustellen, dass Komponenten in der realen Welt gemäß Spezifikation verhalten.
Bedeutung der Korrektheit nebenläufiger Software: Das korrekte Verhalten nebenläufiger Systeme ist entscheidend für das Verständnis, wie Komponenten unter bestimmten Bedingungen ausgeführt werden. Traditionelle Testmethoden werden zwar häufig verwendet, können aber möglicherweise nicht alle potenziellen Nebenläufigkeitsfehler aufdecken.
Notwendigkeit formaler Verifikation: Die Autoren illustrieren mit dem Beispiel von Mars-Rover-Software, dass ein einfacher Deadlock-Fehler möglicherweise 8 Millionen Sekunden (über 90 Tage) warten muss, um mit 50%iger Wahrscheinlichkeit durch Tests entdeckt zu werden, während formale Verifikation mit CSP und FDR solche Fehler sofort aufdecken kann.
Herausforderungen bei der Verifikation von Laufzeitsystemen: Da viele Programme auf Laufzeitsystemen von Programmiersprachen aufgebaut sind, wird es entscheidend, sicherzustellen, dass Laufzeitsysteme fehlerfrei sind und sich gemäß Spezifikation verhalten.
Ignorieren der Ausführungsumgebung: Traditionelle auf Kanalsystemen basierende Verifikationsmethoden modellieren nicht das Laufzeitsystem, Ausführungssystem, Hardware usw. und gehen davon aus, dass bereite Ereignisse verfügbar bleiben, bis sie geplant werden.
Annahme von Ressourcenüberfluss: Standardmodellierungsmethoden gehen davon aus, dass Ereignisse sofort auftreten können, was bedeutet, dass Ressourcen bei der Ausführung eines Ereignisses verfügbar sind. Diese extreme Annahme trifft in der Realität jedoch nicht zu.
Auswirkungen der Planungsumgebung: Prozesse müssen am Ende der Warteschlange warten, um geplant zu werden, und ihre Ereignisse sind nicht sofort verfügbar. Traditionelle Methoden berücksichtigen dies jedoch nicht.
ProcessJ ist eine prozessorientierte Programmiersprache mit CSP-Semantik, die kooperative Planung nutzt und auf der JVM läuft. Dieses Papier zielt darauf ab, die Korrektheit der Implementierung gemeinsamer Kanäle in der ProcessJ-Laufzeit zu überprüfen, mit besonderem Fokus auf die Auswirkungen der Planungsumgebung auf das Kanalverhalten.
Überprüfung der Korrektheit der ProcessJ-Implementierung gemeinsamer Kanäle: Nachweis, dass die ProcessJ-Implementierung gemeinsamer Kanäle mit dem vorhandenen kooperativen Planer korrekt ist, durch CSP-Übersetzung und Verfeinerungsprüfung mit einem universellen Modell gemeinsamer Kanäle.
Entwicklung eines erweiterten algebraischen Beweises für die Spezifikation gemeinsamer Kanäle: Bereitstellung eines formalen Beweises, dass die Spezifikation gemeinsamer Kanäle sich tatsächlich als CSP-Kanäle verhält.
Weiterer Nachweis der Beziehung zwischen Ressourcen und aktiven Prozessen: Erneute Demonstration der Beziehung zwischen verfügbaren Ressourcen und der Anzahl aktiver Prozesse zur Erfüllung der Spezifikation. Der Nachweis zeigt, dass die Anzahl der verfügbaren Planer gleich oder größer als die Anzahl der Prozesse im System sein muss, um Verfeinerung in beide Richtungen zwischen Spezifikation und Modell zu erreichen.
Die Kernaufgabe dieses Papiers ist die Überprüfung der Korrektheit der Implementierung gemeinsamer Kanäle in der Sprache ProcessJ. Dies umfasst speziell:
Eingabe: Java-Implementierungscode gemeinsamer ProcessJ-Kanäle und CSP-Spezifikation
Ausgabe: Verifikationsergebnisse, die nachweisen, ob die Implementierung der Spezifikation entspricht
Einschränkungen: Berücksichtigung von Ressourcenbeschränkungen in der kooperativ geplanten Umgebung
Im Gegensatz zu traditionellen Methoden modelliert dieses Papier den kooperativen Planer während des Verifikationsprozesses explizit, was es ermöglicht, Probleme zu entdecken, die nur unter bestimmten Planungsbedingungen auftreten.
Durch Variation der Planerzahl wurde untersucht, wie sich das Systemverhalten unter verschiedenen Ressourcenkonfigurationen ändert, und es wurde die Beziehung zwischen Ressourcenausreichendheit und Korrektheit entdeckt.
Ressourcenausreichendheitssatz: Wenn die Planerzahl gleich oder größer als die Gesamtzahl der Prozesse ist, kann Verfeinerung in beide Richtungen im Failures-Modell erreicht werden.
Auswirkungen unzureichender Ressourcen:
Bei unzureichenden Planern kann nur Traces-Verfeinerung erreicht werden, nicht Failures-Verfeinerung
Dies bedeutet nicht, dass das System deadlockt, sondern dass bestimmte Traces nicht mehr realisierbar sind
Auswirkungen der Planungswarteschlange: Die Laufwarteschlange erzeugt eine natürliche Ordnung für Prozesse. Wenn Planer unzureichend sind, sind die Akzeptanzmengen bestimmter Prozesse nicht in der Gesamtakzeptanzmenge des Systems enthalten.
Implementierungskorrektheit: Die Implementierung gemeinsamer Kanäle in ProcessJ ist mit ausreichenden Planern korrekt.
Ressourcenabhängigkeit: Korrektes Verhalten hängt davon ab, dass ausreichende Planungsressourcen zur Ausführung aller relevanten Prozesse verfügbar sind.
Notwendigkeit der Modellierung: Die Modellierung der Laufzeitumgebung ist notwendig, um sicherzustellen, dass Komponenten in der realen Welt gemäß Spezifikation verhalten.
Dieses Papier zitiert 51 verwandte Arbeiten, hauptsächlich einschließlich:
CSP-Grundlagentheorie: Klassische CSP-Werke von Hoare und verwandte Theorie
Formale Verifikationswerkzeuge: FDR-Werkzeug und verwandte Verifikationsmethoden
Nebenläufige Programmiersprachen: Verwandte Forschung zu JCSP, occam-π, Go, Erlang und anderen Sprachen
Planungsalgorithmen: Verwandte Arbeiten zu gegenseitigen Ausschlussalgorithmen und nebenläufigen Algorithmen
Frühere Arbeiten der Autoren: Reihe von Forschungsarbeiten zur Verifikation der ProcessJ-Laufzeit
Zusammenfassung: Dieses Papier leistet einen wichtigen Beitrag im Bereich der formalen Verifikation, insbesondere bei der Verifikation nebenläufiger Systeme unter Berücksichtigung der Ausführungsumgebung. Obwohl es einige Einschränkungen gibt, haben seine Methoden und Erkenntnisse wichtigen Wert für die Verbesserung der Zuverlässigkeit nebenläufiger Systeme.