| |||||
4.3.1. Двоичный семафорС каждым семафором связывается список процессов, ожидающих разрешения пройти семафор. ОС может выполнить три действия над процессами:
Находясь в списке заблокированных, ожидающий процесс не проверяет семафор непрерывно, как в случае активного ожидания. Вместо него на процессоре может исполняться другой процесс (рис. 13, 14).
Замечание: все 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). Достоинство синхронизации на основе семафорных операций - отсутствие активного ожидания представления ресурса.
Б - блокировано, СS1 и CS2 - критические участки 1 и 2, идентифицированные семафорами S1 и S2. | |||||
|