首页 > 试题广场 >

两个操作完成后,x 的值( )。

[单选题]

有两个并发执行的进程P1 和 P2,共享初值为 1 的变量 x。 P1 对 x 加 1, P2 对 x 减 1。加 1 和减 1 操作的指令序列分别如下所示。
//加 1 操作                                           //减 1 操作

load R1,x①//取 x 到寄存器 R1 中       load R2,x④
inc R1 ②                                             dec R2 ⑤
store x,R1 ③//将 R1 的内容存入 x     store x,R2 ⑥
两个操作完成后,x 的值( )。

  • 可能为-1 或 3
  • 只能为 1
  • 可能为 0、 1 或 2
  • 可能为-1、 0、 1 或2
正常步骤    ①②③④⑤⑥   依次执行  就是 1;
产生 0,2 的原因是:③还未执行,P2就取数,导致P2取到的是1
P1执行后 x为2,P2执行后x为0
然后就看 两个放回操作谁后执行 ③后执行 x为2,  ⑥ 后执行 x为0
发表于 2022-04-09 15:34:32 回复(0)
①②③④⑤⑥  x的值为:1
①④同时进行,R1=2,R2=0,如果先③后⑥ 则x的值为:0
                                                 如果先⑥后③则x的值为:2
发表于 2017-03-02 16:08:30 回复(0)