Question: Two global int variables, x and y , are initialized to 1 0 and 0 . Two threads execute the following statements ( in mixed

Two global int variables, x and y, are initialized to 10 and 0.Two threads execute the following statements (in mixed syntax):
Thread 1: while (x != y){ x = x -1; y = y +1; }
Thread 2: await (x == y); atomic { x =8; y =2; }
Like in Promela, each assignment is an atomic action. Write a Promela model that captures the behavior of this system and
1. Use Spin to check if both threads always terminate, and to show what the final values of x and y can be.
2. Explain what happens if the two assignments in Thread 2 are not done atomically, and confirm your explanation using Spin.
Note: There may (or may not) be two or more final values.
Hint: Suppose you think that the possible final values are (x1, y1) and (x2, y2). Then you need to verify three things:
1.(x1, y1) is a possible outcome.
2.(x2, y2) is a possible outcome.
3. Any pair of values other than (x1, y1) and (x2, y2) are not possible.

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!