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.