タスクスケジューリングのうち、複数の対象やタスクに対して、順番に、かつ公平に機会や処理を割り当てる方式(持ち回り・総当たり)のことです。
サーバーへのアクセスを複数のコンピューターに順番に振り分ける負荷分散(ロードバランシング)や、CPUの処理時間をタスクに均等に割り当てるスケジューリングの方式です。
この前、テレビを見ていたら織田信長の長篠の戦いの三段撃ちは、3人で役割分担なのではなく、横1列の射撃線の空いたところに射撃準備できた奴が順番に射撃に入る戦法だった、という新説が出ていました。これラウンドロビンですね!
これまでの三段撃ちの疑問点
装填時間の問題: 火縄銃の装填には当時20〜30秒ほどかかり、当時の訓練されていない兵士が戦闘中に綺麗に列を入れ替えて組織的に動くのは現実的に困難でした。
新しい長篠の戦いのイメージ
基本情報技術者試験の用語で整理すると、信長の戦術は以下のようなイメージと言えます。
- タスクの割り当てと処理
CPU=射撃ライン(陣地)
プロセス=鉄砲兵(射撃準備ができた兵士)
タイムクォンタム(時間割り当て)=射撃・装填のサイクル
従来言われていた「三段撃ち(厳密な交代)」だと、決められた順番で処理を回す固定的なラウンドロビンという感じですが、ラウンドロビン戦術は「実行可能状態(射撃準備完了)になった兵士から順にCPU(射撃ライン)を割り当てて処理を流す」という、非常に効率の良い動的なスケジューリングに見えますね。

デッドロック(弾切れや装填待ち)の回避: 誰か一人が撃ち尽くして「装填中(ブロッキング状態)」になっても、別のプロセス(別の兵士)がすぐに処理(射撃)を実行できるため、全体としてのスループット(弾幕の密度)が低下しません。
オーバーヘッドの削減: 「列を入れ替える」という複雑な制御(オーバーヘッド)を排除し、各兵士が「撃てる状態なら即座に実行する」という自律的な判断に委ねることで、システムの応答速度を最大化しているとも解釈できます。