有两个并发进程如下面所示,对于这段程序的运行,正确的说法是( )。    PARBEGIN    var x:integer;    process P1 process P2   

admin2021-08-17  39

问题 有两个并发进程如下面所示,对于这段程序的运行,正确的说法是(    )。
      PARBEGIN
      var x:integer;
      process P1                         process P2
      var y,z:integer;                var t,u:integer;
      BEGIN                              BEGIN
         x:=1;    x:===0;
         y=0;    t:一0;
         if X>=1 then y:=y+1;         if x<一1 then t:===t+2;
         z:=y;                         u:=t;
     END                                END
     PAREND

选项 A、程序能正确运行,结果唯一
B、程序不能正确运行,可能有两种结果
C、程序不能正确运行,结果不确定
D、程序不能正确运行,可能会死锁

答案C

解析 本题考查进程的并发执行。本题中两个进程不能正确地工作,运行结果有多种可能性,请见下面说明。
  1)    x:=1;                     5)    x:=0;
  2)    y:=0;                     6)    t:=0;
  3)    if x>=1 then y:=y+1;     7)    if x<=1 then t:=t+2;
  4)    z:=y;                     8)    u:=t;
    不确定的原因是由于使用了公共的变量x,考察程序中与x变量有关的语句共四处,若执行顺序是1)→2)→3)→4)→5)→6)→7)→8)时,结果是y=1,z=1,t=2,u=2,x=0;当并发执行过程为1)→2)→5)→6)→3)→4)→7)→8)时,结果是y一0,z=0,t=2,u=2,x=0;
    若执行顺序是5)→6)→7)→8)→1)→2)→3)→4)时,结果是y=1,z=1,t=2,u=2,x=1:
    当并发执行过程为5)→6)→1)→2)→7)→8)→3)→4)时,结果是y=,z=1,t=0,u=0,x=1。可见结果有多种可能性。
转载请注明原文地址:https://kaotiyun.com/show/zJ3i777K
0

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