変動するプロセス到着時間に合わせて最適化されたラウンドロビンスケジューリング
ラウンド ロビン (RR) は、各プロセスにクォンタムと呼ばれる固定タイム スライスが割り当てられるプリエンプティブ CPU スケジューリング アルゴリズムです。到着時間がゼロの標準的なラウンド ロビンとは異なり、このバリアントは異なる時間に到着するプロセスを処理するため、レディ キューが動的に変化するため、スケジューリングがより複雑になります。
プリエンプティブ スケジューリングでは、実行中のプロセスが中断され、レディ キューに戻されることがあります。ラウンド ロビンは、各プロセスに均等な CPU 時間を与えることで公平性を確保し、対話型システムの良好な応答時間を維持しながら飢餓を防ぎます。
異なる到着時間でのラウンドロビンの動作
プロセスの到着時間が異なる場合、アルゴリズムは次の手順に従います。
-
プロセスは到着時間に基づいて準備完了キューに入ります
-
CPU は、クォンタム期間中に最初に利用可能なプロセスを実行します
-
プロセスがクォンタム内で完了すると、終了します。
-
完了していない場合は、準備完了キューの最後に移動します
-
新しい到着者は準備の列に加わり、順番を待ちます
-
コンテキストの切り替えにより、プリエンプトされたプロセスの状態が保存されます
主な機能
-
飢餓を防ぐ すべてのプロセスは最終的に CPU 時間を取得します
-
公平なスケジューリング すべてのプロセスの均等な時間量
-
優れた応答時間 インタラクティブなリアルタイム システムに適しています
-
コンテキスト切り替えのオーバーヘッド クォンタムが小さいほど、スイッチング コストが増加します
例 1 量子時間 =2
到着時間とバースト時間が異なる 3 つのプロセスを考えてみましょう。
ガントチャート?ラウンドロビン (量子 =2) P1 P2 P3 P1 P2 P3 0 2 4 6 8 9 14
ステップバイステップの実行
平均時間の計算
平均所要時間 =(8 + 8 + 12) / 3 =9.33 単位
平均待ち時間 =(4 + 5 + 5) / 3 =4.67 単位
例 2 量子時間 =4
より大きな量子サイズの場合:
ガントチャート?ラウンドロビン (クォンタム =4) P2 P3 P1 P2 P3 P1 0 4 8 12 15 20 24
平均所要時間 =(22 + 15 + 19) / 3 =18.67 ユニット
平均待ち時間 =(14 + 8 + 10) / 3 =10.67 単位
結論
異なる到着時間によるラウンド ロビン スケジューリングにより、動的なプロセスの到着を処理しながら、公平な CPU 割り当てが提供されます。量子サイズはパフォーマンスに大きく影響しますか?クォンタムが小さいと応答時間は向上しますが、コンテキスト切り替えのオーバーヘッドが増加します。一方、クォンタムが大きいと公平性は低下しますが、スループットは向上します。
-
強く接続されたグラフ
有向グラフでは、1つのコンポーネントの頂点の各ペアの間にパスがある場合、強く接続されていると言われます。 このアルゴリズムを解決するには、まず、DFSアルゴリズムを使用して各頂点の終了時間を取得し、次に転置されたグラフの終了時間を検索します。次に、頂点をトポロジカルソートの降順で並べ替えます。 入力と出力 Input: Adjacency matrix of the graph. 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 Output: Following are strongly connected components i
-
データ構造の最大ヒープへの挿入
ここでは、バイナリ最大ヒープデータ構造から要素を挿入する方法を説明します。最初のツリーが次のようになっていると仮定します- 挿入アルゴリズム insert(heap, n, item) − Begin if heap is full, then exit else n := n + 1 for i := n, i > 1, set i := i / 2 in each iteration, do