Основные задачи параллельного программирования. Конспект лекций. Степанов Б.М. - 16 стр.

UptoLike

Составители: 

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