Answered step by step
Verified Expert Solution
Question
1 Approved Answer
We want to design an asynchronous process Split that is the dual of Merge (Textbook Fig. 4.3, page 129). The process Split has one input
We want to design an asynchronous process Split that is the dual of Merge (Textbook Fig. 4.3, page 129). The process Split has one input channel in and two output channels out1 and out2. The messages received on the input channel should be routed to one of the output channels in a nondeterministic manner so that all possible splittings of the input stream are feasible executions. Describe all the components of the desired process Split.
Asynchronous Model 129 queue(msg) X1 := null; x2 := null msg ini A: - Full(xi) + Enqueue ini, X1) AZ: - Full(x2) + Enqueue in2, x2) msg out msg in A: - Empty(x1) out := Dequeue(x1) A?: - Empty(x2) out := Dequeue(x2) Figure 4.3: Asynchronous Process Merge The internal computation of a process is described using internal actions. Such actions neither process inputs nor produce outputs but update internal state and are described using internal tasks. An internal task A has a Boolean guard condition Guard that describes the states in which the task is enabled and an update description Update that specifies how the task updates the state variables based on their old values. Given a state s, we evaluate the guard Guard to check whether the task is ready to be executed and, if so, execute the update description Update to compute the new values for the state variables leading to a state t. Thus, the task specifies the set of internal actions set such that s [Guard) and (s, t) [Update]. The label e indicates that there is no observable communication during an internal action. Asynchronous Model 129 queue(msg) X1 := null; x2 := null msg ini A: - Full(xi) + Enqueue ini, X1) AZ: - Full(x2) + Enqueue in2, x2) msg out msg in A: - Empty(x1) out := Dequeue(x1) A?: - Empty(x2) out := Dequeue(x2) Figure 4.3: Asynchronous Process Merge The internal computation of a process is described using internal actions. Such actions neither process inputs nor produce outputs but update internal state and are described using internal tasks. An internal task A has a Boolean guard condition Guard that describes the states in which the task is enabled and an update description Update that specifies how the task updates the state variables based on their old values. Given a state s, we evaluate the guard Guard to check whether the task is ready to be executed and, if so, execute the update description Update to compute the new values for the state variables leading to a state t. Thus, the task specifies the set of internal actions set such that s [Guard) and (s, t) [Update]. The label e indicates that there is no observable communication during an internal actionStep by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started