DBデータベーススペシャリスト試験 午前Ⅰ
平成24年度春期 データベーススペシャリスト 午前Ⅰ 問7
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題

選択肢
- ア19
- イ20
- ウ21
- エ22
解き方のヒントを見る
資源ごとの時間の流れを追う
処理完了時間を問う問題では、各タスクがどの時点でどの資源を使っているかを時間軸上で整理することが出発点になります。問題文に示された条件を読み取り、自分で状態の推移を記録しながら確かめていきましょう。
この問題で問われていること
問われているのは、複数のタスクが資源を分け合う状況で、ある時点ごとに各資源を誰が使っているかを正確に把握できるかどうかです。条件の読み落としがないよう、時刻ごとの状態を一つずつ確認する姿勢が求められます。
視点
資源ごとに時間を横軸にとった帯を用意し、各区間で何が動いていて何が待っているかを書き込むと、並行して進む処理の関係が見えやすくなります。担当が切り替わる条件は、一般論で決めつけず、問題に示された前提に従って判断することが大切です。
確認ポイント
- 各資源について、時刻ごとに使用中のタスクと待っているタスクを記録できているか
- 状態が変わるきっかけとなる時点を、問題に示された条件から漏れなく拾えているか
- 記録した推移の中で、問われている時刻がどの時点に当たるかを確認したか
正解と解説を見る
正解
エ
解説
CPUは1個で、I/Oも同時に1タスクしか使えない条件で、高優先度タスクを優先して時刻を追います。高優先度タスクは19ミリ秒で終わりますが、低優先度タスクはI/OとCPUを待つ時間があるため、最後のCPU処理が22ミリ秒に終わります。正答はエです。
前提の整理
公式問題文は「CPUは1個であり,I/Oの同時動作はできない」としています。これは、二つのタスクが同時にCPUを使えないこと、また同時にI/Oを使えないことを意味します。一方のタスクがCPUを使い、もう一方のタスクがI/Oを使うことはできます。二つのタスクが同じ資源を必要とするときは、優先度の高いタスクが先に使うものとして時刻を追います。
高優先度タスクの時系列
高優先度タスクは待ちなく実行されます。CPU 0〜2ミリ秒、I/O 2〜9ミリ秒、CPU 9〜12ミリ秒、I/O 12〜16ミリ秒、CPU 16〜19ミリ秒の順です。終了時刻は、2ミリ秒+7ミリ秒+3ミリ秒+4ミリ秒+3ミリ秒=19ミリ秒です。
低優先度タスクの時系列
低優先度タスクは、高優先度タスクのCPU処理が終わった2ミリ秒からCPUを2〜4ミリ秒使います。この間、高優先度タスクはI/Oを使っており、CPUとI/Oは並行して動いています。次のI/O(3)は、I/Oが空く9ミリ秒まで待ち、9〜12ミリ秒に実行します。続くCPU(2)は、高優先度タスクがI/Oへ移って空いたCPUで12〜14ミリ秒に実行します。次のI/O(2)は、高優先度タスクがI/Oを使い終える16ミリ秒まで待ち、16〜18ミリ秒に実行します。最後のCPU(3)は、高優先度タスクがCPUを使う16〜19ミリ秒の後、19〜22ミリ秒に実行します。
結論
全タスクの終了時刻は、低優先度タスクの最後のCPU処理が終わる時刻です。19ミリ秒+3ミリ秒=22ミリ秒なので、経過時間は22ミリ秒でエが正答です。19ミリ秒は高優先度タスクだけが終わる時刻です。20ミリ秒と21ミリ秒は、上の条件で求めた時系列のどの終了時刻とも一致しません。
選択肢ア
これは不正解だよ。19ミリ秒は、高優先度タスクがCPU(2)→I/O(7)→CPU(3)→I/O(4)→CPU(3)を待ちなしで進めて終わる時刻(2+7+3+4+3=19ミリ秒)と同じ値だよ。でもこの時点では、低優先度タスクの最後のCPU(3)がまだ残っているんだ。それが19〜22ミリ秒に実行されるから、全タスクが終わるまでの経過時間にはならないよ。
選択肢イ
これは不正解だよ。20ミリ秒は、公式の条件で時刻を追った結果と合わないよ。低優先度タスクの2回目のI/Oは、高優先度タスクが12〜16ミリ秒にI/Oを使っているから、16〜18ミリ秒になるよ。最後のCPU(3)も、高優先度タスクがCPUを使う16〜19ミリ秒の後なので19〜22ミリ秒になるんだ。この待ちを反映すると、終了は22ミリ秒だよ。
選択肢ウ
これは不正解だよ。21ミリ秒も、公式条件で描いた時系列と一致しないよ。低優先度タスクの最初のI/O(3)は、高優先度タスクが2〜9ミリ秒にI/Oを使っているから、9〜12ミリ秒まで待たされるよ。最後のCPU(3)は高優先度タスクが終わる19ミリ秒の後にしか実行できないから、終了時刻は19+3=22ミリ秒になるよ。
選択肢エ(正解)
これは正解だよ。CPUは1個で、I/Oも同時に1タスクしか使えず、高優先度タスクが優先される条件で時刻を追うよ。高優先度タスクは0〜19ミリ秒で待ちなく終わるんだ。低優先度タスクはCPUが2〜4、I/Oが9〜12、CPUが12〜14、I/Oが16〜18、CPUが19〜22ミリ秒になるよ。最後の処理が22ミリ秒に終わるから、経過時間は22ミリ秒だよ。
学習のポイント
CPUとI/Oは並行して動けますが、同じ資源は同時に1タスクしか使えません。この区別をもとにタイムチャートを描いて待ち時間を求めます。
出典:独立行政法人 情報処理推進機構(IPA)平成24年度春期 データベーススペシャリスト試験 午前Ⅰ 問7(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針