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

UptoLike

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

13
Основная часть процесса 2;
end
coend;
Здесь необходимо отметить следующее:
1) отсутствуют циклыактивного ожидания”;
2) не нужны вспомогательные переменные и операторы.
Пример:
Пусть имеется 5 процессов: P1, P2, P3, P4, P5, которые работают с одним семафором
S.
Лекция 5. Другие определения семафоров
Если переменная (S), называемая семафором, может принимать целое значение, от-
личное от {0,1}, то семафор называется числовым. Числовые семафоры могут быть 2 видов:
а) числовые семафоры, принимающие только положительные значения;
б) числовые семафоры, принимающие отрицательные значения.
В зависимости от типа семафора основные операции определяются по-разному.
Для а):
Установить (S):
if S>0 then S:=S-1
else begin
Перевести процесс, выполняющийУстановить”, вблокированноесостояние;
Включить этот процесс в очередь S;
Запустить очереднойготовыйпроцесс;
end.
Освободить (S);
if очередь семафора не пуста
then
Выбрать процесс из очереди S и перевести его из состоянияблокированв состояниего-
тов
else
S:=S+1;
Числовые семафоры с положительными значениями могут быть использованы в тех
случаях, когда требуется пропустить заданное число процессов, а затем закрыть семафор.
S Очередь (S) операция
Критический ин-
те
р
вал
процесс Шаг
1 -------------------------- --------------------------0
0
Nil (пуста)
Установить
КИ1
Р1 1
1
Nil (пуста)
Освободить
Р1 2
0
Р3
Установить
КИ2
Р2 3
0
Р3, Р4
Установить
КИ2
Р3 4
0
Р4
Установить
КИ2
Р4 5
0
Р4, Р5
Освободить
КИ3
Р2 6
0
Р5
Установить
КИ3
Р5 7
0
Nil (пуста)
Освободить
КИ4
Р3 8
0
Nil (пуста)
Освободить
КИ5
Р4 9
1
Nil (пуста)
Освободить
Р5 10
           Основная часть процесса 2;
           end
coend;

         Здесь необходимо отметить следующее:
         1) отсутствуют циклы “активного ожидания”;
         2) не нужны вспомогательные переменные и операторы.
         Пример:
         Пусть имеется 5 процессов: P1, P2, P3, P4, P5, которые работают с одним семафором
S.
                       Шаг   процесс   операция    Критический    ин- Очередь (S)      S
                                                   тервал

                         0   ------- ------------- ------------------- -------------   1
                         1     Р1 Установить              КИ1           Nil (пуста)    0
                         2     Р1 Освободить                –           Nil (пуста)    1
                         3     Р2 Установить              КИ2           Nil (пуста)    0
                         4     Р3 Установить              КИ2                Р3        0
                         5     Р4 Установить              КИ2              Р3, Р4      0
                         6     Р2 Освободить              КИ3                Р4        0
                         7     Р5 Установить              КИ3              Р4, Р5      0
                         8     Р3 Освободить              КИ4                Р5        0
                         9     Р4     Освободить          КИ5           Nil (пуста)    0
                        10     Р5 Освободить                –           Nil (пуста)    1

                         Лекция 5. Другие определения семафоров

        Если переменная (S), называемая семафором, может принимать целое значение, от-
личное от {0,1}, то семафор называется числовым. Числовые семафоры могут быть 2 видов:
а) числовые семафоры, принимающие только положительные значения;
б) числовые семафоры, принимающие отрицательные значения.
В зависимости от типа семафора основные операции определяются по-разному.
Для а):
Установить (S):
if S>0 then S:=S-1
else begin
Перевести процесс, выполняющий “Установить”, в “блокированное” состояние;
Включить этот процесс в очередь S;
Запустить очередной “готовый” процесс;
end.
Освободить (S);
if очередь семафора не пуста
then
Выбрать процесс из очереди S и перевести его из состояния “блокирован” в состояние “го-
тов”
else
S:=S+1;

      Числовые семафоры с положительными значениями могут быть использованы в тех
случаях, когда требуется пропустить заданное число процессов, а затем закрыть семафор.


                                                   13