ВУЗ:
Составители:
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
Страницы
- « первая
- ‹ предыдущая
- …
- 11
- 12
- 13
- 14
- 15
- …
- следующая ›
- последняя »
