セマフォ
複数のプロセス/スレッドが並行動作する環境で、共有資源への同時アクセスを制御する仕組み。 #concurrency #kernel
仕組み
共有メモリ上のカウンタとして実装される。カウンタの初期値は同時アクセスを許可する数。クリティカルセクション(共有資源を使う処理)に入る際にP操作(wait)でカウンタを-1し、処理終了時にV操作(signal)で+1する。カウンタが0のとき新たに入ろうとするプロセスは、カウンタが正の値に戻るまで待たされる。
ミューテックスとの関係
資源数が1のセマフォ(バイナリセマフォ)は、実質的にミューテックス(mutex、排他ロック)と同じ。ミューテックスはセマフォの特殊ケースとみなせる。
位置づけ
排他制御(複数プロセスの共有資源への同時アクセスによる競合を防ぐ仕組み)を実現する代表的な手法のひとつ。OSやリアルタイムOS(RTOS)のカーネル機能として提供されることが多い。
出典
- セマフォ - Wikipedia
- 排他制御に関する用語を大雑把に理解しよう「ロックとセマフォ」「共有ロックと排他ロック」「楽観的ロックと悲観的ロック」 - Qiita
- リアルタイムOSのセマフォ - フィールドデザイン
- セマフォの仕組みを学んでみよう - ITの学び