CPU が実行中のプロセス間で切り替えを行っていることは誰もが知っていますが、CPU が切り替えられている間やアプリケーションを使用しているときに中断が発生しないのはなぜでしょうか?
これはプロセス間の切り替えの速度が極めて速いためだと言えますが、実際に CPU のパフォーマンスに影響を与え、単一のアプリケーションで中断 (または中断) を経験するほどのプロセスがいくつあるのか、またそれが最新のオペレーティング システムでどのように現れるのか興味があります。
答え1
これはプロセス間の切り替えの速度が速いためだと言えるでしょう
おっしゃる通りです。しかし、マイクロプロセッサによって実行される操作は、連続的ではなく、個別のステップで実行されます。各クロック サイクルで、CPU はプログラム カウンタによって指定されたメモリの内容をフェッチします。次のクロック サイクルでは、命令をデコードするなどします。十分に速くなれば (気付くほど)、連続していると思われる音楽が実際にはしばらく再生され、その後停止し、再び再生されるなどしていることに気付くでしょう。
高速かつ複雑な獣切り替えのプロセスを超高速にするものは、短期スケジューラ (CPU スケジューラ) と呼ばれます。数ミリ秒ごとに呼び出され、ユーザーの観点からは有用な作業は何も行わないため、高速である必要があります。実装によって若干の違いがあるかもしれませんが、ほとんどすべてのスケジューラは、アクティブ、バックグラウンドなど、さまざまなクラスのプロセスに対して優先キューを維持します。
したがって、コンピューター上で何千ものプロセスが実行されていたとしても、そのうちユーザーと直接やり取りするのはほんのわずかです。スケジューラは、プロセスを切り替えるときにこの情報を考慮します。更新チェックのプロセスは待機できますが、リアルタイムの音楽ストリーミングは待機できないためです。
しかし、人間が中断を経験するほどCPUのパフォーマンスに影響を与えるプロセスが実際にどれくらいあるのか興味があります。
魔法の数字はなく、パフォーマンスに影響を与える要因は他にもたくさんあります (メモリ速度、サイズなど)。スケジューラのパフォーマンスが問題になる前に、メモリが不足すると思います。ブレークアウトとして現れる可能性があるのは、優先度の高い割り込みルーチンが呼び出され、長時間実行されている場合です。
楽しい事実: - システムでのユーザー エクスペリエンスを向上させるために (忘れていましたが)、スティーブ ジョブズは Apple のエンジニアに、ポインターが移動中に遅れないように、マウス割り込みに最高の優先度を割り当てるように指示しました。