メイン処理,及び表に示す二つの割込みA,Bの処理があり,多重割込みが許可されている。
割込みA,Bが図のタイミングで発生するとき,0ミリ秒から5ミリ秒までの間にメイン処理が利用できるCPU時間は何ミリ秒か。
ここで,割込み処理の呼出し及び復帰に伴うオーバヘッドは無視できるものとする。
正答1
解説
正解は1です。
多重割込みが許可されているので、優先度の高い割込みAは、優先度の低い割込みBの処理中でも割り込めます。
メイン処理は、割込み処理がないときだけCPUを使えます。
表より、割込みAの処理時間は0.5ミリ秒(優先度高)、割込みBは1.5ミリ秒(優先度低)です。
図より、割込みAは1、2.5、3.5ミリ秒に、割込みBは0ミリ秒と5ミリ秒に発生します。
【計算】
0〜1ミリ秒は、割込みBの処理を1ミリ秒分実行します。
1ミリ秒に割込みAが発生し、1〜1.5ミリ秒は割込みAを処理します。
1.5〜2ミリ秒は、中断していた割込みBの残り0.5ミリ秒を処理します。
2〜2.5ミリ秒は、メイン処理が0.5ミリ秒使えます。
2.5〜3ミリ秒は、割込みAを処理します。
3〜3.5ミリ秒は、メイン処理が0.5ミリ秒使えます。
3.5〜4ミリ秒は、割込みAを処理します。
4〜5ミリ秒は、メイン処理が1ミリ秒使えます。
メイン処理の合計は、0.5+0.5+1=2ミリ秒です。
【選択肢別解説】
1:○ 割込みの処理時間を除くと、メイン処理が使えるのは合計2ミリ秒です。
2:× 2.5ミリ秒は、割込みBの残り0.5ミリ秒の処理を見落とした値です。
3:× 3.5ミリ秒は、割込みBの処理時間を数えていない値です。
4:× 5ミリ秒は、割込み処理を全く考慮しない値です。
【ポイント】
割込みの問題は、時間軸に沿って「いま何を処理しているか」を区間ごとに書き出すと確実です。
低優先度の処理が中断された場合は、その残り時間を後で必ず処理することに注意しましょう。