我正在阅读“操作系统概念”中的信号量(对于那些知道它的人),我以为我完全理解了信号量,直到我读到这段话:
信号量的关键方面是它们是原子执行的。我们必须保证没有两个进程可以同时对同一个信号量执行等待和信号操作。
并且:
如果硬件不提供任何特殊的原子指令,我们可以使用任何软件解决临界区问题,其中临界区由等待和信号过程组成。
这段话是指面对Signal
和Wait
操作必须是原子的。我认为信号量的全部目的是在任何给定时间只让一个进程进入关键部分 - 如果我必须使用另一种算法(如面包店算法),为什么我还需要信号量?
我意识到我的问题可能令人困惑。如果是,那只是因为主题对我来说还很模糊,所以即使问一个问题也有点困难。
很想阅读任何澄清...