以下程序中有两个并发进程,且假设这两个并发进程可以任何相对速度执行,变量amount的值只有被单独的机器指令装入寄存器后才能被增值。 BEGIN amount:integer; amount:=0; COBEGIN

admin2019-07-18  23

问题 以下程序中有两个并发进程,且假设这两个并发进程可以任何相对速度执行,变量amount的值只有被单独的机器指令装入寄存器后才能被增值。
    BEGIN
    amount:integer;
    amount:=0;
    COBEGIN
    process Pl
    nl:integer;
    BEGIN
    for n1:=1 to 10 do amount:=amount+2;
    END;
    process P2
    n1:integer;
    BEGIN
    for n1:=1 to 10 do amount:=amount+3;
    END;
    COEND
    write(amount);
    END;
    以上程序输出的共享变量amount的上下界为(    )。

选项 A、[20,30]
B、[O,20]
C、[20,50]
D、[30,50]

答案C

解析 当进程P1和P2按顺序执行,即在执行过程中不发生进程切换时,amount可以达到最大值50。现在考虑如下情况:每次当进程P1执行完一个amount+2,但还没来得及更新amount的值时,发生了进程切换,切换到进程P2,进程P2也执行完一个amount+3,这时,amount的值更新发生在P1中,最后amount的值为20。
转载请注明原文地址:https://kaotiyun.com/show/CxCi777K
0

相关试题推荐
最新回复(0)