Средства синхронизации.
Каждый акт взаимодействия субъекта
доступа со средством синхронизации моделируется как выполнение
субъектом некоторого оператора, относящегося к средству синхрони-
зации. Средства синхронизации моделируются как совокупность та-
ких операторов. В общем случае в данной модели выделяются четы-
ре примитива синхронизации: рекурсивный исключающий семафор,
нерекурсивный (обычный) исключающий семафор, сигнальная пере-
менная с памятью и сигнальная переменная без памяти.
Исключающий семафор
— это средство синхронизации, которое в
конкретный момент времени может быть захвачено только одним по-
током. Если исключающий семафор захвачен каким-то потоком, то
другой поток, обращающийся к семафору, переводится в состояние
ожидания. Как только семафор освобождается, выполнение потока
продолжается.
Нерекурсивный
(
обычный
)
исключающий семафор
описывается
двумя операторами взаимодействия:
•
оператором захвата нерекурсивного семафора. Он обозначает-
ся окружностью, внутри которой изображен символ L и номер нере-
курсивного семафора. Номер назначается с целью различать разные
экземпляры нерекурсивного семафора;
•
оператором освобождения нерекурсивного семафора. Он обозна-
чается окружностью, внутри которой изображен символ U и номер
нерекурсивного семафора.
Рекурсивный исключающий семафор
также описывается двумя опе-
рациями — захвата и освобождения. Отличие от нерекурсивного сема-
фора заключается в том, что данный семафор может быть захвачен
несколько раз уже захватившим его субъектом. Когда захвативший его
субъект освободит его столько раз, сколько его захватил, рекурсив-
ный семафор может быть захвачен другими субъектами. Отметим, что
рекурсивный семафор легко моделируется на основе нерекурсивного.
Таким образом, будем рассматривать только нерекурсивные исключа-
ющие семафоры (далее – исключающие семафоры).
Сигнальная переменная без памяти
— это средство синхронизации,
при взаимодействии с которым поток попадает в состояние ожидания
до тех пор, пока другим потоком не будет отправлен сигнал об осво-
бождении. Сигнал может быть широковещательным, в таком случае
он освобождает все ожидающие потоки, в противном случае — лишь
один.
Сигнальная переменная без памяти описывается тремя оператора-
ми взаимодействия:
•
оператором ожидания на сигнальной переменной без памяти.
Его обозначают окружностью, внутри которой изображен символ
W
и номер сигнальной переменной без памяти;
98
ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2012