The communication graph of a process is a graph that indicates which processes
communicate with which other processes. Thus, it is a graph in which the
vertices are subprocesses of the top-level process, and in which there is an
edge between any two processes if they can both perform some event. For example,
if Dining Philosophers is loaded, then typing :communication_graph
SYSTEM
into the prompt
would
show the following window:
In the graph, there is a vertex for each PHIL
process and a vertex for each
FORK
process. Further, there is a edge between each PHIL
and its
neighbouring FORK
processes, since they can both perform pickup
and
putsdown
events.
Clicking on a node in the graph will change the contents of the right-hand pane.
For example, selecting PHIL(0)
will change the contents of the right-hand
pane to the following:
This indicates the name of the process that is selected, along with the processes’ alphabet (i.e. the set of events it can actually perform). Further, the pane also displays communication partners, which are the other processes with which the process communicates, along with the set of events upon which they synchronise.
The Show Global Events option on the bottom right can be used to toggle
whether or not a global event is considered in the communication graph. A
global event is defined as any event that more than 90% of the processes
participate in, and common examples are events such as tock
. If this box is
left unchecked, then such events will be elided, which will often result in a
reduction in the number of edges in the graph.