talosのプログラミング教室

【基本・応用情報技術者】ラウンドロビン方式

スポンサーリンク

こんにちは。たろすです。

今回はスケジューリングの方式のひとつ、ラウンドロビン方式について説明をします。

スケジューリングの説明は以下の記事でしています。

https://talosta.hatenablog.com/entry/schedulingtalosta.hatenablog.com

ラウンドロビン方式

プロセスにCPUを割り当てられる時間(=タイムクォンタム)が決められており、タイムクォンタム分実行したら待ち行列の最後尾に並べる方式です。

ラウンドロビン方式は基本情報技術者試験応用情報技術者試験でよく問われます。

なぜかというと、他の方式と比べると複雑だからです。

なので例題を解きながら詳しく見ていきましょう。

例題

問題

タイムクウォンタムが2秒のラウンドロビン方式で処理されるタイムシェアリングシステムにおいて,プロセス1~3が逐次生成されるとき,プロセス2が終了するのはプロセス2の生成時刻から何秒後か。ここで,各プロセスはCPU処理だけで構成され,OSのオーバヘッドは考慮しないものとする。また,新しいプロセスの生成と中断されたプロセスの再開が同時に生じた場合には,新しく生成されたプロセスを優先するものとする。


プロセス 生成時刻 単独で処理された場合の時間
1 0秒後 5秒
2 3秒後 7秒
3 6秒後 5秒

ア.12
イ.14
ウ.16
エ.17

(出典:平成28年度 秋期 応用情報技術者試験 午前 問19)

解説

まず最初に生成時刻が0秒後のプロセス1が実行されます。

タイムクォンタムは2秒なので2秒間だけ実行されます。

f:id:talosta:20210529111525p:plain
待ち行列:プロセス1


しかし、プロセス1がタイムクォンタムを使い切った時点で他のプロセスはまだ生成されていません。

したがって、もう一度プロセス1が実行されます。

プロセス1を実行している間にプロセス2も生成されます。

f:id:talosta:20210529111841p:plain
待ち行列:プロセス2、プロセス1


プロセス2が生成されて待ち行列の先頭に並んでいるため、次はプロセス2が実行されます。

さらに、プロセス2がタイムクォンタムを使い切ると同時にプロセス3が生成されます。

f:id:talosta:20210529112623p:plain
待ち行列:プロセス1、プロセス2(、プロセス3)


問題文に「新しいプロセスの生成と中断されたプロセスの再開が同時に生じた場合には,新しく生成されたプロセスを優先するものとする」

とあるので、次はプロセス3が実行され、タイムクォンタムを使い切ると待ち行列の最後尾に並びます。

f:id:talosta:20210529113106p:plain
待ち行列:プロセス1、プロセス2、プロセス3


続いて、待ち行列の先頭のプロセス1が実行されます。

ただし、プロセス1の残り時間は1秒なので、1秒だけ実行されます。

f:id:talosta:20210529113735p:plain
待ち行列:プロセス2、プロセス3


後はプロセス2とプロセス3を交互に繰り返していきます。

f:id:talosta:20210529114039p:plain
待ち行列:プロセス3、プロセス2


f:id:talosta:20210529114417p:plain
待ち行列:プロセス2、プロセス3


f:id:talosta:20210529114542p:plain
待ち行列:プロセス3、プロセス2


f:id:talosta:20210529114704p:plain
待ち行列:プロセス2


f:id:talosta:20210529114831p:plain
待ち行列:なし


プロセス2の生成時刻は3、終了時刻は17なので答えは「イ.14」になります。

おわりに

今回はラウンドロビン方式について説明しました。

スケジューリング方式の中でも比較的問われやすいので覚えておきましょう。