Operating-system-os-process-scheduling
オペレーティングシステム-プロセススケジューリング
定義
プロセススケジューリングは、CPUから実行中のプロセスを削除し、特定の戦略に基づいて別のプロセスを選択するプロセスマネージャーのアクティビティです。
プロセススケジューリングは、マルチプログラミングオペレーティングシステムの重要な部分です。 このようなオペレーティングシステムでは、一度に複数のプロセスを実行可能メモリにロードでき、ロードされたプロセスは時分割多重化を使用してCPUを共有します。
プロセススケジューリングキュー
OSは、プロセススケジューリングキューですべてのPCBを維持します。 OSはプロセス状態ごとに個別のキューを維持し、同じ実行状態のすべてのプロセスのPCBは同じキューに配置されます。 プロセスの状態が変更されると、PCBは現在のキューからリンク解除され、新しい状態キューに移動します。
オペレーティングシステムは、次の重要なプロセススケジューリングキューを維持します-
- ジョブキュー-このキューは、システム内のすべてのプロセスを保持します。
- Ready queue -このキューは、メインメモリに常駐し、実行を待機しているすべてのプロセスのセットを保持します。 新しいプロセスは常にこのキューに入れられます。
- デバイスキュー-I/Oデバイスが使用できないためにブロックされているプロセスがこのキューを構成します。
OSは異なるポリシーを使用して各キューを管理できます(FIFO、ラウンドロビン、優先度など)。 OSスケジューラーは、システム上のプロセッサーコアごとに1つのエントリのみを持つことができる実行可能キューと実行キューの間でプロセスを移動する方法を決定します。上の図では、CPUと統合されています。
2状態プロセスモデル
二状態プロセスモデルは、以下で説明されている実行状態と非実行状態を指します-
S.N. | State & Description |
---|---|
1 |
Running 新しいプロセスが作成されると、実行状態のようにシステムに入ります。 |
2 |
Not Running 実行されていないプロセスはキューに保持され、順番が実行されるのを待ちます。 キュー内の各エントリは、特定のプロセスへのポインタです。 キューは、リンクリストを使用して実装されます。 ディスパッチャの使用は次のとおりです。 プロセスが中断されると、そのプロセスは待機キューに転送されます。 プロセスが完了または中止された場合、プロセスは破棄されます。 どちらの場合でも、ディスパッチャはキューからプロセスを選択して実行します。 |
スケジューラー
スケジューラは、さまざまな方法でプロセスのスケジューリングを処理する特別なシステムソフトウェアです。 主なタスクは、システムに送信するジョブを選択し、実行するプロセスを決定することです。 スケジューラは3種類あります-
- 長期スケジューラ
- 短期スケジューラ
- 中期スケジューラ
長期スケジューラ
- ジョブスケジューラ*とも呼ばれます。 長期スケジューラは、処理のためにシステムに許可されるプログラムを決定します。 キューからプロセスを選択し、実行のためにメモリにロードします。 CPUスケジューリングのためにプロセスがメモリにロードされます。
ジョブスケジューラの主な目的は、I/Oバウンドやプロセッサバウンドなどのジョブのバランスの取れた組み合わせを提供することです。 また、マルチプログラミングの度合いも制御します。 マルチプログラミングの程度が安定している場合、プロセス作成の平均速度は、システムを離れるプロセスの平均出発速度と等しくなければなりません。
一部のシステムでは、長期スケジューラが利用できないか、最小限のものになる場合があります。 タイムシェアリングオペレーティングシステムには、長期スケジューラはありません。 プロセスが状態を新規から準備完了に変更すると、長期スケジューラが使用されます。
短期スケジューラ
- CPUスケジューラ*とも呼ばれます。 その主な目的は、選択した一連の基準に従ってシステムのパフォーマンスを向上させることです。 これは、プロセスの準備完了状態から実行状態への変更です。 CPUスケジューラーは、実行準備ができているプロセスの中からプロセスを選択し、それらの1つにCPUを割り当てます。
ディスパッチャとも呼ばれる短期スケジューラは、次に実行するプロセスを決定します。 短期スケジューラは、長期スケジューラよりも高速です。
中期スケジューラ
中期スケジューリングは*スワップ*の一部です。 メモリからプロセスを削除します。 マルチプログラミングの度合いを減らします。 中期スケジューラは、スワップアウトされたプロセスの処理を担当します。
実行中のプロセスは、I/O要求を行うと中断される場合があります。 中断されたプロセスは、完了に向かって進行することはできません。 この状態では、プロセスをメモリから削除し、他のプロセス用のスペースを確保するために、一時停止中のプロセスはセカンダリストレージに移動されます。 このプロセスは*スワップ*と呼ばれ、プロセスはスワップアウトまたはロールアウトされると言われています。 プロセスミックスを改善するには、スワップが必要になる場合があります。
スケジューラーの比較
S.N. | Long-Term Scheduler | Short-Term Scheduler | Medium-Term Scheduler |
---|---|---|---|
1 | It is a job scheduler | It is a CPU scheduler | It is a process swapping scheduler. |
2 | Speed is lesser than short term scheduler | Speed is fastest among other two | Speed is in between both short and long term scheduler. |
3 | It controls the degree of multiprogramming | It provides lesser control over degree of multiprogramming | It reduces the degree of multiprogramming. |
4 | It is almost absent or minimal in time sharing system | It is also minimal in time sharing system | It is a part of Time sharing systems. |
5 | It selects processes from pool and loads them into memory for execution | It selects those processes which are ready to execute | It can re-introduce the process into memory and execution can be continued. |
コンテキストスイッチ
コンテキストスイッチは、プロセス制御ブロック内のCPUの状態またはコンテキストを保存および復元して、後で同じ時点からプロセスの実行を再開できるようにするメカニズムです。 この手法を使用すると、コンテキストスイッチャーにより、複数のプロセスが単一のCPUを共有できます。 コンテキストスイッチングは、マルチタスクオペレーティングシステム機能の重要な部分です。
スケジューラーがCPUをあるプロセスの実行から別のプロセスの実行に切り替えると、現在実行中のプロセスの状態がプロセス制御ブロックに保存されます。 この後、次に実行するプロセスの状態が独自のPCBからロードされ、PC、レジスタなどの設定に使用されます。 その時点で、2番目のプロセスの実行を開始できます。
コンテキストスイッチは、レジスタとメモリの状態を保存および復元する必要があるため、計算負荷が高くなります。 コンテキストの切り替え時間を回避するために、一部のハードウェアシステムでは、2セット以上のプロセッサレジスタを使用しています。 プロセスが切り替えられると、後で使用するために次の情報が保存されます。
- プログラムカウンター
- スケジューリング情報
- ベースおよび制限レジスタ値
- 現在使用されているレジスタ
- 変更された状態
- I/O状態情報
- 会計情報