セマフォ
セマフォ(semaphore)
排他制御の仕組みの一つ
プロセス間通信の方式の一つ
「エドガー・ダイクストラ」によって考案された
セマフォの操作は「P操作」、「V操作」がある
P操作: セマフォの獲得
オランダ語で“通行する”を意味するPasserenの略
Prolagen?
P操作で減算処理をする
$ S ← S - 1
資源をロックする
V操作: セマフォの開放
オランダ語で“腕木を上げる”を意味するVerhoogの略
Verhogen?
V操作で加算処理をする
$ S ← S + 1
資源をアンロックする
2値セマフォ(binary semaphore)
セマフォの値が0か1のみとるもの
ミューテックス
バイナリセマフォでセマフォの動きを考える
1. セマフォ$ S の初期値は1
2. タスクAがP操作をすると減算($ S ← S - 1 )して$ S = 0 になる
3. 資源をロックする
4. タスクBがP操作をしようとする。しかしセマフォ$ S が0なのでキューに積まれる。
5. タスクAの処理が終わってV操作をして加算($ S ← S + 1 )する。$ S = 1 になる。
6. 資源をアンロックする
7. キューに積まれていたタスクBがdequeueされ実行可能状態になる
8. タスクBがP操作をして減算($ S ← S - 1 )して$ S = 0 になる。
9. 資源をロックする
k-相互排除というのがある
最大k個のプロセスが共有資源にアクセスして良い場合のこと
セマフォの実装仕様、または実装
System V セマフォ
POSIX セマフォ
関連
レースコンディション
待ち行列理論
ラウンドロビン・スケジューリング
食事する哲学者問題
プリエンプション方式
デッカーのアルゴリズム
リソーススタベーション
確認用
Q. セマフォ
参考
セマフォ - Wikipedia
セマフォの仕組みを学んでみよう | ITの学び
セマフォの操作を行なう – C言語入門講座
排他制御に関する用語を大雑把に理解しよう「ロックとセマフォ」「共有ロックと排他ロック」「楽観的ロックと悲観的ロック」 - Qiita
排他制御に関する用語を大雑把に理解しよう「ロックとセマフォ」「共有ロックと排他ロック」「楽観的ロックと悲観的ロック」 - Qiita
メモ
The Linux Kernel: プロセス間通信の仕組み
システムソフトウェア講義の概要
#ロック #排他制御