Das Kommunizieren folgender Prozesse

In der Informatik sind Communicating Sequential Processes (CSP) eine formelle Sprache, um Muster der Wechselwirkung in gleichzeitigen Systemen zu beschreiben. Es ist ein Mitglied der Familie von mathematischen Theorien der Parallelität, die als Prozess-Algebra oder Prozess-Rechnungen bekannt ist. CSP war im Design der occam Programmiersprache hoch einflussreich, und hat auch das Design von Programmiersprachen wie Vorhölle beeinflusst, und Gehen.

CSP wurde zuerst in einem 1978-Vortrag von C. A. R. Hoare beschrieben, aber hat sich wesentlich seitdem entwickelt. CSP ist in der Industrie als ein Werkzeug praktisch angewandt worden, um die gleichzeitigen Aspekte einer Vielfalt von verschiedenen Systemen, wie der T9000 Transputer, sowie ein sicheres ecommerce System anzugeben und nachzuprüfen. Die Theorie von CSP selbst ist auch noch das Thema der aktiven Forschung einschließlich der Arbeit, um seine Reihe der praktischen Anwendbarkeit zu vergrößern (z.B, die Skala der Systeme vergrößernd, die lenksam analysiert werden können).

Geschichte

Die Version von in der ursprünglichen 1978-Zeitung von Hoare präsentiertem CSP war im Wesentlichen eine gleichzeitige Programmiersprache aber nicht eine Prozess-Rechnung. Es hatte eine wesentlich verschiedene Syntax als spätere Versionen von CSP, hat mathematisch definierte Semantik nicht besessen und war unfähig, unbegrenzten Nichtdeterminismus zu vertreten. Programme im ursprünglichen CSP wurden als eine parallele Zusammensetzung einer festgelegten Zahl von folgenden Prozessen geschrieben, die mit einander ausschließlich durch den gleichzeitigen Nachrichtenübergang kommunizieren. Im Gegensatz zu späteren Versionen von CSP wurde jeder Prozess ein ausführlicher Name zugeteilt, und die Quelle oder der Bestimmungsort einer Nachricht wurden definiert, indem sie den Namen des beabsichtigten Sendens oder Empfangs des Prozesses angegeben haben. Zum Beispiel der Prozess

KOPIEREN SIE = * [c:character; Westen? c  Osten! c]

wiederholt erhält einen Charakter vom Prozess genannt, und sendet dann diesen Charakter, um genannt in einer Prozession zu gehen. Die parallele Zusammensetzung

[Westen:: NEHMEN SIE || X AUSEINANDER:: KOPIEREN SIE || Osten:: VERSAMMELN SIE SICH]

teilt die Namen zum Prozess, zum Prozess, und zum Prozess zu, und führt diese drei Prozesse gleichzeitig durch.

Im Anschluss an die Veröffentlichung der ursprünglichen Version von CSP haben Hoare, Stephen Brookes und A. W. Roscoe entwickelt und haben die Theorie von CSP in sein modernes raffiniert, bearbeiten Sie algebraische Form. Die Annäherung, die im Entwickeln von CSP in eine Prozess-Algebra genommen ist, war unter Einfluss der Arbeit von Robin Milner an der Rechnung von Kommunizierenden Systemen (CCS), und umgekehrt. Die theoretische Version von CSP wurde in einem 1984-Artikel von Brookes, Hoare und Roscoe, und später im Buch von Hoare am Anfang präsentiert, das Folgende Prozesse Mitteilt, der 1985 veröffentlicht wurde. Im September 2006 war dieses Buch noch die dritte am meisten zitierte Informatik-Verweisung aller Zeiten gemäß Citeseer (obgleich eine unzuverlässige Quelle wegen der Natur seiner Stichprobenerhebung). Die Theorie von CSP hat einige geringe Änderungen seit der Veröffentlichung des Buches von Hoare erlebt. Die meisten dieser Änderungen wurden durch das Advent von automatisierten Werkzeugen für die CSP-Prozess-Analyse und Überprüfung motiviert. Roscoe Die Theorie und Praxis der Parallelität beschreibt diese neuere Version von CSP.

Anwendungen

