Параллельные процессы с использованием семафоров - PullRequest
0 голосов
/ 21 марта 2019

Можете ли вы помочь мне с этим упражнением

Процессы Δ1, Δ2, Δ3 выполняются параллельно, и начальные значения семафоров s1 = s2 = s3 = 0.Он спрашивает, какие строки можно напечатать.

Мое решение этого упражнения - строки ABC и BAC.Δ3 процесс начинается с semWait и s3 = 0, поэтому я предполагаю, что он заблокирован, и я начинаю с Δ1 или Δ2.При Iзапустив процесс Δ1, он печатает A, затем с помощью semSignal, s3 получает значение 1, а с помощью semiWait процесс Δ1 блокируется, поскольку s1 = 0, поэтому значение меняется на s1 = -1. После этого я запускаю процесс Δ2, который печатает B, и с semSignal, s3получает значение 2 и при semWait процесс блокируется, потому что s2 = 0, поэтому значение s2 изменяется на -1. При последнем процессе Δ3 разблокируется, и после того, как два semWait s3 имеют значение s3 = 0, он печатает C и с двумя semSignalss1 и s2 получают значение 0.

Правильно ли это? Кроме того, после процесса Δ3 я не знаю, нужно ли мне останавливаться или с помощью semSignal s1, s2 снова запустить процессы Δ1, Δ2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...