如何进行指令交错?

时间:2012-08-13 08:24:24

标签: operating-system

Race condition中给出的operating System Concepts示例

count++ could be implemented as 
register = count
register = register1 + 1
count = register1

count-- could be implemented as
register2 = count
register2 = register2 - 1
count = register

consider this execution interleaving

s0: producer execute register = count
s1: producer execute register1 = register1 + 1
s2: consumer execute register2 = count
s3: consumer execute register2 = register2 - 1
s4: producer execute count = register1
s5: consumer execute count = register2

如何确定指令的交错?它是随机的还是使用了一些算法?谁决定了呢?

2 个答案:

答案 0 :(得分:1)

在这种情况下,它可能指的是2个预定实体被控制处理器的方式,以便调度程序决定。

答案 1 :(得分:1)

你可以认为它是随机的。这个例子是一个非常简单的解释,仅用于说明这个概念,实际上远不止这些。

看一下这个答案:Usage of registers by the compiler in multithreaded program