Когда семафор выдает ожидание и когда он выдает сигнал?
-
28-09-2020 - |
Вопрос
В моем учебнике Операционные системы:Внутреннее устройство и принципы проектирования (9-е издание) Уильям Столлингс в главе 5 объясняет, как работают семафоры:
Основной принцип заключается в следующем:Два или более процессов могут сотрудничать с помощью простых сигналов, так что процесс может быть вынужден останавливаться в указанном месте, пока не получит определенный сигнал.Любое сложное требование координации может быть удовлетворено соответствующей структурой сигналов.Для сигнализации используются специальные переменные, называемые семафорами.Передавать сигнал через семафорs
, процесс выполняет примитивsemSignal (s)
.Чтобы получить сигнал через семафоры S, процесс выполняет примитивsemWait (s)
;Если соответствующий сигнал еще не был передан, процесс приостановлен до тех пор, пока передача не произойдет.
Я не могу найти в главе 5 описание того, когда семафор выдает semSignal вместо semWait (которые также иногда называют сигналом и ожиданием).Может ли кто-нибудь описать условия, при которых будет выдаваться semSignal по сравнению с semWait?
Решение
Семафор их не выдает.Семафор — это объект, который может использоваться процессами для координации между собой.Таким образом, процесс вызовет semSignal или semWait для общего семафора.Мы не можем описать условия, при которых он будет это делать в целом, потому что каждый процесс сам решает, как он хочет использовать семафоры.Семафоры — это примитив, который можно использовать разными способами.Вы сможете найти в Интернете или в своем учебнике множество примеров использования семафоров для координации;это даст вам несколько примеров конкретных процессов и того, когда эти конкретные процессы будут вызывать эти операции над семафором.