Eine frühe und wichtige Anwendung von CSP war sein Gebrauch für die Spezifizierung und Überprüfung von Elementen des INMOS T9000 Transputer, ein komplizierter Superskalar pipelined Verarbeiter hat vorgehabt, groß angelegte Mehrverarbeitung zu unterstützen. CSP wurde im Überprüfen der Genauigkeit sowohl der Verarbeiter-Rohrleitung als auch des Virtuellen Kanalverarbeiters verwendet, der Kommunikationen außer Span für den Verarbeiter geführt hat.

Die Industrieanwendung von CSP zum Softwaredesign hat sich gewöhnlich auf zuverlässige und sicherheitskritische Systeme konzentriert. Zum Beispiel hat das Bremener Institut für Sichere Systeme und Daimler-Benz Aerospace ein Schuld-Verwaltungssystem und Avionik-Schnittstelle modelliert (aus ungefähr 23,000 Linien des Codes bestehend), beabsichtigt für den Gebrauch auf der Internationalen Raumstation in CSP, und hat das Modell analysiert, um zu bestätigen, dass ihr Design frei vom toten Punkt und livelock war. Der Modellieren- und Analyse-Prozess ist im Stande gewesen, mehrere Fehler aufzudecken, die schwierig gewesen wären, Verwenden-Prüfung allein zu entdecken. Ähnlich hat Praxis High Integrity Systems das CSP-Modellieren und die Analyse während der Entwicklung der Software (etwa 100,000 Linien des Codes) für eine sichere Zertifikat-Autorität der klugen Karte angewandt nachzuprüfen, dass ihr Design sicher war und frei vom toten Punkt. Praxis behauptet, dass das System eine viel niedrigere Defekt-Rate hat als vergleichbare Systeme.

Da CSP zum Modellieren und Analysieren von Systemen gut passend ist, die komplizierten Nachrichtenaustausch vereinigen, ist es auch auf die Überprüfung von Kommunikationen und Sicherheitsprotokollen angewandt worden. Ein prominentes Beispiel dieser Sorte der Anwendung ist der Gebrauch von Lowe von CSP und dem FDR Verbesserungskontrolleur, um einen vorher unbekannten Angriff auf das Beglaubigungsprotokoll des öffentlichen Schlüssels von Needham-Schroeder zu entdecken, und dann ein korrigiertes Protokoll zu entwickeln, das fähig ist, den Angriff zu vereiteln.

Informelle Beschreibung

Wie sein Name darauf hinweist, erlaubt CSP die Beschreibung von Systemen in Bezug auf Teilprozesse, die unabhängig funktionieren, und mit einander allein durch die nachrichtenpassierende Kommunikation aufeinander wirken. Jedoch ist der "Folgende" Teil des CSP-Namens jetzt etwas einer falschen Bezeichnung, da moderner CSP Teilprozessen erlaubt, sowohl als folgende Prozesse, als auch als die parallele Zusammensetzung von primitiveren Prozessen definiert zu werden. Die Beziehungen zwischen verschiedenen Prozessen und die Weise, wie jeder Prozess mit seiner Umgebung kommuniziert, werden mit dem verschiedenen Prozess algebraische Maschinenbediener beschrieben. Mit dieser algebraischen Annäherung können ziemlich komplizierte Prozess-Beschreibungen von einigen primitiven Elementen leicht gebaut werden.

Primitive

CSP stellt zwei Klassen von Primitiven in seiner Prozess-Algebra zur Verfügung:

Ereignisse

:Events vertreten Kommunikationen oder Wechselwirkungen. Wie man annimmt, sind sie unteilbar und sofortig. Sie können Atomnamen (z.B auf, von), zusammengesetzte Namen (z.B valve.open, valve.close), oder Ereignisse des Eingangs/Produktion sein (z.B Maus? xy, Schirm! bitmap).

Primitive Prozesse:

:Primitive-Prozesse vertreten grundsätzliche Handlungsweisen: Beispiele schließen HALT ein (der Prozess, der nichts, auch genannt toten Punkt mitteilt), und HÜPFEN SIE (der erfolgreiche Beendigung vertritt).

Algebraische Maschinenbediener

CSP hat eine breite Reihe von algebraischen Maschinenbedienern. Die hauptsächlichen sind:

Präfix

:The-Präfix-Maschinenbediener verbindet ein Ereignis und einen Prozess, um einen neuen Prozess zu erzeugen. Zum Beispiel,

::

:is der Prozess, der bereit ist, mit seiner Umgebung, und danach zu kommunizieren, benimmt sich wie der Prozess.

Deterministische Wahl

