ВУЗ:
Составители:
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