過去問ハブ🔥 0日
OS・ネットワーク・データベースプロセス管理・スケジューリング・デッドロック難易度 標準2 / 50

共有変数 x(初期値0)に対して、2つのスレッドがそれぞれ「x の値を読み出し、1を加えて書き戻す」処理を1回ずつ、相互排除なしに並行して実行した。終了後の x の値としてあり得るものをすべて挙げたものはどれか。

選択肢をタップすると、その場で答え合わせできます

正解と解説を見る

正解 D1 または 2

解説

正解は「1 または 2」です。一方のスレッドが読出しから書戻しまでを終えてから他方が読み出せば、x は2になります。しかし、両方のスレッドが x=0 を読み出した後にそれぞれ1を書き戻すと、一方の更新が失われて x は1になります。このように、実行の順序によって結果が変わる状態を競合状態(レースコンディション)といい、読出しから書戻しまでを危険区域として相互排除する必要があります。「2 だけ」は、処理が分割できない(不可分)と誤解しています。「0 または 1 または 2」は誤りで、どちらのスレッドも1を加えた値を書き戻すため、0にはなりません。「1 だけ」は、順番に実行される場合を見落としています。

  • #競合状態

この調子でOS・ネットワーク・データベースを続けて解く

▶ この科目の連続演習へ進む(10問)

この問題の分野を深く学ぶなら

PR情報工学・理系基礎の教科書を探す

詳細を見る

OS・ネットワーク・データベースの問題一覧へ戻る

「プロセス管理・スケジューリング・デッドロック」の関連問題