2011 操作系统 进程和线程 选择题
第 32 题

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

P1 // 加 1 操作
load R1, x // 取 x 到寄存器 R1 中
inc R1
store x, R1 // 将 R1 的内容存入 x
P2 // 减 1 操作
load R2, x // 取 x 到寄存器 R2 中
dec R2
store x, R2 // 将 R2 的内容存入 x

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

进程和线程

A. 可能为 -1 或 3

B. 只能为 1

C. 可能为 0、1 或 2

D. 可能为 -1、0、1 或 2

[tag_link]

正确答案:C

将P1中 3 条语句依次编号为 1,2,3;P2中 3 条语句依次编号为 4,5,6。依次执行 1,2,3,4,5,6 得结果 1,依次执行 1,2,4,5,6,3 得结果 2,执行 4,5,1,2,3,6 得结果 0。因此结果 -1 不可能得出。