Linux内核中单处理器上的信号量

时间:2017-02-14 09:23:16

标签: linux-kernel synchronization semaphore

我试着理解linux内核中的同步是如何工作的。 我读过信号量可以用于例外,但我找不到一个情况的例子,需要信号量。 那么为什么在单处理器系统中使用信号量呢?

1 个答案:

答案 0 :(得分:0)

我假设您一般都对锁定感兴趣,而不是反对互斥锁的信号量(另请参阅" Counting和Binary Semaphores之间的区别" [1])。我不会详细解释锁定问题,只需指出几点。

  1. 通常认为您可能编写的代码可以在多处理器系统上执行(目前,单处理器越来越少)。我假设是因为你明确提到了你理解这种情况的单处理器。

  2. Linux内核可以在运行内核代码时完全抢占[2] [3]。在这种情况下,线程可以在几乎任何点被中断和恢复,包括例如在向设备写入I / O的过程中。如果编写I / O的线程被中断而另一个访问同一设备的线程可能无法正常工作。

  3. [1] Differnce between Counting and Binary Semaphores

    [2] https://kernelnewbies.org/FAQ/Preemption

    [3] https://rt.wiki.kernel.org/index.php/CONFIG_PREEMPT_RT_Patch