情報処理試験を勉強していると、「ラウンドロビンって結局何?他のスケジューリング方式とどう違うの?」と混乱しがちです。この記事では、ラウンドロビン方式の意味・仕組み・試験での出題パターンを整理します。

対象試験と出題頻度

ラウンドロビンは、基本情報技術者・応用情報技術者で出題されるテーマです。

OS(オペレーティングシステム)のタスク管理分野に属し、「到着順方式」「優先度順方式」などとの違いを正確に区別できるかが問われます。

詳細をクリックして確認
対象試験:
基本情報技術者
応用情報技術者
出題頻度:
★★★☆☆
ランクC(応用)余裕があれば覚える

用語の定義

ラウンドロビン(Round Robin)とは、一言で言うと

 「各タスクに一定のCPU時間(タイムクォンタム)を順番に割り当て、未完了なら待ち行列の最後尾に回すスケジューリング方式

のことです。

イメージとしては、回転寿司のレーンです。

お客さん(タスク)は席に座って順番にお皿(CPU時間)が回ってきます。

1回で食べきれなかった(処理が終わらなかった)お客さんも、レーンが一周すればまた同じだけお皿を取れます。誰か1人だけが延々と食べ続けることはなく、全員に公平にお皿が配られる仕組みです。

📊 ラウンドロビンの基本情報

項目 内容
英語名 Round Robin
分類 タスクスケジューリング方式(プリエンプティブ方式の一種)
キーワード タイムクォンタム(タイムスライス)、待ち行列、均等割り当て
適するシステム タイムシェアリングシステム(TSS)

解説

複数のタスクが同時にCPUを使いたい場面では、「どのタスクにどれだけの時間CPUを渡すか」を決めるルールが必要です。このルールがタスクスケジューリングであり、ラウンドロビンはその代表的な方式の1つです。

動作の流れ

ラウンドロビンの処理手順は次の通りです。

OSが実行可能状態のタスクを待ち行列(キュー)で管理し、先頭のタスクにタイムクォンタム分だけCPUを割り当てます。制限時間内に処理が終わればそのタスクは完了、終わらなければキューの最後尾に戻されます。

次に先頭に並んでいるタスクが同じ時間だけCPUを使い、これを全タスクが完了するまで繰り返します。

ラウンドロビンの動作イメージ(タイムクォンタム = 2秒)

1
待ち行列:[A(5秒), B(3秒), C(2秒)] → Aに2秒割り当て
2
待ち行列:[B(3秒), C(2秒), A(残3秒)] → Bに2秒割り当て
3
待ち行列:[C(2秒), A(残3秒), B(残1秒)] → Cに2秒割り当て → C完了
4
待ち行列:[A(残3秒), B(残1秒)] → Aに2秒割り当て
5
待ち行列:[B(残1秒), A(残1秒)] → Bに1秒割り当て → B完了
6
待ち行列:[A(残1秒)] → Aに1秒割り当て → A完了

▲ 全タスクの合計処理時間は10秒。どのタスクも最大2秒ずつ公平にCPUを使用する

タイムクォンタムの長さが与える影響

タイムクォンタムの設定はシステム全体の効率を左右します。

短すぎるとタスク切替え(コンテキストスイッチ)が頻発してオーバーヘッドが増大します。逆に長すぎると、後ろで待つタスクの応答時間が悪化し、実質的に到着順方式と変わらなくなります。適切な長さを選ぶことが運用上の鍵です。

タイムクォンタム メリット デメリット
短い 各タスクの応答時間(レスポンスタイム)が良好になる コンテキストスイッチのオーバーヘッドが増大する
長い コンテキストスイッチの回数が減り、CPU利用効率が高まる 応答時間が悪化し、到着順方式に近づく

他のスケジューリング方式との比較

ラウンドロビンの特徴を正確に把握するには、他の方式と「何を基準にCPUを割り当てるか」で比較するのが近道です。

方式 CPU割り当ての基準 特徴
ラウンドロビン 到着順 × 一定時間で切替え 全タスクに均等にCPU時間を配分。TSSに最適
到着順(FCFS) 到着順に完了まで実行 処理時間の長いタスクが先に来ると後続が長時間待つ
優先度順 タスクの優先度 優先度の低いタスクが実行されない「飢餓状態」のリスクがある
処理時間順(SJF) 推定処理時間が短い順 平均待ち時間は最小だが、処理時間の見積もりが必要

では、この用語が試験でどのように出題されるか見ていきましょう。

💡 ラウンドロビンの核心を3行で

・各タスクにタイムクォンタム(一定のCPU時間)を順番に割り当てるスケジューリング方式
・未完了のタスクは待ち行列の最後尾に回され、再び順番を待つ
・全タスクに均等にCPUが配分されるため、タイムシェアリングシステムに適する


試験ではこう出る!

ラウンドロビンは、FE・APの午前問題でスケジューリング方式の選択問題や計算問題として繰り返し出題されています。

出題パターンは大きく2つに分かれます。

📊 過去問での出題実績

