当我们只将加载和存储指令作为原子操作时,Test和Set操作如何满足互斥?



Test和Set指令的原子操作

1。加载锁,寄存器2.存储#1,锁

所以现在如果一个进程P1来了,它将锁变量的值设置为1,并且被抢占了,现在当其他进程来的时候,它们也将锁变量的值设置为1,那么现在它如何保证哪个进程将进入临界区呢?

,因为后面的指令都是

3。CMP登记,# 04.JNZ step1

所以现在当P1来比较器的输出将是假的,这意味着P1也将在忙等待,我有点困惑,请澄清一下。我已经浏览了其他相关的帖子,但我没有得到它。

将值从0更改为1的进程将0视为"旧值"并将继续。

当另一个进程出现时,它们将获得1作为"旧值",并将循环直到它变为0。

最新更新