ラウンドロビン方式はCPU時間をどう割り当てるのか
基本情報技術者試験 平成30年度秋期 午前 問18 / ソフトウェア › オペレーティングシステム
過去問にチャレンジ
スケジューリングに関する記述のうち,ラウンドロビン方式の説明として,適切なものはどれか。
- ア
各タスクに,均等にCPU時間を割り当てて実行させる方式である。
- イ
各タスクに,ターンアラウンドタイムに比例したCPU時間を割り当てて実行させる方式である。
- ウ
各タスクの実行イベント発生に応じて,リアルタイムに実行させる方式である。
- エ
各タスクを,優先度の高い順に実行させる方式である。
会話形式の解説
講師今回はタスクスケジューリング、つまり複数のタスクにCPUをどの順番でどれだけ使わせるかを決める方式の問題です。ラウンドロビン方式がCPU時間をどう配るかに注目してください。
受験者名前は聞いたことがありますが、ほかの方式と区別がついていません。優先度の高い順に実行する、という説明も当てはまりそうに見えてしまいます。
講師そこを一つずつ確かめましょう。ラウンドロビン方式では、実行できるタスクを待ち行列に並べ、決まった長さの時間ずつ順番にCPUを割り当てます。この時間枠をタイムクウォンタムと呼びます。この仕組みの中で、優先度を見ている部分はあると思いますか。
受験者並んだ順に同じ時間ずつ回すだけなら、優先度は見ていないですね。そうすると、優先度の高い順に実行するという説明は別の方式ということですか。
講師そのとおりです。優先度で実行順を決めるのは優先順位方式です。ラウンドロビン方式は優先度を見ずに時間枠を順番に回していきます。
受験者では、時間内に終わらなかったタスクはどうなるのですか。
講師待ち行列の末尾に戻って、次の順番を待ちます。全体としては、どのタスクにも同じ長さの時間枠が公平に行き渡ることになります。
受験者それなら、各タスクに均等にCPU時間を割り当てるという説明が合っていそうです。ターンアラウンドタイムに比例して割り当てる、という説明はどう考えればよいでしょうか。
講師割り当てる時間がタスクごとに変わる点で、時間枠が一定のラウンドロビン方式とは合いません。そもそもターンアラウンドタイムは処理を要求してから終わるまでの時間なので、CPU時間を割り当てる基準にはなりません。処理時間の長さでタスクを扱い分ける考え方は、処理時間順方式に近いものです。
受験者残りの、イベントが発生したらリアルタイムに実行させるという説明は、時間枠を順番に回す話が出てこないので違いますね。
講師はい。それはイベントドリブンプリエンプション方式、いわゆるリアルタイム方式の説明です。正解は、各タスクに均等にCPU時間を割り当てるという記述です。
受験者整理すると、ラウンドロビン方式は均等に順番、優先順位方式は優先度の高い順、イベントドリブンプリエンプション方式はイベントの発生に応じて実行、ということですね。
講師よくまとまっています。補足すると、ラウンドロビン方式は複数の利用者が同時に使うタイムシェアリングシステムに向いています。また、タイムクウォンタムを短くしすぎると切替えが増えてオーバーヘッドが大きくなり、長くしすぎると到着順に処理する方式に近づいて応答性が下がります。時間枠の長さの影響もあわせて押さえておきましょう。
まとめ
ラウンドロビン方式は、実行可能なタスクを待ち行列に並べ、一定のタイムクウォンタムずつ順番にCPUを割り当てるスケジューリング方式です。時間内に終わらなかったタスクは待ち行列の末尾に戻るため、各タスクに均等にCPU時間が行き渡ります。優先度の高い順に実行するのは優先順位方式、イベントの発生に応じて実行するのはイベントドリブンプリエンプション方式なので、混同しないようにしましょう。タイムクウォンタムは短すぎると切替えのオーバーヘッドが増え、長すぎると応答性が下がるため、適切な長さに決めることが大切です。
解答・解説
正解はアです
この問題のテーマ
タスクスケジューリング方式のうち、ラウンドロビン方式がどのようにCPU時間を割り当てるかを見分ける問題です。
解き方の考え方
ラウンドロビン方式では、実行可能なタスクを待ち行列に並べ、決まった長さの時間(タイムクウォンタム)ずつ順番にCPUを割り当てます。割り当てた時間内に終わらなかったタスクは待ち行列の末尾に戻り、次の順番を待ちます。つまり、タスクの優先度や処理時間を見ずに、どのタスクにも同じ時間枠を回していく方式です。この「均等・順番」という特徴を持つ記述を選べば正解にたどり着けます。
選択肢ごとの解説
- ○ア 各タスクに,均等にCPU時間を割り当てて実行させる方式である。均等にCPU時間を割り当てるという説明は、どのタスクにも同じ長さの時間枠を順番に与えるラウンドロビン方式の特徴と合っています。時間枠の中で終わらなかったタスクは列の後ろに回るため、全体として各タスクに公平にCPUが行き渡ります。
- ×イ 各タスクに,ターンアラウンドタイムに比例したCPU時間を割り当てて実行させる方式である。ターンアラウンドタイムに比例して時間を割り当てるという説明は、割り当てる時間がタスクごとに違う点で、時間枠が一定のラウンドロビン方式とは合いません。ターンアラウンドタイムは処理を要求してから終わるまでの時間なので、そもそもCPU時間を割り当てる基準にはなりません。処理時間の長さでタスクを扱い分ける考え方は、処理時間順方式に近いものです。
- ×ウ 各タスクの実行イベント発生に応じて,リアルタイムに実行させる方式である。イベントが発生したらすぐに実行させるという説明は、イベントドリブンプリエンプション方式(リアルタイム方式)のものです。時間枠を順番に回していく仕組みは含まれていないので、ラウンドロビン方式には当たりません。
- ×エ 各タスクを,優先度の高い順に実行させる方式である。優先度の高い順に実行させるという説明は、優先順位方式のものです。ラウンドロビン方式は優先度を見ずに順番に時間枠を回すので、この記述には当てはまりません。
補足
タイムクウォンタムを短くしすぎるとタスクの切替えが増え、その分のオーバーヘッドが大きくなります。反対に長くしすぎると、到着順に処理する方式に近づいて応答性が下がります。そのため、時間枠の長さを適切に決めることが大切です。
POINT
- ラウンドロビン方式は、一定のタイムクウォンタムずつ順番にCPUを割り当てる方式です。
- 時間内に終わらなかったタスクは待ち行列の末尾に戻されます。
- 優先度で実行順を決めるのは優先順位方式、イベントの発生に応じて実行するのはイベントドリブンプリエンプション方式です。
- 複数の利用者が同時に使うタイムシェアリングシステムに向いています。
