多重割込みがあるときのCPU時間の求め方
基本情報技術者試験 令和元年度秋期 午前 問13 / コンピュータ構成要素 › プロセッサ
過去問にチャレンジ
メイン処理,及び表に示す二つの割込みA,Bの処理があり,多重割込みが許可されている。割込みA,Bが図のタイミングで発生するとき,0ミリ秒から5ミリ秒までの間にメイン処理が利用できるCPU時間は何ミリ秒か。ここで,割込み処理の呼出し及び復帰に伴うオーバーヘッドは無視できるものとする。

- ア
2
- イ
2.5
- ウ
3.5
- エ
5
会話形式の解説
講師図の矢印は、割込みが発生した時刻です。まず、0〜5ミリ秒の間に各割込みがCPUを何ミリ秒使うか確かめましょう。
受験者Bは0ミリ秒に始まりますが、1ミリ秒でAが発生します。Bはそこで終わるのですか。
講師終わりません。優先度の高いAを先に処理し、Aの終了後にBの残りを処理します。Bが使う時間は合計1.5ミリ秒です。
受験者中断されても、Bの残りの処理時間は消えないのですね。Aは何回分を数えますか。
講師5ミリ秒より前に、Aは1、2.5、3.5ミリ秒の3回発生します。1回0.5ミリ秒なので、合計1.5ミリ秒です。
受験者AとBで1.5ミリ秒ずつ、割込み処理は合計3ミリ秒です。5ミリ秒から引くと、メイン処理は2ミリ秒使えます。
講師そのとおりです。2ミリ秒が正解です。では、2.5ミリ秒という値は合いますか。
受験者メイン処理が2.5ミリ秒なら、割込み処理には2.5ミリ秒しか残りません。必要な3ミリ秒より0.5ミリ秒足りません。
講師そうです。3.5ミリ秒は、Aの1.5ミリ秒だけを引いた値で、Bの処理時間が抜けています。5ミリ秒は割込みを一切引いていない値です。
受験者5ミリ秒ちょうどにもBが発生しています。その分は数えなくてよいのですか。
講師今回は0〜5ミリ秒に使える時間を求めます。5ミリ秒ちょうどに発生するBの処理時間は、この区間に含めません。
まとめ
多重割込みでは、優先度の高い処理が低い処理を中断しても、低い処理の残り時間は消えません。0〜5ミリ秒にAは3回発生し、合計1.5ミリ秒、Bも1.5ミリ秒CPUを使います。したがって、メイン処理に残る時間は5−(1.5+1.5)=2ミリ秒です。5ミリ秒ちょうどに発生するBの処理時間は含めません。
解答・解説
正解はアです
この問題のテーマ
多重割込みが起きたとき、指定された区間でメイン処理に残るCPU時間を求める問題です。
解き方の考え方
図の矢印は割込みの発生時刻を示しています。Aは1、2.5、3.5ミリ秒に発生し、各0.5ミリ秒、Bは0ミリ秒に発生して計1.5ミリ秒処理されます。Bの処理中に優先度の高いAが発生すると、Bは中断し、Aの終了後に残りを処理します。0〜5ミリ秒で割込みが使う時間を合計し、区間の長さから引きます。
選択肢ごとの解説
- ○ア 22ミリ秒という値が正解です。Aの合計は0.5×3=1.5ミリ秒、Bは1.5ミリ秒なので、メイン処理が使える時間は5−(1.5+1.5)=2ミリ秒です。
- ×イ 2.52.5ミリ秒をメイン処理に割り当てると、割込みに割り当てた時間は5−2.5=2.5ミリ秒になります。図表のAとBが使う合計3ミリ秒より0.5ミリ秒少ないため、合いません。
- ×ウ 3.53.5ミリ秒は、区間の長さからAの1.5ミリ秒だけを引いた値です。0ミリ秒に発生したBもCPUを1.5ミリ秒使うので、この値にはなりません。
- ×エ 55ミリ秒は区間全体の長さです。この間にAとBの処理が実行されるため、メイン処理が区間全体を使うことはできません。
POINT
- 割込みの矢印は処理の開始と終了ではなく、発生した時刻を示します。
- 優先度の高い割込みが処理中に発生すると、低い方の処理を中断して先に実行します。
- 中断された処理の残り時間も、区間内で実行されればCPU使用時間に含めます。
- 5ミリ秒ちょうどに発生するBの処理時間は、0〜5ミリ秒の区間には含めません。
