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

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