:The deterministisch (oder äußerlich) auserlesener Maschinenbediener erlaubt der zukünftigen Evolution eines Prozesses, als eine Wahl zwischen zwei Teilprozessen definiert zu werden, und erlaubt der Umgebung, die Wahl aufzulösen, indem er ein anfängliches Ereignis für einen der Prozesse mitteilt. Zum Beispiel,

::

:is der Prozess, der bereit ist, die anfänglichen Ereignisse mitzuteilen, und, und sich nachher entweder als benimmt, oder abhängig von dem anfänglichem Ereignis die Umgebung beschließt zu kommunizieren. Wenn beide und gleichzeitig mitgeteilt würden, würde die Wahl nondeterministically aufgelöst.

Nichtdeterministische Wahl

:The nichtdeterministisch (oder inner) auserlesener Maschinenbediener erlaubt der zukünftigen Evolution eines Prozesses, als eine Wahl zwischen zwei Teilprozessen definiert zu werden, aber erlaubt der Umgebung keine Kontrolle, über die der Teilprozesse ausgewählt wird. Zum Beispiel,

::

:can benehmen sich entweder wie oder wie. Es kann sich weigern zu akzeptieren oder, und ist nur verpflichtet zu kommunizieren, wenn die Umgebung beiden anbietet und. Nichtdeterminismus kann in eine nominell deterministische Wahl unachtsam eingeführt werden, wenn die anfänglichen Ereignisse von beiden Seiten der Wahl identisch sind. Also, zum Beispiel,

::

Zu gleichwertiger:is

::

Das Durchschießen

:The-Durchschießen-Maschinenbediener vertritt völlig unabhängige gleichzeitige Tätigkeit. Der Prozess

::

:behaves als beide und gleichzeitig. Die Ereignisse von beiden Prozessen werden rechtzeitig willkürlich durchgeschossen.

Schnittstelle-Parallele

:The-Schnittstelle-Parallele-Maschinenbediener vertritt gleichzeitige Tätigkeit, die Synchronisation zwischen den Teilprozessen verlangt - kann jedes Ereignis im Schnittstelle-Satz nur vorkommen, wenn alle Teilprozesse im Stande sind, sich mit diesem Ereignis zu beschäftigen. Zum Beispiel, der Prozess

::

:requires das und muss beide im Stande sein, Ereignis vor diesem Ereignis durchzuführen, kann vorkommen. Also, zum Beispiel, der Prozess

::

:can beschäftigen sich mit dem Ereignis, und werden der Prozess

::

:while

::

:will fahren sich einfach fest.

Das Verbergen

:The-Verbergen-Maschinenbediener stellt eine Weise zur Verfügung, Prozesse zu abstrahieren, indem er einige Ereignisse unbeobachtbar macht. Ein triviales Beispiel des Verbergens ist

::

:which, annehmend, dass das Ereignis darin nicht erscheint, nimmt einfach zu ab

::

Beispiele

Eines der archetypischen CSP Beispiele ist eine abstrakte Darstellung eines schokoladenbraunen Automaten und seine Wechselwirkungen mit einer Person, die möchte etwas Schokolade kaufen. Dieser Automat könnte im Stande sein, zwei verschiedene Ereignisse, "Münze" und "Schokolade" auszuführen, die die Einfügung der Zahlung und die Übergabe einer Schokolade beziehungsweise vertreten. Eine Maschine, die Zahlung vor dem Angebot einer Schokolade fordert, kann als geschrieben werden:

:

Eine Person, die beschließen könnte, eine Münze oder Karte zu verwenden, um Zahlungen zu machen, konnte als modelliert werden:

:

Diese zwei Prozesse können in der Parallele gestellt werden, so dass sie mit einander aufeinander wirken können. Das Verhalten des zerlegbaren Prozesses hängt von den Ereignissen ab, auf denen die zwei Teilprozesse gleichzeitig sein müssen. So,

:

wohingegen, wenn Synchronisation nur auf "der Münze" erforderlich war, wir erhalten würden

:

Wenn wir diesen letzten zerlegbaren Prozess abstrahieren, indem wir die "Münz-" und "Karte"-Ereignisse verbergen, d. h.

:

wir bekommen den nichtdeterministischen Prozess

:

