ВУЗ:
Составители:
16
взаимное исключение:= 1;
пустой := n;
полный := 0;
cobegin
Поставщик : begin
Произвести запись;
Установить (пустой);
Установить (взаимное исключение);
Передать запись;
Освободить (взаимное исключение);
Освободить (полный);
end;
Потребитель : begin
Установить (полный);
Установить (взаимное исключение);
Прочитать запись;
Освободить (взаимное исключение);
Освободить (пустой);
Обработать запись;
end;
coend;
end;
Лекция 7. Задача синхронизации процессов
Она может быть решена с помощью
семафора;
сигналов или событий (это двоичные переменные, полагая, что 1 соответствует на-
личию сигнала или события, а 0 – отсутствию).
Синхронизация с помощью семафора
1) Процесс 1 должен запустить процесс 2, и проработав некоторое время, остановить-
ся, ожидая окончания процесса 2. После завершения процесса 2 он должен продолжить рабо-
ту.
Var
S: семафор двоичный;
Begin
S:=0;
Cobegin
Процесс 1 : begin
..
Запустить процесс 2;
.
.
Установить (S);
Процесс 1
Процесс 2
взаимное исключение:= 1;
пустой := n;
полный := 0;
cobegin
Поставщик : begin
Произвести запись;
Установить (пустой);
Установить (взаимное исключение);
Передать запись;
Освободить (взаимное исключение);
Освободить (полный);
end;
Потребитель : begin
Установить (полный);
Установить (взаимное исключение);
Прочитать запись;
Освободить (взаимное исключение);
Освободить (пустой);
Обработать запись;
end;
coend;
end;
Лекция 7. Задача синхронизации процессов
Она может быть решена с помощью
семафора;
сигналов или событий (это двоичные переменные, полагая, что 1 соответствует на-
личию сигнала или события, а 0 – отсутствию).
Синхронизация с помощью семафора
1) Процесс 1 должен запустить процесс 2, и проработав некоторое время, остановить-
ся, ожидая окончания процесса 2. После завершения процесса 2 он должен продолжить рабо-
ту.
Процесс 1
Процесс 2
Var
S: семафор двоичный;
Begin
S:=0;
Cobegin
Процесс 1 : begin
..
Запустить процесс 2;
.
.
Установить (S);
16
