0

私の質問は、CPUサイクルがラウンドロビン方式で異なるプロセスに与えられていますか?

問題の文脈は:-

私はWindowsシステムを持っていて、メディアプレーヤーで音楽を再生する、ワードパッドで入力する、メモ帳で入力する、ブラウザでサーフィンするなど、これらの10の異なるプロセスを開いたとしましょう.

同時にワードパッドで入力しているときに、音楽が中断することなくバックグラウンドで再生されるため。音楽プレーヤーに継続的な CPU サイクルが与えられるのはなぜだろうか。私の理解では、OS はラウンド ロビン方式で異なるプロセス間で CPU サイクルをローテーションしていますが、この切り替えは速すぎて、エンド ユーザーは音楽の中断を見つけることができません (実際には中断されています)。

4

3 に答える 3

1

単純なラウンド ロビンは、一連のプロセス (スレッド) 間でコンピューティング リソースを共有する方法ですが、Windows で使用される方法ではありません。各スレッドには、静的優先度と動的優先度があります。は、実行する優先度が最もscheduler高いスレッドを選択し、実行するタイムスロットを与えます。スレッドがタイムスロットを完全に消費した場合は、スケジューラによって予防的に実行からスワップアウトされます。または、スレッドがそれ以上何もすることがない場合 (たとえば、待機中など)、スレッドは自発的に残りのタイムスロットをシステムに戻す場合があります。 IO操作の終了のため)。

あなたの特定の質問には、音の連続再生を生み出す別のことがあります。バッファリングです。メディア プレーヤーは、事前にメディアからデータを読み取り、再生するためにハードウェアのキューに入れます。そのため、ハードウェアは常に事前にデータをバッファリングしておく必要があります。そうしないと、サウンドが中断されます。現在、私たちのコンピューターは、かなりの負荷がかかっていても、必要なストリームをハードウェアに供給するのに十分強力です。

昔は、一度に多くのアプリを実行し、システムがディスクからプロセスをスワップインおよびスワップアウトし始めた場合 (OS の観点からは、メディア プレーヤーに実行する機会を与えることよりも重要なことです)、次のことができます。あなたの音楽は沈黙の隙間で演奏されました。

于 2013-12-25T08:29:32.510 に答える
0

a) CPU がサウンド カードのバッファを埋め、CPU が他のことをしている間にバッファから再生します。したがって、CPU は常にサウンド カードを気にする必要はありません。

b) プロセス間の切り替えはミリ秒またはマイクロ秒の時間範囲で行われるため、人間としては気付かないでしょう。

c) 何もする必要のないプロセス (キーを待っているワードパッドなど) は、OS にアイドル状態であることを通知するため、OS は、何かが発生する (キーが押されるか、ウィンドウが移動されて、再描画する必要があります)。

d) CPU は高速です。1 秒あたり 10 個のキーを入力できたとしても、CPU は 1 キーあたり 100 マイクロ秒以上かかることはありません (実際にははるかに少ないですが、この値を使用すると計算が簡単になります)。 CPU に対して 1ms/s の間。したがって、入力中に CPU 時間の 0.1% を使用することになります。タスク マネージャーの CPU 使用率が上がることさえありません。

于 2013-12-25T08:19:15.357 に答える