strict N process synchronization using 2 semaphores

老子叫甜甜 提交于 2019-12-23 03:58:07

问题


a few years ago I had an Operating Systems seminar. I had been tasked to create an algorithm for process synchronization using as few semaphores as possible. It should have looked like this:

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

P(n) - process

Only one process running at a time and strict ordering was needed.

Last year I came with solution using 3 semaphores (effectively creating a barrier). Here is my algorithm:

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

(execution is from top to bottom, each lane is a single process) P - real work which needs to be done serialized
W(n) - waitn
S(n) - signaln
4W1 means "do 4 wait1s"
wait1 and signal1 operates with semaphore1 and so on...

Explanation of algorithm:

  1. Every process lane starts
  2. first process will run and others will do signal1()
  3. every other process except the first one will wait for semaphore0 (doing wait0)
  4. after process1 waits for 4 semaphores1 it sends 4 signals0, creating a barrier because other processes waits for first one to successfully complete.

The problem is I can't figure out how to make it work using 2 semaphores.

PS: this is not an assignment, it's a problem that's been lying in my head for too long.


回答1:


It can't be done using 2 semaphores. 3 is minimum.



来源:https://stackoverflow.com/questions/8266091/strict-n-process-synchronization-using-2-semaphores

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!