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

Process 使用2个信号量的严格N进程同步,process,synchronization,operating-system,semaphore,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

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

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)-waitn
S(n)-信号n
4W1表示“等待4次”
wait1和signal1与信号量1一起工作,依此类推

算法说明:

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
  • 每个进程通道都启动
  • 第一个进程将运行,其他进程将执行signal1()
  • 除第一个进程外,其他每个进程都将等待信号量0(doing wait0)
  • 在process1等待4个信号量1之后,它发送4个信号量0,因为其他进程等待第一个信号量成功完成,所以创建了一个屏障 问题是我不知道如何使用2个信号量使其工作


    PS:这不是一个作业,这是一个困扰我太久的问题。

    这不能用两个信号灯来完成。3是最小值。

    作为参考,如果五个进程必须按特定顺序运行,而其余进程在前面的进程完成之前无法继续,则实际上有一个进程伪装为五个。理想的解决方案包括一个进程和零信号量。是的,实际上这就是解决方案。当一个人可以只创建一个进程并执行5个已经由程序代码序列化的任务时,为什么有人需要使用共享内存(信号量等)序列化N个同时启动的进程。但是在这里,你没有主进程,你不能伪装它。