----------------------------------------------------------- Mohamed G. Gouda CS 356 Fall 2005 Solution to Midterm 1 ----------------------------------------------------------- 1. process p[i:0..2] inp N : set{j | j is i +3 1 or i +3 2} var ready : 0..2 {initially,2} par j : N begin ready = 2 -> send rqst to p[i +3 1]; send rqst to p[i +3 2]; ready := 0 [] rcv rply from p[j] -> ready := ready + 1 [] rcv rqst from p[j] -> send rply to p[j] end ----------------------------------------------------------- 2. G : (st=1 v st=3) ^ (#ch.u[i].c + ch.c.u[i] = 0) S : if st=1 -> send rqst to c [] st=3 -> send rls to c fi S' : if usr=i -> avail := true; [] usr!=i -> skip fi; send ack to u[i] -----------------------------------------------------------