大きさ N の有限バッファを用いる生産者・消費者問題を、空き領域の数を表すセマフォ empty と、格納済みデータの数を表すセマフォ full で解く。初期値の組合せとして適切なものはどれか。
選択肢をタップすると、その場で答え合わせできます
正解と解説を見る
正解 Bempty は N、full は 0
解説
正解は「empty は N、full は 0」です。最初はバッファが空なので、空き領域は N 個、格納済みのデータは0個です。生産者はデータを入れる前に P(empty) で空きを確保し、入れた後に V(full) で格納数を増やします。消費者は P(full) でデータがあるのを確かめてから取り出し、V(empty) で空きを増やします。こうして、満杯なら生産者が、空なら消費者が待たされます。「empty は 0、full は N」は最初から満杯の場合です。「empty は N、full は N」では、空のバッファから消費者が取り出そうとしてしまいます。「empty は 1、full は 1」は N を反映していません。バッファ操作自体の相互排除には、別に初期値1のセマフォを用います。
- #セマフォ
- #生産者・消費者問題
この調子でOS・ネットワーク・データベースを続けて解く
▶ この科目の連続演習へ進む(10問)