This homework is due at 11:00 AM if submitted by email, or you can turn it in on paper in class at 11:30
When should a process migrate?
Suppose you are building an environment supporting process migration for compute-bound processes. Your environment will automatically and transparently pick up a process and move it whenever it decides that it's likely that it will finish faster when it's on some other processor.
Here are some assumptions about your environment:
Now, then:
Suppose you had a system using distributed shared memory, with the following characteristics:
X and it doesn't already have access to
X, it will request read-access from
X's home).
Suppose variables w, x,
y, and z
are initially homed on processors P0, P1, P2, and P3
respectively. Also, assume nobody has any accessto any of
them before you start.
Now, suppose the processors execute the following code snippets, in the order shown below:
| Processor | Code |
|---|---|
| P1 | x = 1; |
| P1 | y = 1; |
| P4 | z = x + y; |
| P0 | w = x + y + z; |
(15 points) The following are two 16 bit messages followed by 3 bit CRCs calculated using x3 + x2 + 1. The messages read left to right (so the most significant bit is on the left like Ian used in his talk, not like the paper). One of the messages was corrupted in transit; one wasn't. Which is which?