Go backward to Designing the Server Go up to Top Go forward to System Model |
Server(server, client, count, wait) :<=>
exists i in [1,C]:
or
receivei(server, request) /\ count >
0 /\
sendi(client, grant) /\ count' =
count-1 /\
changed(server, client, count)
receivei(server, request) /\ count > 0 /\
wait' = wait[i |-> true] /\
changed(server, wait)
receivei(server, release)
/\ exists j in [1,C]: (wait[j] /\
sendj(client, grant) /\ wait' = wait[j |-> true]) /\
changed(server, client, wait)
receivei(server, release) /\ exists j in [1,C]: wait[j] /\
count' = count+1 /\
changed(server, count)
a server action
receive request and return grant
receive request and defer reply
receive release and send deferred grant
receive release and increase counter
Result of a systematic design.