メインコンテンツへ
ソフトウェアセマフォ

セマフォ(Semaphore)における P 操作(wait)と V 操作(signal)の説明として正しいものはどれか。

ア.P操作とV操作は同時に実行でき、競合状態を意図的に引き起こす操作である。
イ.P操作はプロセスを強制終了し、V操作は新しいプロセスを生成する。
ウ.P操作はセマフォ値を1増やし、V操作はセマフォ値を1減らす。
エ.P操作はセマフォ値を1減らし(0未満なら待機)、V操作はセマフォ値を1増やす(待機中プロセスを起こす)。正解

解説

セマフォは「入れる人数を管理する回転扉」。P操作で1人入れ(カウンター-1)、V操作で1人出て行く(カウンター+1)。カウンターが0なら入れない(待機)。

なぜ エ が正解か

セマフォは共有資源の同時アクセス数を制御する仕組みです。 P操作(wait/acquire): ・セマフォ値を1減らす ・値が0未満になる場合はそのプロセスをブロック(待機キューへ) V操作(signal/release): ・セマフォ値を1増やす ・待機中のプロセスがあれば1つを起こす(レディキューへ移す) バイナリセマフォ(値=0/1)はミューテックスと同等の動作をします。カウンティングセマフォは複数資源の管理に使います。

なぜ ア は間違いか

P操作とV操作はアトミック(不可分)に実行され、競合状態を防ぐための仕組みです。競合状態を引き起こすのではなく、まさに競合状態を防止するのがセマフォの目的です。

なぜ イ は間違いか

プロセスの強制終了や生成はセマフォの機能ではありません。セマフォはプロセスの実行制御(待機・再開)を行うデータ構造であり、プロセスの生死に関与しません。

なぜ ウ は間違いか

P操作が増やしてV操作が減らすのは正反対の説明です。P(Probeer=試みる)は資源を取得(減算)、V(Verhoog=増やす)は資源を返却(加算)です。語源(オランダ語)から覚えると混同しにくくなります。

出典: AI生成問題(学習用)