Download The application of a resource logic to the non

Transcript
41
(TRYT
Te )
τ
m, h / Jg[]K −→ m, h / JK
(NBLOCKT )
(PUT1B )
(COMPTe )
putB
m, h / JputB(hard, 1); . . .K −→ m, h, hard / Jhold(1); . . .K
====================================================== (PAR33 )
putB
m, h / JKkJkputB(hard, 1); . . .K −→ m, h, hard / JKkJkhold(1); . . .K
m, h / JputB(hard, 1)K −→ m, h, hard / JK
putB
(WHILET
Te )
τ
m, h / JJ K −→ m, h / JK K
===========================
= (PAR31 )
τ =========================
m, h / JJkJkputB(hard, 1); . . .K −→ m, h / JKkJkputB(hard, 1); . . .K
The Worker process releases a hard job.
D4 :
Another Jobber’s while-loop is expanded.
(TRACE)
τ
m, h / Jtrace(’Easy’)K −→ m, h / JK
=======================================τ========================== (PCOMP13 )
m, h / Jtrace(’Easy’); JkJkputB(hard, 1); . . .K −→ m, h / JJkJkputB(hard, 1); . . .K
We now execute the trace command — it performs no visible resource action, so it is silent.
m, h, easy / Jtry [getB(easy, 1)] then trace(’Easy’) etry [. . .] then . . .K −→ m, h / Jtrace(’Easy’)K
==================================================================================== (PCOMP13 )
getB
m, h, easy / JKkJkputB(hard, 1); . . .K −→ m, h / Jtrace(’Easy’); JkJkputB(hard, 1); . . .K
getB
================================== (NBLOCK1B )
getB
m, h, easy / Jg[getB(easy, 1)]K −→ m, h / JK
The Jobber process with its while loop expanded is now in a position to start a job. The only type of job that it is able to get is an easy
one.