ВУЗ:
Составители:
17
.
..
End;
Процесс 2 : begin
.
.
Освободить (S);
End;
coend;
end;
Допустим, что процесс 3 должен начать выполняться после того, как закончатся про-
цессы 1 и 2.
Var
S1, S2: семафор двоичный;
begin
S1:=0;
S2:=0;
{Оба семафора сначала закрыты}
cobegin
Процесс 1: begin . . . Освободить (S1); End
Процесс 2: begin . . . Освободить (S2); End
Процесс 3: begin . . . Установить (S1); Установить (S2); . . . End
coend;
end;
{только тогда, когда S1, S2 будут открыты, процесс 3 начнёт выполняться}
3) Допустим, что процесс 3 необходимо запустить после окончания одного из процес-
сов – первого или второго.
Var
S: семафор двоичный;
Begin
S:=0;
Cobegin
Процесс 1 : begin . . . Освободить (S); end;
Процесс 2 : begin . . . Освободить (S); end;
Процесс 3 : begin . . . Установить (S); . . . end;
Coend;
End;
Синхронизация процессов с использованием сигналов или событий.
С каждым сигналом в системе связывается очередь процессов, ожидающих сигнал.
Если процесс выполняет команду “ждать сигнал” и (Е) = 0 , то процесс помещается в очередь
ожидания сигналов. Если выполняется команда “передать сигнал”, то очередь просматрива-
ется и ожидающий сигнал процесс переводится в готовое состояние.
Var
E: сигнал;
Для переменной Е типа сигнал определим две операции:
Передать сигнал (Е) и Ждать сигнал (Е).
.
..
End;
Процесс 2 : begin
.
.
Освободить (S);
End;
coend;
end;
Допустим, что процесс 3 должен начать выполняться после того, как закончатся про-
цессы 1 и 2.
Var
S1, S2: семафор двоичный;
begin
S1:=0;
S2:=0;
{Оба семафора сначала закрыты}
cobegin
Процесс 1: begin . . . Освободить (S1); End
Процесс 2: begin . . . Освободить (S2); End
Процесс 3: begin . . . Установить (S1); Установить (S2); . . . End
coend;
end;
{только тогда, когда S1, S2 будут открыты, процесс 3 начнёт выполняться}
3) Допустим, что процесс 3 необходимо запустить после окончания одного из процес-
сов – первого или второго.
Var
S: семафор двоичный;
Begin
S:=0;
Cobegin
Процесс 1 : begin . . . Освободить (S); end;
Процесс 2 : begin . . . Освободить (S); end;
Процесс 3 : begin . . . Установить (S); . . . end;
Coend;
End;
Синхронизация процессов с использованием сигналов или событий.
С каждым сигналом в системе связывается очередь процессов, ожидающих сигнал.
Если процесс выполняет команду “ждать сигнал” и (Е) = 0 , то процесс помещается в очередь
ожидания сигналов. Если выполняется команда “передать сигнал”, то очередь просматрива-
ется и ожидающий сигнал процесс переводится в готовое состояние.
Var
E: сигнал;
Для переменной Е типа сигнал определим две операции:
Передать сигнал (Е) и Ждать сигнал (Е).
17
