严格的N进程同步使用2个信号量

时间:2011-11-25 07:49:43

标签: process synchronization operating-system semaphore

几年前,我参加了一次操作系统研讨会。我的任务是使用尽可能少的信号量为进程同步创建算法。应该看起来像这样:

P1 - > P2 - > P3 - > P4 - > P5

P(n) - 过程

一次只运行一个流程,严格排序

去年我使用3个信号量来解决问题(有效地创建了一个屏障)。 这是我的算法:

P   S1  S1  S1  S1
4W1 W0  W0  W0  W0
4S0 P   S2  S2  S2
    3W2 W1  W1  W1
    3S1 P   S1  S1
        2W1 W0  W0
        2S0 P   S2
            W2  W1
            S1  P

(执行从上到下,每个通道都是一个进程) P - 需要连续化的实际工作
W(n) - 等待 S(n) - 信号
4W1表示“做4等待” wait1和signal1以semaphore1运行,依此类推......

算法说明:

  1. 每个流程路径启动
  2. 第一个进程将运行,其他进程将执行signal1()
  3. 除第一个之外的所有其他进程都将等待semaphore0(正在执行wait0)
  4. 在process1等待4个信号量1后,它发送4个信号0,创建一个屏障,因为其他进程等待第一个成功完成。
  5. 问题是我无法弄清楚如何使用2个信号量使其工作。

    PS:这不是一项任务,这是一个长期困扰我的问题。

1 个答案:

答案 0 :(得分:0)

使用2个信号量无法完成。 3是最低限度。