0

对于这种情况:进程 B 将等待进程 A 释放旋转,所以 preemt OK ??? Process A: -->spin lock --> do strict call --> before unlock time int Time int ISR: --> Process A time slice finished --> need schedule -->ISR ret --> schedule to Process B Process B: -->spin lock for same resource --> failed --> spin wait

4

1 回答 1

2

在您提供的情况下,进程 B忙于等待其切片结束并重新安排到进程A。因此,整个时间片将是浪费时间

如果从未发生从流程 B切换到流程 A的情况,情况可能会更糟。例如,如果进程 B的优先级多于进程 A之一。在这种情况下,它是死锁

禁用抢占spin_lock可以防止上述时间浪费和死锁。

于 2017-02-28T07:20:28.280 回答