resource helper(id, nap_time : int) write("helper", id, "is alive, nap_time=", nap_time) process help var napping : int do true -> napping := int(random(1000*nap_time)) writes("age=", age(), ", helper ", id, " is napping for ", napping, "ms\n") nap(napping) od end help end helper resource user() import helper var num_helpers : int := 5, nap_time : int := 3, run_time : int := 60 getarg(1, num_helpers); getarg(2, nap_time); getarg(3, run_time) write("resource user starting,", num_helpers, "helpers,", nap_time, "napping time,", run_time, "running time") var machine_name : string[64] # added code starts HERE ##### var machine_cap[1:num_helpers] : cap vm fa i := 1 to num_helpers -> getarg(3+i, machine_name) machine_cap[i] := create vm() on machine_name if machine_cap[i] = null -> write("Cannot create vm on", machine_name, "so aborting"); stop fi write("Virtual machine starting up on machine", machine_name) af # added code ends HERE except ... fa i := 1 to num_helpers -> create helper(i, nap_time) on machine_cap[i] # ... for this line HERE af nap(1000*run_time); write("must stop now"); stop end user /* ............... Example compile and run(s) % sr -o multiple_machines multiple_machines.sr % ./multiple_machines 3 2 10 violet lily rose resource user starting, 3 helpers, 2 napping time, 10 running time Virtual machine starting up on machine violet Virtual machine starting up on machine lily Virtual machine starting up on machine rose helper 1 is alive, nap_time= 2 helper 2 is alive, nap_time= 2 helper 3 is alive, nap_time= 2 age=210, helper 3 is napping for 1995ms age=4010, helper 1 is napping for 1029ms age=1710, helper 2 is napping for 1938ms age=5040, helper 1 is napping for 181ms age=5260, helper 1 is napping for 1503ms age=3650, helper 2 is napping for 940ms age=2210, helper 3 is napping for 1614ms age=6880, helper 1 is napping for 1776ms age=4590, helper 2 is napping for 396ms age=4990, helper 2 is napping for 1523ms age=3830, helper 3 is napping for 1431ms age=8750, helper 1 is napping for 78ms age=8830, helper 1 is napping for 865ms age=6520, helper 2 is napping for 1514ms age=5270, helper 3 is napping for 1854ms age=9710, helper 1 is napping for 1178ms age=8040, helper 2 is napping for 431ms age=8480, helper 2 is napping for 1002ms age=10950, helper 1 is napping for 1581ms age=7130, helper 3 is napping for 1279ms age=9490, helper 2 is napping for 358ms age=9850, helper 2 is napping for 1079ms age=8410, helper 3 is napping for 1522ms age=12540, helper 1 is napping for 119ms age=12660, helper 1 is napping for 1899ms age=10930, helper 2 is napping for 238ms age=11170, helper 2 is napping for 483ms age=9940, helper 3 is napping for 1017ms age=11660, helper 2 is napping for 1924ms must stop now % ./multiple_machines 3 2 10 king queen tweedle resource user starting, 3 helpers, 2 napping time, 10 running time Virtual machine starting up on machine king Virtual machine starting up on machine queen Cannot create vm on tweedle so aborting */