Семафоры

Семафоры как теоретическая конструкция

В информатике понятие семафор (semaphore) было впервые введено голланд­ским теоретиком Е.В. Дейкстрой (E.W. Dijkstra) для решения задач синхрониза­ции процессов. Семафор sem может рассматриваться как целочисленная перемен­ная, для которой определены следующие операции:

p(sem) или wait (sem)

if (sem!=0)

уменьшить sem на единицу

else

ждать, пока sem не станет ненулевым, затем вычесть единицу

v(sem) или signal (sem)

увеличить sem на единицу

if (очередь ожидающих процессов не пуста)

продолжить выполнение первого процесса в очереди ожидания

Обратите внимание, что обозначения р и v происходят от голландских терми­нов для понятий ожидания (wait) и сигнализации (signal), причем последнее по­нятие не следует путать с обычными сигналами UNIX.

Действия проверки и установки в обеих операциях должны составлять одно атомарное действие, чтобы только один процесс мог изменять семафор sem в каж­дый момент времени.

Системный вызов semget


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: