ВУЗ:
Составители:
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
- …
- следующая ›
- последняя »