持有信号量的代码可以被抢占是什么意思

时间:2018-11-02 22:04:50

标签: linux operating-system synchronization semaphore spinlock

我正在阅读《罗伯特爱情书》,对这句话有些困惑。可以抢占代码持有信号的含义是什么?

如果在执行关键部分中的代码时在访问用户空间应用程序时访问该用户空间应用程序所具有的相同变量而发生中断,那么可以抢占该用户空间应用程序?

如果我的上述理解是正确的,那么每当用户空间应用程序处于关键区域时,除了自旋锁之外没有其他方法可以禁用中断吗?

那么在OS上下文中信号量有什么用?当用户应用程序位于关键区域时,随时可能发生中断,为了避免中断干预,我们需要一直使用自旋锁。

1 个答案:

答案 0 :(得分:1)

可以抢占代码持有信号的含义是什么?
这意味着可以抢占当前在其关键部分运行的具有某些锁定目的的同步进程。理想情况下,中断应具有最高的 优先级,因此除非您在该处理器内核上禁用中断,否则运行的进程 可以被抢占,并且可能在该过程处于关键部分时发生。

虽然有多个spin_lock_XXX API来禁用中断,但是您可能要使用 spin_lock_irqsave ,因为它将中断标志保存在该内核上并在释放锁定时将其恢复。