他の人が言ったように、セマフォはIPC(プロセス間通信構造)です。すべてのIPCのようなセマフォは、異なるプロセスが互いに通信できるようにするために使用されます。
これらは基本的に、sempost(3)、semwait(3)、semget(2)、semop(2)などの特別なシステムコールを使用して作成、アクセス、破棄されるカウンターです。簡単な説明については、Linuxシステムのsem_overview(7)を参照してください。
ここでのコミュニケーションの定義はかなり原始的です。セマフォの「通信」とは、上記のシステム/ライブラリ呼び出しを介してカウンタを読み取り、インクリメントまたはデクリメントすることを意味します。
セマフォについての特別な点は、セマフォが操作を実行できるのは一度に1つのプロセスのみであり、セマフォの操作はアトミックであることが保証されていることです。つまり、カーネルはセマフォ操作を実行しているプロセスをスワップアウトしないため、セマフォ。
他の特別なことは、それらが共有メモリに作成され、複数のプロセスがそれらにアクセスできるようにすることです。
それらがどのように現れる/作成されるかは、プログラムがsemget(2)を使用して作成することです。たとえば、apacheは実行時にsempahoreを作成します。
ipcs -lは、システムのIPCリソースについて通知します。
sysctlを使用して、いくつかのシステムセマフォとipc関連の制限を操作できます。sysctl kernel.semsysctlを介して、sempahore関連の設定を表示してみてください 。sysctlの変更を永続化したい場合は、それらをに入れてみてください/etc/sysctl.conf。