з

К предыдущей странице

л

К предыдущей главе

о

К следующей главе

и

К следующей странице


4.3.1. Двоичный семафор

С каждым семафором связывается список процессов, ожидающих разрешения пройти семафор.

ОС может выполнить три действия над процессами:

  1. может назначить для исполнения готовый процесс;
  2. может заблокировать исполняющийся процесс и поместить его в список, связанный с конкретным семафором;
  3. может деблокировать процесс, тем самым переводя его в готовое к исполнению состояние и позволяя ему когда-нибудь возобновить исполнение.

Находясь в списке заблокированных, ожидающий процесс не проверяет семафор непрерывно, как в случае активного ожидания. Вместо него на процессоре может исполняться другой процесс (рис. 13, 14).


Рис. 13. Временная диаграмма для двоичного семафора (S)

Замечание: все CS должны быть одинаковы по длительности, поэтому чтобы упростить временные диаграммы здесь и далее применено сокращение -

До момента t1 ресурс был не занят. В момент t1 процесс Pr1, выполняет операцию P(S) и входит в критический участок (CS).

В момент t2 процесс Pr2 выполняет операцию P(S) - занять ресурс, это приводит к изменению: S = -1 - означает, что Pr2 в состоянии блокирования.

В момент t3 - конец критического участка для процесса Pr1. Выполняется операция V(S) - освободить, это приводит к увеличению значения S на единицу (т.е. S=0). Для процесса блокированного (Pr2) это сигнал на разблокировку и предоставления ему ресурса.

В момент t4 процесс Pr2 освобождает ресурс, выполняется операция V(S), которая изменяет значение S на 1 (т.е. S=1).

Достоинство синхронизации на основе семафорных операций - отсутствие активного ожидания представления ресурса.


Рис. 14. Временная диаграмма для двоичного семафора (семафоры - S1 и S2)

Б - блокировано, СS1 и CS2 - критические участки 1 и 2, идентифицированные семафорами S1 и S2.


з

К предыдущей странице

л

К предыдущей главе

о

К следующей главе

и

К следующей странице