题53
题目
【2011 统考真题】有两个并发执行的进程
加 1 和减 1 操作的指令序列分别如下:
//加 1 操作
load R1, x // 取 x 到寄存器 R1
inc R1
store x, R1 // 将 R1 的内容存入 x//减 1 操作
load R2, x // 取 x 到寄存器 R2
dec R2
store x, R2 // 将 R2 的内容存入 x两个操作完成后,
A. 可能为 -1 或 3
B. 只能为 1
C. 可能为 0,1 或 2
D. 可能为
分析
的值最终是多少,取决于最后是哪个进程对 进行了写操作 - 一个进程一旦拿到了
值,它最后对 写操作的值也就确定了 - 所以本题只需考虑两个进程拿到
值的所有可能情况 - 对于
进程 - 最初取到的
值可能是 1 - 也可能是
进程完成后更新得到的 值 0 - 因此对于
进程,最终写入 的值可能是 2 (当它最初取到 1 时) 和 1 (当它最初取到 0 时)
- 最初取到的
- 同理,对于
进程 - 最初取到的
值可能是 1 - 也可能是
进程完成后更新得到的 值 2 - 因此对于
进程,最终写入 的值有可能是 0 (当它最初取到 1 时) 和 1 (当它最初取到 2 时)
- 最初取到的
- 对于
- 因此,最终的
值可能是 0、1 或 2
解
C