Test和Set指令的原子操作
1。加载锁,寄存器2.存储#1,锁
所以现在如果一个进程P1来了,它将锁变量的值设置为1,并且被抢占了,现在当其他进程来的时候,它们也将锁变量的值设置为1,那么现在它如何保证哪个进程将进入临界区呢?
,因为后面的指令都是
3。CMP登记,# 04.JNZ step1
所以现在当P1来比较器的输出将是假的,这意味着P1也将在忙等待,我有点困惑,请澄清一下。我已经浏览了其他相关的帖子,但我没有得到它。
将值从0更改为1的进程将0视为"旧值"并将继续。
当另一个进程出现时,它们将获得1作为"旧值",并将循环直到它变为0。