generated at
セマフォ
セマフォ(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個のプロセスが共有資源にアクセスして良い場合のこと

セマフォの実装仕様、または実装

関連

確認用
Q. セマフォ

参考

メモ