Как уже говорили другие, семафоры являются IPC (структурами межпроцессного взаимодействия). Семафоры, как и все IPC, используются для взаимодействия различных процессов.
В основном это счетчики, которые создаются, доступны и уничтожаются с помощью специальных системных вызовов, таких как sempost (3), semwait (3), semget (2) и semop (2). Смотрите sem_overview (7) в системе Linux для краткого описания.
Определение общения здесь довольно примитивно. «Общаться» для семафоров означает чтение, увеличение или уменьшение счетчика с помощью системных / библиотечных вызовов, упомянутых выше.
Особенность семафоров, помимо того, что они есть, заключается в том, что только один процесс может одновременно выполнять над ними операции, а операции с семафорами гарантированно атомарны , то есть вы не можете попасть в состояние гонки через семафор, так как ядро не будет менять процесс, выполняющий семафор.
Другая особенность заключается в том, что они создаются в общей памяти, что позволяет нескольким процессам получать к ним доступ.
Как они проявляются / создаются, так это то, что программы создают их с помощью semget (2). Например, при запуске Apache создает семафоры.
ipcs -l расскажет вам о системных ресурсах ipc.
Вы можете манипулировать некоторыми системными ограничениями семафора и ipc с помощью sysctl. Попробуйте sysctl kernel.sem
просмотреть настройки, связанные с семпахором, через sysctl. Если вы хотите сохранить какие-либо изменения в sysctl, попробуйте внести их /etc/sysctl.conf
.