令和4年度 III-10

科目: 専門科目 / 分野: 情報工学部門 / 年度: 令和4年度

III-10 問題画像

出典:公益社団法人 日本技術士会「技術士第一次試験 過去問題」

N個の要素を持つ有限バッファを介して複数の生産者と消費者が同期をとる生産者・消費者問題のプログラムで、計数セマフォe(情報の入ったバッファ数、初期値0)とf(空きバッファ数、初期値N)に対するP命令・V命令の組合せを選ぶ問題。

解説

この問題で問われていること

有限バッファの生産者・消費者問題を、計数セマフォで同期させるときの、空欄の命令を選ぶ問題。

解き方

① 有限バッファの型: 生産者=P(空き)→入れる→V(データ数)、消費者=P(データ数)→取り出す→V(空き)。ここでは e=データ数(初期0)、f=空き(初期N)
② ア=P(f)なのは②④。イ=V(e)なのは④
③ P(f)・V(e)・P(e)・V(f)(④)

正解が正しい理由

セマフォeは、情報の入ったバッファの数(初期値0)、fは、空きバッファの数(初期値N)である。生産者は、情報をバッファに入れる前に、空きがあるか確認するためP(f)を行い、入れた後に、情報が1つ増えたことをV(e)で通知する。消費者は、取り出す前に、情報があるかをP(e)で確認し、取り出した後に、空きが1つ増えたことをV(f)で通知する。したがってア=P(f)、イ=V(e)、ウ=P(e)、エ=V(f)の④が正しい。

各選択肢について

覚えるべきポイント

有限バッファの生産者・消費者: 生産者はP(空き)→格納→V(データ数)、消費者はP(データ数)→取出し→V(空き)。相互排他用のセマフォと、資源数を数えるセマフォを組み合わせる。

キーワード: セマフォ、P命令、V命令、生産者・消費者問題、排他制御、同期、情報工学部門