「セマフォ」について

お疲れ様です、しょうたんです。
今回はpostgresの設定を触っていて、久々目にしました、「セマフォ」について概念のメモを残します。
C言語でリソースを触る人じゃなければイメージが沸きにくいものなんでしょうね。
突然、IPC(プロセス間通信)という呼称で呼んでみたり。。わかりやすい説明がなかなか見つかりません。

セマフォとは共通で使えるリソースに対しての排他制御です。
(これ以上の内容が正直、頭に入ってきませんw)

ポイントとしては、System V IPC (古いUNIX系OSのプロセス間通信)のセマフォと
POSIX セマフォは違うものであり、文脈でどちらの説明であるかに注意する点でしょうか。

System V IPCではリソースへの排他的アクセス機能や、同時にあるリソースを使用することができるプロセスの数を制限するために使用します。
postgresでは正にプロセスの数を制限するために使っていますね。
POSIX セマフォでは名前付きセマフォ(⇒ファイル)と名前なしセマフォ(⇒共有メモリ)があります。

いつもお世話になっているwikiで個人的に気に入った記述を見つけたので記載しておきますw↓

「セマフォは競合状態を防ぐ便利なツールである。しかしセマフォを使うことでプログラムにおける競合状態がなくなると保証するものではない。任意個の資源を扱うセマフォをカウンティングセマフォ、値が0と1に制限されている(ロック/アンロック、使用可能/使用不可の意味がある)セマフォをバイナリセマフォと呼ぶ。」

自分でファイル制御でセマフォを作る場合もあったりしますが、その場合は「手作りファイルセマフォ」と呼びましょうw

今回は以上です、お疲れ様でした。