この概念が出た関連問題

この試験の対策ガイド

基本情報技術者試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は ア

解説

多重割込みとタスクの実行時間を計算する問題です。割込み A は処理時間0.5ミリ秒で優先度高、割込み B は処理時間1.5ミリ秒で優先度低です。図から、B は0ミリ秒と5ミリ秒の時点、A は1ミリ秒・2.5ミリ秒・3.5ミリ秒の時点で発生します。時系列で追うと、まず0ミリ秒で B の処理が始まります(0〜1)。1ミリ秒で優先度の高い A が発生し、B を中断して A が実行されます(1〜1.5)。A 完了後、B が残り0.5ミリ秒を実行して2.0ミリ秒に完了します(1.5〜2.0)。2.0〜2.5 はメイン処理(0.5ミリ秒)。2.5ミリ秒で A が発生し2.5〜3.0を占有、3.0〜3.5はメイン処理(0.5ミリ秒)。3.5ミリ秒で A が発生し3.5〜4.0を占有、4.0〜5.0はメイン処理(1.0ミリ秒)。5ミリ秒の B は区間の終端で発生するため0〜5ミリ秒には影響しません。メイン処理が使えたのは 0.5+0.5+1.0 = 2ミリ秒で、アが正解です。

なぜ他の選択肢は違うのか

選択肢 イ
2.5ミリ秒は、割込み A の3回の発生(1、2.5、3.5ミリ秒)のうち1回を見落とした場合の値です。A 1回分(0.5ミリ秒)を数え落とすと割込みの合計が2.5ミリ秒となり、5 − 2.5 = 2.5 と計算されてしまいます。タイムチャートを自分で描き、矢印の数(割込みの発生回数)を最初に確認してから積み上げると、数え落としを防げます。
選択肢 ウ
3.5ミリ秒は、割込み B(1.5ミリ秒)だけを考慮して 5 − 1.5 = 3.5 とした場合の値です。優先度の高い A が1ミリ秒・2.5ミリ秒・3.5ミリ秒の3回発生し、合計1.5ミリ秒(0.5×3)の CPU 時間を消費することを忘れています。多重割込みの問題では、図中のすべての割込みの発生時刻と処理時間を漏れなく時系列に並べてから集計することが必須です。
選択肢 エ
5ミリ秒は「割込みが発生してもメイン処理は止まらない」と誤解した場合の値です。割込み処理が実行されている間、CPU はメイン処理に使えません。本問は割込みの呼出し・復帰のオーバヘッドこそ無視できるものの、割込み処理時間そのもの(A 0.5ミリ秒×3回、B 1.5ミリ秒×1回)は確実に CPU 時間を消費します。

解くときのポイント

割込み問題はタイムチャートを描いて「いつ・どの優先度の処理が CPU を使うか」を塗り分ける。高優先度は低優先度を中断する、中断された処理は残り時間を後で消化する、の2点を機械的に適用する。