Das ist ein Prozess, der entweder ein "Schokolade"-Ereignis anbietet und dann anhält, oder gerade anhält. Mit anderen Worten, wenn wir die Abstraktion als eine Außenansicht vom System behandeln (z.B, jemand, der die Entscheidung nicht sieht, die von der Person gekommen ist), ist Nichtdeterminismus eingeführt worden.

Formelle Definition

Syntax

Die Syntax von CSP definiert die "gesetzlichen" Wege, auf die Prozesse und Ereignisse verbunden werden können. Lassen Sie, ein Ereignis zu sein, und eine Reihe von Ereignissen zu sein. Dann kann die grundlegende Syntax von CSP als definiert werden:

:

\begin {Matrix-}\

Proc &:: = & \textit {HALT} & \; \\

&|& \textit {HOPSER} & \; \\

&|& e \rightarrow \textit {Proc} & (\textit {vorbefestigend}) \\

&|& \textit {Proc} \; \Box \; \textit {Proc} & (\textit {äußerlich} \; \textit {Wahl}) \\

&|& \textit {Proc} \; \sqcap \; \textit {Proc} & (\textit {nichtdeterministisch} \; \textit {Wahl}) \\

&|& \textit {Proc} \; \vert\vert\vert \; \textit {Proc} & (\textit {durchschießend}) \\

&|& \textit {Proc} \; | [\{X \}] | \; \textit {Proc} & (\textit {Schnittstelle} \; \textit {Parallele}) \\

&|& \textit {Proc} \setminus X & (\textit {sich verbergend}) \\

&|& \textit {Proc}; \textit {Proc} & (\textit {folgend} \; \textit {Zusammensetzung}) \\

&|& \mathrm {wenn} \; b \; \mathrm {dann} \; \textit {Proc }\\; \mathrm {sonst }\\; Proc & (\textit {boolean} \; \textit {bedingt}) \\

&|& \textit {Proc} \; \triangleright \; \textit {Proc} & (\textit {Pause}) \\

&|& \textit {Proc} \; \triangle \; \textit {Proc} & (\textit {Unterbrechung})

\end {Matrix-}\

</Mathematik>

Bemerken Sie, dass, in den Interessen der Kürze, die Syntax, die oben präsentiert ist, den Prozess weglässt, der Abschweifung, sowie verschiedene Maschinenbediener wie alphabetisierte Parallele, Rohrleitung und mit einem Inhaltsverzeichnis versehene Wahlen vertritt.

Formelle Semantik

CSP ist mit mehrerer verschiedener formeller Semantik erfüllt worden, die die Bedeutung CSP syntaktisch richtiger Ausdrücke definieren. Die Theorie von CSP schließt gegenseitig konsequente denotational Semantik, algebraische Semantik und betriebliche Semantik ein.

Semantik von Denotational

Die drei denotational Hauptmodelle von CSP sind das Spur-Modell, das stabile Misserfolg-Modell und das Modell der Misserfolge/Abschweifungen. Semantische mappings von Prozess-Ausdrücken bis jedes dieser drei Modelle stellen die denotational Semantik für CSP zur Verfügung.

Das Spur-Modell definiert die Bedeutung eines Prozess-Ausdrucks als der Satz von Folgen von Ereignissen (Spuren), die, wie man beobachten kann, der Prozess durchführt. Zum Beispiel,

:* seitdem führt keine Ereignisse durch

:* da, wie man beobachten kann, der Prozess keine Ereignisse, das Ereignis oder die Folge von von gefolgten Ereignissen durchgeführt hat

Mehr formell wird die Bedeutung eines Prozesses im Spur-Modell als solch dass definiert:

  1. (d. h. enthält die leere Folge)
  1. (d. h. wird Präfix-geschlossen)

wo der Satz aller möglichen begrenzten Folgen von Ereignissen ist.

Das stabile Misserfolg-Modell erweitert das Spur-Modell mit Verweigerungssätzen, die Sätze von Ereignissen sind, die sich ein Prozess weigern kann durchzuführen. Ein Misserfolg ist ein Paar, aus einer Spur und einem Verweigerungssatz bestehend, der die Ereignisse identifiziert, die ein Prozess ablehnen kann, sobald es die Spur durchgeführt hat. Das beobachtete Verhalten eines Prozesses im stabilen Misserfolg-Modell wird vom Paar beschrieben. Zum Beispiel,

:*

:*

\left (\langle ein \rangle, \left\{a, b\right\}\\Recht), \left (\langle b \rangle, \left\{a, b\right\}\\Recht) \right\} </Mathematik>

