14

シングルコアでハイパースレッディングのないプロセッサは一度に 1 つのプロセスしか処理できないという本を読んでいたので、PC で非常に多くの操作を行い、いくつかのバックグラウンド プロセスが常にそこにあるという疑問が生じます。音楽プレーヤーがしばらくの間停止しないのはなぜですか。CPUがかなり高速であることは知っていますが、それでも音楽プレーヤーは通常、小さな休憩なしで連続して音楽を再生します(これは観察可能です)。誰でもこの動作を明確にできますか?

4

3 に答える 3

14

1) ハイパースレッディングのないシングルコア CPU は、あなたが言うように、一度に 1 つのプロセスしか実行できません。複数のプロセスはコンテキスト スイッチングによって処理されます。つまり、CPU は 1 つのプロセスを実行し、次のプロセスに切り替えてから次のプロセスに切り替え、最初のプロセスに戻ります。特定のプロセスがスケジュールされる頻度は、プロセスの優先度が 1 つであるさまざまな要因に依存します。(以前は、グリッチなどを避けるために優先順位を上げて WinAmp を実行することがしばしば必要でした。現在では、CPU がはるかに高速であるため、これは必要ありません)。

2)では、これを念頭に置いて、グリッチなしで素晴らしいサウンドが得られるのはなぜでしょうか?

オーディオを処理するとき、CPU はサンプルをサウンド カードのハードウェア バッファまたは RAM に配置することによって、サウンド デバイスにサンプルを供給します。サウンド プロセッサは、CPU から直接データを取得するのではなく、これら 2 つのバッファのいずれかからサンプルを読み取ります。バッファにサンプルがある限り、CPU が別の処理を行っていなくても問題ありません。

ハードウェア バッファ サイズの詳細は、サウンド カードによって異なります。一部の (古い) サウンド カードにはサウンド バッファがまったくなく、代わりに RAM が機能します。

サンプルの不足は、バッファ アンダーランと呼ばれます。最新のコンピューターでも、これは発生する可能性があります。たとえば、オーディオ プレーヤーの実行中に負荷の高いプロセスを開始すると、CPU が時間内に切り替えることができず、サウンド フィードのグリッチやギャップがはっきりと聞こえます。

于 2012-09-07T14:12:32.793 に答える
0

これは、プリエンプティブ マルチタスキングを行うオペレーティング システムによるものです。実際、このプロセスは非常に短い時間中断されており、人間が気付くほど長くはありません。もう 1 つの理由は、オーディオ カードに再生バッファがあり、データがチャンクで供給されている間、継続的に再生できることです。そのため、カードにデータを供給するプロセスが非常に短い時間中断されている間でも、再生は引き続き行われます

于 2012-09-07T14:10:22.343 に答える
-1

これは、オペレーティング システムのスケジューラによって処理されます。

スケジューラは、各プロセスにタイム スライス (おそらく数ミリ秒) を割り当て、その時間の間、プロセスが必要なことを実行できるようにします。割り当てられる長さは、OS で使用されるアルゴリズム (つまり、短期スケジューリング、長期スケジューリングなど) によって決定されます。これに気付かない理由は、CPU が非常に高い周波数 (つまり 1GHz) で動作できるため、シングル コア/スレッドでのマルチタスクがユーザーに透過的になるためです。

http://en.wikipedia.org/wiki/Scheduling_(コンピューティング) http://web.cs.wpi.edu/~cs3013/c07/lectures/Section05-Scheduling.pdf

于 2012-09-07T14:23:22.470 に答える