エンベデッドシステムスペシャリスト 2018年 午前2 問08
問題文
セマフォに関する記述のうち、適切なものはどれか。
選択肢
ア:V操作は、待ち状態のプロセスがあれば、そのプロセスを一つ実行可能状態へ移す。(正解)
イ:あるセマフォに対してP操作を行うためには、それに先立ってV操作が実行されていなければならない。
ウ:同一のセマフォに対して、V操作を連続して実行することはできない。
エ:一つのプログラム内では、同時に使用できるセマフォの数は一つだけである。
🔒 解説は解答すると表示されます
セマフォのP操作とV操作【午前2解説】
正解の理由
セマフォは、複数のプロセスが共有資源を利用するときなどに、プロセス間の同期や資源数の管理に使う仕組みです。
V操作は、セマフォの値を増やす操作です。セマフォに対して待ち状態のプロセスがある場合は、そのうち一つを待ち状態から実行可能状態へ移します。したがって、適切なのはアです。
なお、実行可能状態になったプロセスは、すぐに実行されるとは限りません。CPUの割当てを受けたときに実行されます。
解法ステップ
- P操作とV操作の基本を確認します。
- P操作:利用できる資源があれば確保し、セマフォの値を減らします。利用できなければ待ち状態になります。
- V操作:資源を解放するなどしてセマフォの値を増やし、待ち状態のプロセスがあれば一つを起こします。
- 選択肢の説明が、この基本動作と一致するかを確認します。
- V操作によって待ち状態のプロセスを一つ実行可能状態に移すというアが、正しいと判断できます。
選択肢別の誤答解説
- ア:適切です。V操作では、待ち状態のプロセスがあれば、そのうち一つを実行可能状態に移します。
- イ:誤りです。P操作の前に、必ずV操作が実行されていなければならないわけではありません。セマフォが利用可能な状態なら、P操作から開始できます。
- ウ:誤りです。同じセマフォに対してV操作を続けて実行することは可能です。待ちプロセスがいなければ、セマフォの値が増加します。
- エ:誤りです。一つのプログラム内で使用できるセマフォの数に、一つだけという制限はありません。複数の資源や処理の同期に、複数のセマフォを使えます。
よくある誤解
- V操作をすると、待ちプロセスがすぐに実行される
V操作で移るのは実行可能状態です。実際にCPUを使って実行するタイミングは、スケジューラが決めます。 - P操作の前には、必ず同じセマフォへのV操作が必要である
セマフォが初期化時点で利用可能な値を持っていれば、先行するV操作がなくてもP操作を実行できます。 - V操作は一度しか実行できない
V操作は繰り返し実行できます。資源の管理方式によっては、セマフォの値が複数回の操作で増減します。
補足コラム
セマフォには、主に「資源の個数」を管理するカウンティングセマフォと、「利用できるかどうか」を管理するバイナリセマフォがあります。どちらもP操作・V操作を使いますが、管理する状態や用途が異なります。
試験では、P操作は「資源を確保する・なければ待つ」、V操作は「資源を解放する・待ちプロセスがあれば起こす」と押さえると、選択肢を判断しやすくなります。
FAQ
Q. V操作で待ち状態から移されたプロセスは、すぐに実行されますか?
A. すぐに実行されるとは限りません。実行可能状態になった後、CPUの割当てを受けて実行されます。
A. すぐに実行されるとは限りません。実行可能状態になった後、CPUの割当てを受けて実行されます。
Q. セマフォの値が0のときにP操作をすると、どうなりますか?
A. 資源を確保できないため、プロセスは待ち状態になります。後でV操作が行われると、待ちプロセスの一つが実行可能状態に移されます。
A. 資源を確保できないため、プロセスは待ち状態になります。後でV操作が行われると、待ちプロセスの一つが実行可能状態に移されます。
関連キーワード: セマフォ、P操作、V操作、プロセス同期、実行可能状態

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

