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

Linux 持有信号量的代码可以被抢占是什么意思,linux,operating-system,synchronization,semaphore,spinlock,Linux,Operating System,Synchronization,Semaphore,Spinlock,我正在翻阅罗伯特的爱情书,对这句话有点困惑。持有信号量的代码可以被抢占是什么意思 如果在用户空间应用程序执行关键部分中的代码时,访问用户空间应用程序具有的相同变量时发生中断,那么用户空间应用程序是否可以被抢占 若我的上述理解是正确的,那个么当用户空间应用程序处于临界区时,除了自旋锁之外,并没有其他选择可以禁用中断 那么,在操作系统的上下文中,信号量的用途是什么呢?当用户应用程序处于关键部分时,中断可能随时发生,为了避免中断干预,我们需要始终使用旋转锁。代码保持信号量可以被抢占是什么意思? 这意味

我正在翻阅罗伯特的爱情书,对这句话有点困惑。持有信号量的代码可以被抢占是什么意思

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

若我的上述理解是正确的,那个么当用户空间应用程序处于临界区时,除了自旋锁之外,并没有其他选择可以禁用中断


那么,在操作系统的上下文中,信号量的用途是什么呢?当用户应用程序处于关键部分时,中断可能随时发生,为了避免中断干预,我们需要始终使用旋转锁。

代码保持信号量可以被抢占是什么意思?
这意味着,当前正在其关键部分运行的进程,为了同步而持有一些锁,可以被抢占。理想情况下,中断具有最高的性能 优先级,因此除非禁用该处理器内核上的中断,否则正在运行的进程 可以被抢占,并且在流程处于关键阶段时可能会发生这种情况

虽然有多个spin\u lock\u XXX API用于禁用中断,但您可能希望使用
自旋锁irqsave保存该内核上的中断标志,并在释放锁时恢复它们。

您的问题是我们不知道上下文。什么样的信号灯?内核可以实现一个信号量,这样持有它的进程就不能被抢占。或者可以实现一个信号量,使持有它的进程不能被抢占。是的,但根据我的理解,我们不能实现一个在中断发生时不能被抢占的信号量?你可以阻止抢占,作为获取信号量的一部分。这不正常,但可以做到。