プログラムのCPU実行時間が300ミリ秒、入出力時間が600ミリ秒、その他のオーバヘッドが100ミリ秒の場合、ターンアラウンドタイムを半分に改善するには、入出力時間を現在の何倍にすればよいか。
- ア 1/6
- イ 1/4
- ウ 1/3
- エ 1/2
プログラムのCPU実行時間が300ミリ秒、入出力時間が600ミリ秒、その他のオーバヘッドが100ミリ秒の場合、ターンアラウンドタイムを半分に改善するには、入出力時間を現在の何倍にすればよいか。
解説:
ターンアラウンドタイムは「CPU実行時間」「入出力時間」「その他のオーバヘッド」を合計した、処理に関わる時間の総計となるので、与えられた情報をもとに、現状のターンアラウンドタイムを算出する。
$${300 + 600 + 100 = 1000 ミリ秒}$$
この、1000msのターンアラウンドタイムを半分(= 500 ミリ秒)としたいので、それを踏まえて実現すべき「入出力時間」を求めていく。
CPU時間・オーバヘッドは変えないので、以下の計算で求める。
$$ \begin{aligned}500 &= 300 + 改善後の入出力時間 + 100 \\\ 改善後の入出力時間 &= 500 - 300 - 100 \\\ 改善後の入出力時間 &= 100 ミリ秒\end{aligned} $$
問題では、元の入出力時間を「何倍」にすれば良いかを問われているので、600ms → 100ms が何倍になるかを求めて回答する。
600ms → 100ms だと、元の値から6分の1になった計算になるが、「元の値の6分の1=元の値の1/6倍」と言い換えられるので、正解はアの 1/6 となる。