2008-09-17 37 views

答えて

20

ラウンドロビンスケジューリング

あなたは100人のパーティでホストされている場合は、ラウンドロビン・スケジューリングを使用すると、ゲストあたり1分(固定額)を費やすことを意味します。あなたは各ゲストを1つずつ行き、100分後に各ゲストと1分を過ごしたでしょう。 Wikipediaの詳細。

優先度に基づいて(つまり、最も重要な人が最初に)、先着順に、最早に期限を守るように(つまり、一番早く退出する人物)など、他の多くの種類のスケジューリングがあります。スケジューリングアルゴリズムのためにグーグルで開始するかチェックアウトするscheduling at Wikipedia

0

ラウンドロビンは、時間が優先順位のないジョブ間で均等に分割される単純なスケジューリングアルゴリズムです。

たとえば、5つのプロセスが稼働している場合、各プロセスは、別のプロセスが実行される前に1/5時間単位で実行されます。通常、ラウンドロビンはOSに実装するのが簡単です。

3

こちらの記事やウィキペディアの記事でも、ラウンドロビンスケジューリングについては本質的に定期的なタイムスライシングが含まれています。これは非常に一般的ですが、ラウンドロビンスケジューリングとタイムスライスはではなく、と全く同じものだと思います。確かに、タイムスリップが意味をなさないようにするには、各タスクにローテーションするときにラウンドロビンのスケジューリングが暗黙のうちに行われますが、タイム・ライティングを行わずにラウンドロビン・スケジューリングを行うことができます。つまり、ラウンドロビンローテーションの同じ優先順位の各タスクは、リソースブロック条件に到達するまで実行され、ローテーション内の次のタスクが実行されるまで実行されます。換言すれば、等しい優先度のタスクが存在する場合、再スケーリングされた点はではなく、時間先取りである。

上記の考えは、実際にはWind RiverのVxWorksカーネルの場合に具体化されています。プライオリティスキーム内では、各優先度のタスクはラウンドロビンを実行しますが、カーネルでその機能を特に有効にしなければタイムライン化しません。この柔軟性の理由は、有界時間内にブロックに実行されることが既に分かっているタスクをタイムスライスするオーバーヘッドを避けるためです。

したがって、タイムベースベースのスケジューリングはラウンドロビン方式のスケジューリングを意味しますが、ラウンドロビン方式のスケジューリングでは、時間ベースのタイムスリップは不要です。

7

タイムスリッティングは、実際のラウンドロビンスケジューリングシステムAFAIKに固有のものです。

ある

は、ラウンドロビンローテーションで同じ優先順位で各タスクが、彼らが到達するまで実行を許可することができます:私は、次のラウンドロビンスケジューリングであることをInSciTekジェフの意味合いに反対

ローテーション中の次のタスクに進む前のリソースブロック条件。

これはラウンドロビンとは考えられません。これは実際にプリエンプティブスケジューリングです。ただし、ラウンドロビンスケジューリングとプリエンプションが両方とも有効な場合(ラウンドロビンがデフォルトで無効になっている場合)、VxWorksはラウンドロビンとプリエンプティブスケジューリングの両方の要素を持つスケジューリングアルゴリズムを持つことができます。ラウンドロビンスケジューリングを有効にする方法は、kernelTimeSliceにゼロ以外の値を指定することです。

私はこの声明に同意しない:

したがって

、ベースのスケジューリングをタイムスライシングは、ラウンドロビンスケジューリングを暗示しながら、ラウンドロビンスケジューリングが等しい時間ベースのタイムスライシングを必要としません。

あなたは同じ時間を必要としないことは間違いありません。プリエンプションはそれに悩まされる可能性があります。実際にVxWorksでは、ラウンドロビンスケジューリング中にタスクがプリエンプトされた場合、タスクが再び制御を取得すると、タスクは割り当てられた残りの時間実行されます。

