Рассмотрим однопроцессорную систему, выполняющую одновременно два процесса P и Q. Каждый процесс выполняет приведенный ниже код, обрабатывает P-процедуру P и обрабатывает Q-процедуру Q. Оба процесса поступают в пределах очень короткое время друг друга, но не могут быть сделаны предположения о времени их запуска и их относительной скорости. Все утверждения, используемые в коде ниже от А до К, являются атомарными, т.е. они либо выполняются полностью, либо вообще не выполняются. Выполнение процессов синхронизируется двумя двоичными семафорами S1 и S2. Семафора S1, инициализируется 1, а семафор S2 инициализируется в 0. Код, выполняемый процессов выглядит следующим образом:Оценка логики процессов в операционной системе
procedure P
begin
A;
wait(S1);
B;
signal(S1);
C;
D;
signal(S2);
E;
end
procedure Q
begin
F;
wait(S1);
G;
H;
J;
signal(S1);
wait(S2);
K;
end
a.Give по крайней мере, четыре возможных порядков исполнения для операторов А до К.
А, С, D, Е, К
А, D, С, Е, К
Р, С, D, Е, К
F, D, С, Е , K
b. Какова функция каждого из семафоров S1 и S2 в данном примере?
S1 – used for waiting
c. Можно ли выполнить оператор E перед оператором F? Обосновать ответ.
Да, (но я не уверен, кто-то может подтвердить?)
d. Можно ли выполнить оператор K перед оператором A? Обосновать ответ.
Хорошо, я стараюсь все, но я не уверен, как заказать – user494310
I _just_ добавил последний раздел, объяснив два способа использования семафоров. Это помогает? –