В определенной системе выполнение трех потоков синхронизируется с использованием трех семафоров S1, S2 и S3, как показано ниже. Семафоры S1 и S2 инициализируются до нуля, а семафор S3 инициализируется равным 1. Все три семафора используются только в разделах кода, показанных ниже.Как работают три семафора в синхронизированном выполнении трех потоков?
Thread A Thread B Thread C
... ... ...
P(S1) P(S2) P(S3)
P(S1) P(S1) V(S1)
x=3*x+4 x=x+7 x=x*5
V(S2) V(S2) V(S1)
V(S1) V(S1) V(S3)
... ... ...
Если переменная х определяется как целое общей переменной, инициированную 1, и не присваивается значение в любой другой разделы кода, кроме , показанные выше, каково будет его значение, когда все потоки завершат выполнение ? Какими будут значения в трех семафорах?
Я пытаюсь решить эту прошлую бумагу, чтобы подготовиться к экзамену по операционной системе. Я не понимаю, как изменяется переменная x и как три семафора работают вместе. Если бы кто-то мог показать мне шаг за шагом, как семафоры работают вместе и как изменяется переменная, я был бы благодарен.
Если у вас есть какой-либо другой подобный пример для практики, не стесняйтесь связывать его.
Спасибо, я очень ценю. Наконец я получил рассуждения. :) –