Das Modell der Misserfolge/Abschweifung erweitert weiter das Misserfolg-Modell, um Abschweifung zu behandeln. Die Semantik eines Prozesses im Modell der Misserfolge/Abschweifungen ist ein Paar, wo als der Satz aller Spuren definiert wird, die zu auseinander gehendem Verhalten führen können und.

Werkzeuge

Im Laufe der Jahre haben mehrere Werkzeuge, um Systeme zu analysieren und zu verstehen, das Verwenden beschrieben CSP sind erzeugt worden. Frühe Werkzeug-Durchführungen haben eine Vielfalt von maschinenlesbaren Syntaxen für CSP verwendet, Eingangsdateien geschrieben für verschiedene unvereinbare Werkzeuge machend. Jedoch haben die meisten CSP Werkzeuge jetzt im maschinenlesbaren Dialekt von CSP standardisiert, der von Bryan Scattergood manchmal ausgedacht ist, der auf als CSP verwiesen ist. Der CSP Dialekt von CSP besitzt eine formell definierte betriebliche Semantik, die eine eingebettete funktionelle Programmiersprache einschließt.

Das wohl bekannteste CSP Werkzeug ist wahrscheinlich Verbesserung der Misserfolge/Abschweifung 2 (FDR2), der ein kommerzielles Produkt ist, das durch Formelle Systeme (Europa) Ltd entwickelt ist. FDR2 wird häufig als ein Musterkontrolleur beschrieben, aber ist technisch ein Verbesserungskontrolleur, in dem er zwei CSP-Prozess-Ausdrücke in Etikettierte Übergang-Systeme (LTSs) umwandelt, und dann bestimmt, ob einer der Prozesse eine Verbesserung von anderem innerhalb von einem angegebenen semantischen Modell (Spuren, Misserfolge oder Misserfolge/Abschweifung) ist. FDR2 wendet verschiedene Zustandraumkompressionsalgorithmen auf den Prozess LTSs an, um die Größe des Zustandraums zu reduzieren, der während einer Verbesserungskontrolle erforscht werden muss.

Adelaide Refinement Checker (ARC) ist ein CSP Verbesserungskontrolleur, der von Formal Modelling and Verification Group an Der Universität von Adelaide entwickelt ist. KREISBOGEN unterscheidet sich von FDR2, in dem er innerlich CSP-Prozesse als Bestellte Binäre Entscheidungsdiagramme (OBDDs) vertritt, der das Zustandexplosionsproblem von ausführlichen LEUTNANT-Darstellungen erleichtert, ohne den Gebrauch von Zustandraumkompressionsalgorithmen wie diejenigen zu verlangen, die in FDR2 verwendet sind.

Das Projekt von ProB, das durch Institut für Informatik, Heinrich-Heine-Universität Düsseldorf veranstaltet wird, wurde ursprünglich geschaffen, um Analyse von in der B Methode gebauten Spezifizierungen zu unterstützen. Jedoch schließt es auch Unterstützung für die Analyse von CSP-Prozessen sowohl durch die Verbesserungsüberprüfung als auch durch LTL Musterüberprüfung ein. ProB kann auch verwendet werden, um Eigenschaften von vereinigtem CSP und B Spezifizierungen nachzuprüfen.

Process Analysis Toolkit (PAT)