試験回 出題内容 問われたポイント
FE H30秋
午前 問18
ラウンドロビン方式の説明として適切なものを選ぶ問題 ・「各タスクに均等にCPU時間を割り当てる」が正解
・優先度順方式、イベントドリブン方式がひっかけ
AP H25秋
午前 問19
ラウンドロビン方式の説明として適切なものを選ぶ問題 ・「待ち行列の順にタイムクォンタムずつ処理し、未完了なら最後尾に回す」が正解
・静的優先順位方式の説明がひっかけ
AP H29秋
午前 問18
ラウンドロビン方式に関する記述として適切なものを選ぶ問題 ・「タイムシェアリングシステムに適している」が正解
・リアルタイムシステム向けという記述がひっかけ
AP H28秋
午前 問19
タイムクォンタム2秒のラウンドロビンで、プロセスが終了する時刻を求める計算問題 ・待ち行列の状態遷移を追ってターンアラウンドタイムを算出
・プロセスの生成タイミングに注意

📝 IPA試験での出題パターン

パターン1:「ラウンドロビン方式の説明を選べ」
4つのスケジューリング方式の説明文が並び、ラウンドロビンに該当するものを選ぶ形式。ひっかけとして「優先度の高い順に実行」(優先度順方式)、「イベント発生に応じてリアルタイムに実行」(イベントドリブン方式)、「処理時間に比例してタイムクォンタムを変更」(誤った記述)が紛れ込む。キーワードは「均等にCPU時間」「待ち行列の最後尾」。

 

パターン2:「ターンアラウンドタイムの計算」
AP H28秋のように、複数プロセスの生成時刻と処理時間が与えられ、特定のプロセスが完了する時刻を計算させる形式。待ち行列の状態を1ステップずつ追う必要がある。

 

パターン1は定義を覚えていれば即答できます。パターン2は手を動かして待ち行列の変化を追う練習をしておけば確実に得点できます。


【確認テスト】理解度チェック

ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。


Q. タスクスケジューリングに関する記述のうち、ラウンドロビン方式の説明として最も適切なものはどれでしょうか?

  • A. 各タスクに優先度を付け、実行中のタスクより高い優先度のタスクが到着した場合に、実行中のタスクを中断して切り替える方式である。
  • B. 各タスクを待ち行列の順にタイムクォンタムずつ処理し、終了しないときは待ち行列の最後尾に回す方式である。
  • C. 各タスクの推定処理時間を比較し、処理時間が最も短いタスクから順に実行する方式である。

正解と解説を見る

正解:B

解説:
ラウンドロビン方式は、実行可能状態のタスクを到着順に管理し、タイムクォンタム(一定のCPU時間)ずつ順番に処理する方式です。制限時間内に完了しなかったタスクは待ち行列の最後尾に戻されます。

選択肢Aはプリエンプティブな優先度順方式(静的優先順位方式)の説明です。ラウンドロビンではタスクに優先度を付けず、全タスクに均等なCPU時間を配分します。選択肢Cは処理時間順方式(SJF:Shortest Job First)の説明です。推定処理時間を基準にする点がラウンドロビンとは根本的に異なります。


よくある質問(FAQ)

Q. ラウンドロビンと「DNSラウンドロビン」は同じものですか?

名前は同じ「ラウンドロビン」ですが、対象が異なります。本記事で扱ったのはOSのタスクスケジューリングにおけるラウンドロビンで、CPUの使用権をタスク間で順番に回す方式です。一方、DNSラウンドロビンはロードバランシングの手法の1つで、DNSが同一ドメインに対して複数のIPアドレスを順番に返すことでアクセスをサーバ間に分散します。試験では文脈から「OS」の話か「ネットワーク」の話かを読み取ってください。

Q. ラウンドロビンは「プリエンプティブ方式」と「ノンプリエンプティブ方式」のどちらですか?

プリエンプティブ方式に分類されます。プリエンプティブとは「OSがタスクの実行を強制的に中断できる」ことを意味します。ラウンドロビンではタイムクォンタムの経過時にOSがタイマー割込みでタスクを中断し、次のタスクに切り替えます。一方、ノンプリエンプティブ方式(到着順方式など)は、実行中のタスクが自発的にCPUを手放すまで待つ必要があります。

Q. 実務のOSでもラウンドロビンがそのまま使われていますか?

純粋なラウンドロビンだけを採用しているOSは現在ほぼありません。LinuxのCFS(Completely Fair Scheduler)のように、公平性を軸にしつつも優先度や実行時間の実績を加味した複合的なスケジューラが主流です。ただし「同一優先度のタスク群の中でラウンドロビンを適用する」という形で部分的に使われるケースは多く、基本概念としての重要性は変わりません。

Q. 試験の計算問題でタスクの到着時刻がバラバラな場合、どう解けばいいですか?

タイムライン上に「どの時刻にどのタスクが待ち行列に加わるか」を書き出すのが確実です。タイムクォンタムの区切りごとに待ち行列の状態を更新し、新たに到着したタスクをキューの末尾に追加してから次のタスクを取り出します。AP H28秋 午前問19がまさにこのパターンで、プロセスの生成時刻がずれているため、待ち行列への追加タイミングを正確に把握することが正解への鍵です。