基本情報技術者 2019年 秋期 午前(科目A) 問13
問題文
メイン処理、及び表に示す二つの割込みA,Bの処理があり、多重割込みが許可されている。割込みA,Bが図のタイミングで発生するとき、0ミリ秒から5ミリ秒までの間にメイン処理が利用できるCPU時間は何ミリ秒か。ここで、割込み処理の呼出し及び復帰に伴うオーバヘッドは無視できるものとする。

選択肢
ア:2
イ:2.5
ウ:3.5(正解)
エ:5
割込みの発生タイミングとメイン処理の利用可能時間【午前2 解説】
要点まとめ
- 結論:0~5ミリ秒の間にメイン処理が利用できるCPU時間は合計で3.5ミリ秒で、選択肢はウです。
- 根拠:5ms の総時間から、その間にCPUを占有する割込み処理の合計 1.5ms(B の 1 回分)を差し引くため ms となります。
- 差がつくポイント:問題文の前提(多重割込みや同一割込みの再入可否)をどう解釈するかで解答が変わるため、設問の想定する割込みの扱いを明確にすることが重要です。
正解の理由
設問の意図する解釈では、0ms~5ms の間に実際に「CPU 時間を消費する割込み処理」は B (時刻 0 発生、処理時間 1.5ms)のみと考えます。A は時刻 1,2,3,4 に発生しますが、設問の条件(多重割込みが許可されていることや図の描き方)から「これらの A 発生はすべて B の処理中に発生し、追加の CPU 消費を生じない(=処理が重複してカウントされない)」という解釈が読み取れます。したがって、0~5ms の間に割込みで占有される CPU 時間は 1.5ms で、残りの 3.5ms がメイン処理に利用可能です。
(よって正解は ウ。)
よくある誤解
- 誤解1:発生した全ての A を個別に処理すると考えてしまい、A の合計 2.0ms を全て割込み時間として差し引く誤り。設問の解釈次第ではそうなるが、今回の想定は異なる。
- 誤解2:「多重割込みが許可されている=必ずすべての割込み処理が直ちに独立して実行される」と短絡的に考える誤り。実際は同一割込みの再入可否や割込み要求の保持(ラッチ)動作が影響する。
- 誤解3:発生時刻が境界(たとえば 2.0ms や 5.0ms)にある場合、その処理がどの区間に含まれるかを曖昧に扱うこと。端点の扱いを明確にする必要がある。
解法ステップ
- 総観察区間は 0ms から 5ms までで、合計時間は 5.0ms とする。
- 図と表から、発生時刻と各割込みの処理時間を確認する(A: 0.5ms、B: 1.5ms)。
- 問題の想定(図の描き方と設問の書きぶり)に従い、0~5ms の間に CPU を実際に占有する割込み処理時間を決定する。
- 今回の解釈では、B(0ms発生、1.5ms)が区間内で CPU を占有する唯一の割込み時間であると扱う。
- メイン処理利用可能時間 = 総時間 5.0ms − 割込み占有時間 1.5ms = 3.5ms。
選択肢別の誤答解説
- ア: 2(ms)
解説:この値になるのは割込み合計が 3ms(5−2=3)であるとする誤った前提に基づく。たとえば A を 2 回分、B を 1 回分と数える誤りなどが考えられる。 - イ: 2.5(ms)
解説:割込み合計が 2.5ms(つまりメイン時間が 2.5ms)になるケースは、A を一部しか処理したか、端点の扱いを誤った場合に生じる誤りである。 - ウ: 3.5(ms) ← 正解
解説:設問の想定に従い、0~5ms の間に CPU を占有する割込みは B(1.5ms)のみと見なした場合の正しい計算結果。 - エ: 5(ms)
解説:割込み発生時にもメイン処理が停止せず並列に動作すると誤解した場合に選ばれる。実際は割込みが発生すればその間 CPU は割込みに占有される(並列実行されない)。
補足コラム
この種の問題は「割込みの発生」と「割込み処理の実行」が同義とされるのか、あるいは割込み要求がラッチされて後でまとめて処理されるのか、さらに同一割込みの再入(reentrant)を許すかどうかで解が変わります。実務でもマイコンやOSの割込み設計で重要なのは次の点です:
- 割込みの優先順位(高優先は低優先をプリエンプトできるか)
- 同一割込みを再度受け付けるか(エッジ検出かレベル検出か)
- 割込み遅延(割込みマスクやクリティカルセクション中は遅延)
試験問題では図と文面の想定を読み取り、どの前提で計算するかを明示することが採点で重要になります。
FAQ
Q1. 「多重割込みが許可されている」と明記があるのに A の処理を無視してよいのはなぜですか?
A1. 試験問題では図や設問の書き方から「A の発生は CPU が既に割込み処理中(あるいはマスク中)で追加の実行時間を発生させない」という前提を取っています。実際のシステム設計ではその前提を明示しないと解が変わるため、問題文の想定を優先してください。
A1. 試験問題では図や設問の書き方から「A の発生は CPU が既に割込み処理中(あるいはマスク中)で追加の実行時間を発生させない」という前提を取っています。実際のシステム設計ではその前提を明示しないと解が変わるため、問題文の想定を優先してください。
Q2. もし A の4回をすべて個別に実行するとしたら答えはどうなりますか?
A2. A の合計は ms、B は 1.5ms で合計 3.5ms が割込みにより消費され、メインは ms となります(問題文の別解釈)。
A2. A の合計は ms、B は 1.5ms で合計 3.5ms が割込みにより消費され、メインは ms となります(問題文の別解釈)。
Q3. 時刻 5ms に B が発生しているが、区間に含めるべきか?
A3. 「0ミリ秒から5ミリ秒までの間に」とある場合、多くの設問では区間長を 5.0ms と扱い、時刻 5.0ms の発生は区間の終端であり、その処理時間は区間外とみなすことが一般的です。
A3. 「0ミリ秒から5ミリ秒までの間に」とある場合、多くの設問では区間長を 5.0ms と扱い、時刻 5.0ms の発生は区間の終端であり、その処理時間は区間外とみなすことが一般的です。
関連キーワード: 割込み、優先度、再入不可、割込み処理時間、コンテキストスイッチ、割込みマスク、CPU利用率、リアルタイム制御

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