ist ein CSP Analyse-Werkzeug, das in der Schule der Computerwissenschaft auf die Nationale Universität Singapurs entwickelt ist. RICHTIG ist im Stande, Verbesserungsüberprüfung, LTL Musterüberprüfung, und Simulation von CSP und Zeitlich festgelegte CSP-Prozesse durchzuführen. Die KLAPS-Prozess-Sprache erweitert CSP mit der Unterstützung für veränderliche geteilte Variablen, asynchronen Nachrichtenübergang und eine Vielfalt der Schönheit und quantitative Zeit verwandten Prozess-Konstruktionen solcher als und. Der zu Grunde liegende Designgrundsatz der KLAPS-Prozess-Sprache soll eine Spezifizierungssprache auf höchster Ebene mit Verfahrensprogrammen verbinden (z.B ein Ereignis im RICHTIGEN kann ein folgendes Programm oder sogar ein äußerlicher C# Bibliotheksanruf sein) für das größere Ausdrucksvolle. Veränderliche geteilte Variablen und asynchrone Kanäle stellen einen günstigen syntaktischen Zucker für wohl bekannte in normalem CSP verwendete Prozess-Modellieren-Muster zur Verfügung. Die KLAPS-Syntax ist ähnlich, aber zu CSP nicht identisch. Die Hauptunterschiede zwischen der KLAPS-Syntax und normalem CSP sind der Gebrauch von Strichpunkten, um Prozess-Ausdrücke, die Einschließung von syntaktischem Zucker für Variablen und Anweisungen und den Gebrauch der ein bisschen verschiedenen Syntax für die innere Wahl und parallele Zusammensetzung zu begrenzen.

CSPsim ist ein fauler Simulator. Es modelliert Kontrolle CSP nicht, aber ist nützlich, um sehr große (potenziell unendliche) Systeme zu erforschen.

Zusammenhängende Formalismen

Mehrere andere Spezifizierungssprachen und Formalismen sind abgeleitet, oder durch, der Klassiker zeitlich unfestgelegter CSP begeistert worden, einschließlich:

  • Zeitlich festgelegter CSP, der Timing-Information vereinigt, um über Echtzeitsysteme vernünftig zu urteilen
  • Empfängliche Prozess-Theorie, eine Spezialisierung von CSP, der einen asynchronen annimmt (d. h. nichtblockierend) senden Operation
  • CSPP
  • HCSP
  • Wright, eine Architektur-Beschreibungssprache
  • TCOZ, eine Integration von Zeitlich festgelegtem CSP und Gegenstand Z
  • Zirkus, eine Integration von CSP und Z, der auf den Vereinheitlichen-Theorien gestützt ist, Zu programmieren
  • CspCASL, eine Erweiterung von CASL, der CSP integriert
  • LOTOS, ein internationaler Standard, der die besten Eigenschaften von CSP und CCS vereinigt.

Vergleich mit dem Schauspieler-Modell

In so viel, wie es mit gleichzeitigen Prozessen beschäftigt ist, die Nachrichten austauschen, ist das Schauspieler-Modell CSP weit gehend ähnlich. Jedoch machen die zwei Modelle einige im Wesentlichen verschiedene Wahlen hinsichtlich der Primitiven, die sie zur Verfügung stellen:

  • CSP Prozesse sind anonym, während Schauspieler Identität haben.
  • CSP Nachrichtenübergang ist im Wesentlichen mit einem Rendezvous zwischen den Prozessen verbunden, die am Senden und Empfang der Nachricht beteiligt sind, d. h. der Absender kann keine Nachricht übersenden, bis der Empfänger bereit ist, es zu akzeptieren. Im Gegensatz ist der Nachrichtenübergang in Schauspieler-Systemen im Wesentlichen asynchron, d. h. Nachrichtenübertragung und Empfang müssen in derselben Zeit nicht geschehen, und Absender können Nachrichten übersenden, bevor Empfänger bereit sind, sie zu akzeptieren. Diese Annäherungen können als duals von einander im Sinn betrachtet werden, dass Rendezvous-basierte Systeme verwendet werden können, um gepufferte Kommunikationen zu bauen, die sich als asynchrone Nachrichtenübermittlungssysteme benehmen, während asynchrone Systeme verwendet werden können, um mit dem Rendezvous artige Kommunikationen durch das Verwenden eines Protokolls der Nachricht/Anerkennung zu bauen, um Absender und Empfänger zu synchronisieren.
  • CSP verwendet ausführliche Kanäle für den Nachrichtenübergang, wohingegen Schauspieler-Systeme Nachrichten an genannte Bestimmungsort-Schauspieler übersenden. Diese Annäherungen können auch als duals von einander im Sinn betrachtet werden, dass der Prozess-Empfang durch einen einzelnen Kanal effektiv eine Identität entsprechend diesem Kanal hat, während die namenbasierte Kopplung zwischen Schauspielern durch das Konstruieren von Schauspielern gebrochen werden kann, die sich als Kanäle benehmen.

Siehe auch

  • occam war die erste Sprache, die ein CSP Modell durchführt.
  • Lassen Sie nach Programmiersprache - verbindet die Prozess-Konstruktionen von CSP mit logisch geteilten Datenstrukturen.
  • JCSP ist ein Mischen von CSP & occam Konzepten in einer javanischen Faden-Unterstützungs-API.
  • XC ist eine Sprache, die durch XMOS entwickelt ist, der schwer unter Einfluss CSP und occam war
  • Vorhölle ist eine Sprache, die Parallelität innerhalb des Infernos Betriebssystem in einem durch CSP begeisterten Stil durchführt.
  • Plan 9 von Glockenlaboratorien und Plan 9 vom Benutzerraum schließen die libthread Bibliothek ein, die den Gebrauch eines CSP-inspirierten Parallelitätsmodells von C erlaubt.
  • VerilogCSP ist eine Reihe von Makros, die zu Verilog HDL hinzugefügt ist, um Kommunizierende Folgende Prozess-Kanalkommunikationen zu unterstützen.
  • SystemVerilogCSP ist ein Paket für SystemVerilog, der abstrakte CSP ähnliche Nachrichtenhandlungen in SystemVerilog ermöglicht.
  • Verfolgen Sie monoid und Geschichte monoid, dessen mathematischer Formalismus CSP ein Beispiel ist.
  • Spur-Theorie, die allgemeine Theorie von Spuren.
  • Gehen Sie ist eine Programmiersprache durch Google, der Ideen von CSP vereinigt.
  • Joyce ist eine Programmiersprache, die auf den Grundsätzen von CSP gestützt ist, der von Brinch Hansen 1989 entwickelt ist.
  • Superpascal ist eine Programmiersprache, die auch von Brinch Hansen, unter Einfluss CSP und seiner früheren Arbeit mit Joyce entwickelt ist.
  • Ada führt Eigenschaften von CSP wie das Rendezvous durch.
  • Erlang verwendet ein auf CSP lose gestütztes Parallelitätsmodell.
  • DirectShow ist das Videofachwerk innerhalb von DirectX, es verwendet die CSP Konzepte, um das Audio und die Videofilter durchzuführen.

Weiterführende Literatur

  • Dieses Buch ist von Jim Davies an der Universität Oxford aktualisiert worden Rechenlaboratorium und die neue Ausgabe sind für das Download als eine PDF Datei beim Verwenden CSP Website verfügbar.
  • Einige Verbindungen in Zusammenhang mit diesem Buch sind hier verfügbar. Der volle Text ist für das Download als PS oder PDF Datei von der Liste von Bill Roscoe von akademischen Veröffentlichungen verfügbar.

Links

Allgemein

Analyse-Werkzeuge

  • Formal Systems Europe, Ltd. entwickelt CSP Werkzeuge, von denen einige frei herunterladbar sind.
  • KREISBOGEN, der Kontrolleur von Adelaide Refinement, ist ein CSP Überprüfungswerkzeug.
  • ProB ist ein Zeichner von Trickfilmen und Musterkontrolleur für die B Methode, sondern auch Unterstützungsverbesserungsüberprüfung und LTL Musterüberprüfung von CSP.
  • RICHTIG ist ein Musterkontrolleur, Simulator und Verbesserungskontrolleur für CSP und verschiedene Erweiterungen von CSP (z.B geteilte Variablen, Reihe, Schönheit).

Durchführungsunterstützung

  • CTJ ist eine javanische Durchführung von CSP damit vernetzen Unterstützung/verteilen.
  • C ++ ist CSP eine Durchführung von CSP/occam/JCSP Ideen in C ++, ähnlich im Stil zu JCSP.
  • Jibu (vorher bekannt als CSP.NET) ist eine Durchführung einer CSP Stil-Bibliothek für Microsoft.NET.
  • CSP ++ ist ein Softwaresynthese-Werkzeug, um Spezifizierungen geschrieben im CSPM rechtskräftig über C ++ zu machen.
  • csp ist eine Allgemeine Lispeln-Bibliothek, die Gebrauch eines CSP-inspirierten Parallelitätsmodells von SBCL und anderen Allgemeinen Mehrgewindelispeln-Durchführungen erlaubt.
  • CHP ist eine Bibliothek von Haskell, die ein durch CSP begeistertes Parallelitätsmodell zeigt.
  • PyCSP ist eine Pythonschlange-Durchführung von CSP damit vernetzen Unterstützung/verteilen.
  • jCSP ist (100 % rein) javanische Klassenbibliothek, die eine Grundreihe von CSP Primitiven plus ein reicher Satz von Erweiterungen zur Verfügung stellt.
  • Reagenz ist eine reine Durchführung von Ruby von CSP Primitiven.

Carduelis / HKS (Gesellschaft)
Impressum & Datenschutz