Der Begriff "echte Parallelität" taucht in der theoretischen Untersuchung der gleichzeitigen und parallelen Berechnung auf. Dies steht im Gegensatz zur Verschachtelung von Parallelität. Echte Parallelität ist Parallelität, die nicht auf Interleaving reduziert werden kann. Parallelität ist verschachtelt, wenn bei jedem Berechnungsschritt nur eine atomare Rechenaktion (z. B. ein Nachrichtenaustausch zwischen Sender und Empfänger) stattfinden kann. Parallelität ist wahr, wenn mehr als eine solche atomare Aktion in einem Schritt stattfindet.
Die einfachste Möglichkeit, beide zu unterscheiden, besteht darin, die Regel für die parallele Komposition zu betrachten. In einer Interleaving-basierten Umgebung würde dies ungefähr so aussehen:
P→P′P|Q→P′|Q
Diese Regel erzwingt, dass nur ein Prozess in einer parallelen Komposition eine atomare Aktion ausführen kann. Für eine echte Parallelität wäre eine Regel wie die folgende geeigneter.
P→P′Q→Q′P|Q→P′|Q′
Mit dieser Regel können beide Teilnehmer einer parallelen Komposition atomare Aktionen ausführen.
Warum sollte man sich für verschachtelte Parallelität interessieren, wenn die Parallelitätstheorie eigentlich die Untersuchung von Systemen ist, die Rechenschritte parallel ausführen? Die Antwort ist, und das ist eine großartige Einsicht, dass bei einfachen Formen der Nachrichtenübermittlung die echte Nebenläufigkeit und die Interleaving-basierte Nebenläufigkeit nicht kontextabhängig voneinander unterscheidbar sind. Mit anderen Worten verhält sich verschachtelte Nebenläufigkeit so weit wie Beobachter sehen können wie echte Nebenläufigkeit. Interleaving ist eine gute Zerlegung der tatsächlichen Nebenläufigkeit. Da Interleaving in Proofs einfacher zu handhaben ist, wird häufig nur die einfachere Interleaving-basierte Parallelität (z. B. CCS undπ-Calculi). Diese Einfachheit verschwindet jedoch bei gleichzeitiger Berechnung mit umfangreicheren Beobachtungsformen (z. B. zeitgesteuerte Berechnung): Der Unterschied zwischen wahrer Nebenläufigkeit und verschachtelter Nebenläufigkeit wird beobachtbar.
Standardäquivalenzen wie Bisimulationen und Traces haben die gleichen Definitionen für echte und Interleaving-basierte Parallelität. Sie können jedoch je nach dem zugrunde liegenden Kalkül unterschiedliche Prozesse gleichsetzen oder auch nicht.
Lassen Sie mich informell erklären, warum Interleaving und wirklich gleichzeitige Interaktion in einfachen Prozesskalkülen nicht zu unterscheiden sind. Die Einstellung ist ein CCS- oder ähnlicher Kalkül. Sagen wir, wir haben ein Programmπ
P=x¯¯¯ | y¯¯¯ | x.y.a¯¯¯ | y.b¯¯
Dann haben wir die folgende wirklich gleichzeitige Reduktion:
Dieser Reduktionsschritt kann durch die folgenden verschachtelten Schritte verglichen werden:
Der einzige Unterschied zwischen beiden ist, dass der erstere einen Schritt macht, während der letztere zwei. Einfache Kalküle können jedoch nicht die Anzahl der Schritte erkennen, die zum Erreichen eines Prozesses erforderlich sind.
P→y.a¯¯¯ | b¯¯
P→→x¯¯¯ | x.y.a¯¯¯ | b¯¯y.a¯¯¯ | b¯¯
Gleichzeitig hat die folgende zweite verschachtelte Reduktionssequenz:
Dies ist jedoch auch eine Reduktionssequenz in einer wirklich gleichzeitigen Einstellung, solange keine echte Parallelität erzwungen wird (d. h verschachtelte Ausführungen sind zulässig, auch wenn mehr als eine Interaktion gleichzeitig möglich ist.P
P→→y¯¯¯ | y.a¯¯¯ | y.b¯¯a¯¯¯ | y.b¯¯