InSciTek Jeff(私はコメント特権がありません)に編集を編集 はい、私は明らかにそれをうまく表現していませんでしたが、タスクのロック/割り込みの無効化を指していました。あなたは2番目のコメントで私を先制しました(ハ!)。私はラウンドロビンスケジューリングがタイムスライスなしで存在できると考えているという、より顕著な点について議論することを望みます。それとも、時間軸に基づいたタイムスライスを意味するのでしょうか?私は前者には同意するが後者には同意する。私は学びたいと思っています。ありがとう。ジェフに向け

EDIT2:

ラウンドロビンは、タイムスライシングなしでは存在できます。これは、kernelTimeSliceが無効(ゼロ)のときにVxWorksで起こることとまったく同じです。

私はこの声明に同意しません。ラウンドロビンスケジューリングの見出しでthis documentセクション2.2.3を参照してください。

ラウンドロビンスケジューリングは、同じ 優先度ですべてのタスクに CPUの公正な配分を達成するために、時間 スライシングを使用しています。同じ優先度の タスクのグループ内の各タスクは、定義された間隔またはタイムスライスに対して を実行します。 ラウンドロビンスケジューリングは、 kernelTimeSlice()を呼び出すことによって有効になります。 は、タイムスライスのパラメータまたは の間隔をとります。 [...]ラウンドロビン スケジューリングが有効になっていて、実行中のタスクに対してプリエンプション が有効な場合、 システムティックハンドラは、 タスクのタイムスライスカウントをインクリメントします。

タイムスライシングは、ラウンドロビンスケジューリングに固有のものです。それ以外の場合は、CPU制御を放棄するタスクに依存しており、ラウンドロビンスケジューリングはこれを解決するためのものです。

+0

VxWorksではプリエンプションをオフにすることはできません。これは、より高い優先度のタスクが実行可能になると、より低い優先度のスレッドをPREEMPTするので、本質的である。プリエンプションはタイムスライスとは関係なく、CPUを明示的に生成することなくスレッドに割り込むことができるような状況になります。 –

+0

まあ、誰かが非常にリテラルになった場合、VxWorksにはプリエンプションが内在しています。あなたが割り込みを無効にしたり、スケジューラをロックしたりしないと仮定します。 –

+0

RE編集:ラウンドロビンはタイムスリップなしで存在できます。これは、kernelTimeSliceが無効(ゼロ)のときにVxWorksで起こることとまったく同じです。 –

0

Actaully、あなたはプリエンプティブスケジューリングとラウンドロビンと混同しています。 Infact RRはプリエンプティブスケジューリングの一部です。

+0

そうではありません。 RRは、実行可能なタスク間で実行時間を分散する方法です。事前スケジューリングは、タスクが任意のポイントで中断され得るという事実を特徴とする。 RRは協調的スケジューリングでも使用することができ、RRには他の選択肢がある(例えば、優先度ベース)。 –

+0

ウィリアム・スタリングス(William Stallings)によれば、部分的に時間的に先取りしている。 – trollster

1

意見。私たちは2つのメカニズムを相互に絡み合っているようです。 OPの元のアサーションを「マルチタスキング・オペレーティング・システムのコンテキスト」と仮定すると、

1 - ラウンドロビン・スケジューラは、常に循環キュー内の次のアイテムをスケジュールします。

2 - スケジューラがスケジューリングを実行するために制御を取り戻す方法は、独立しており、無関係です。

2の最も一般的な方法は、リソースを待っている時間スライス/収穫ですが、他の方法があることに注意しています。最初のMacがタイムスライスを利用していなかったと誤解されていない場合は、リソースを待っている自発的な収量/収量を使用しています(20歳以上の脳細胞は間違っていることがあります)。

0

ラウンドロビンスケジューリングは、時間の共有(量子化)(CPUが1つのプロセスに与えた最大時間)にも基づいています。キュー内では、複数のプロセス(別名バースト時間を完了するために異なる時間を必要とする)があり、CPUはそれらをすべて処理しなければならないため、量子値に基づいてすべてのプロセスに等しい時間を与えるプロセス間の切り替えが維持されます。このタイプのスケジューリングは、ラウンドロビンスケジューリングと呼ばれます。 ラウンドロビンスケジューリングを簡単に理解するために、このシンプルなビデオをチェックアウトしてください。https://www.youtube.com/watch?v=9hw-_qJ55K4

関連する問題