Linuxオペレーティングシステムは、マルチタスクを有効にするために実行中のプロセスを切り替えます。
現在実行中のプロセスの実行を一時停止するタイミングと、次に実行するプロセスを決定するために使用されるアルゴリズムは何ですか?
答え1
最新のカーネルでは、完全に公平なスケジューラが使用されます(以前のカーネルのO(1)スケジューラを置き換えます)。
CFSは、実行中のプロセスによって費やされたCPU時間に基づいてスケジュールされたタスクをRed-Blackツリーに保存します。これにより、スケジューラは実行時間が最も短いプロセス(ツリーの左モードノードに保存されている)を効率的に選択できます。
ジョブを実行しようとするとツリーから削除され、実行すると新しく使用されたCPU時間に再追加されます。
長時間「スリープ」状態のプロセスはCPU時間をあまり使用しないため、自動的に優先順位が高くなります。
したがって、休止プロセスは、継続的に実行されるプロセスと同じ量のCPU時間を有するので、「プロセス」する。