エンベデッドシステムスペシャリスト 2012年 午前2 問06
問題文
セマフォの基本操作であるP操作、V操作に関する記述のうち、適切なものはどれか。
選択肢
ア:P操作とV操作は交互に行わなければならない。
イ:P操作は資源のロック、V操作は資源のアンロックを実現するのに使用できる。(正解)
ウ:P操作は事象の発生通知、V操作は事象の待合せに用いられる。
エ:P操作はセマフォ変数の値を増加させ、V操作は減少させる。
🔒 解説は解答すると表示されます
セマフォのP操作とV操作【午前2解説】
正解の理由
セマフォは、複数の処理が共有する資源の利用を調整する仕組みです。
P操作はセマフォの値を減らして資源を確保し、資源が利用できない場合は処理を待たせます。V操作はセマフォの値を増やして資源を解放し、待っている処理があれば起床させます。
このため、P操作で資源をロックし、V操作でアンロックする使い方ができます。したがって、適切なのはイです。
解法ステップ
- P操作は、資源を使えるか確認して確保する操作だと押さえます。
- V操作は、資源を解放して利用可能にする操作だと押さえます。
- 各選択肢が、この役割と一致しているかを確認します。
選択肢別の誤答解説
- ア:誤りです。 P操作とV操作を必ず交互に行う必要はありません。複数の処理がP操作で待つこともあり、資源の解放に応じてV操作が行われます。
- イ:正しいです。 P操作で資源を確保してロックし、V操作で資源を解放してアンロックできます。
- ウ:誤りです。 事象の発生を待つのはP操作、事象の発生を通知するのはV操作です。選択肢では役割が逆になっています。
- エ:誤りです。 P操作はセマフォの値を減らし、V操作は値を増やします。選択肢では増減が逆になっています。
よくある誤解
- P操作とV操作は必ずペアで交互に実行すると思い込むことがあります。複数の処理が同じセマフォを利用するため、操作が交互になるとは限りません。
- P操作は通知、V操作は待合せと取り違えることがあります。P操作が待ち、V操作が通知すると覚えましょう。
- P操作は値を増やすと誤認することがあります。Pは減少、Vは増加です。
補足コラム
セマフォの値は、利用可能な資源の数を表すために使われます。たとえば、利用可能な資源が3個なら、セマフォの初期値を3に設定できます。P操作によって利用可能な数を減らし、V操作によって返却された資源の数を増やします。
資源が1個の場合は、セマフォをロックのように利用できます。この場合、P操作で資源を確保し、処理が終わったらV操作で解放します。
FAQ
Q. P操作を実行したとき、セマフォの値が0ならどうなりますか?
A. 資源を確保できないため、通常は処理が待ち状態になります。V操作で資源が利用可能になると、待っている処理が再開できる場合があります。
A. 資源を確保できないため、通常は処理が待ち状態になります。V操作で資源が利用可能になると、待っている処理が再開できる場合があります。
Q. V操作は、必ず直前にP操作を行った処理が実行するものですか?
A. 必ずしもそうではありません。V操作はセマフォの値を増やして資源を解放する操作であり、実際に誰が実行するかはプログラムの設計によります。
A. 必ずしもそうではありません。V操作はセマフォの値を増やして資源を解放する操作であり、実際に誰が実行するかはプログラムの設計によります。
関連キーワード: セマフォ、P操作、V操作、排他制御、資源管理

\ せっかくなら /
エンベデッドシステムスペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

