web-dev-qa-db-ja.com

あるUSBディスクから別のUSBディスクにコピーすると、プロセッサは何をしますか?

私がコピーしたすべてのデータはそれを通過しますか、それとも別のより直接的な方法がありますか?

21
Felix Dombek

トリッキーなもの!データは実際にはCPU自体を通過しません。

データと重要な1と0は、チップセット、または専用のI/Oチップとメモリを通過しますが、ファイルをコピーする場合、コピーを実行するコマンドはプロセッサによって実行されます。

あなたの前にある物体(データ)、あなたの腕(チップセット/ I/Oチップ)、そしてあなたの脳(CPU)を想像してみてください。あなたは実際にあなたの脳を使って物体を動かすのではなく、あなたの脳はあなたの腕に「コマンド」を実行して物体を動かします。

31
William Hilsum

CPUは、ソースファイルを読み取ってから宛先ファイルを書き込むプログラムを実行する必要があります。

読み取られたデータは(通常)チャンクでメインメモリに読み込まれますが、実際にはCPUを通過しません。

5
ChrisF

インテリジェントチャネルを備えたメインフレームでは、CPUはチャネルにコピーを実行するように指示するだけです。非常に効率的で、CPUオーバーヘッドがほとんどない高速で大規模なバックアップが可能です。

残念ながら、インテリジェントチャネルがないため、CPUは次のようなループになります。

ファイルごと(dev1); do 
 createfile(dev2); 
 copyfilecontent(dev1、dev2); 
 end;

小さなファイルがたくさんある場合、特に同じディレクトリにたくさんのファイルがある場合を除いて、CPUのオーバーヘッドはそれほど高くありません。通常、ファイルの作成操作のオーバーヘッドが最も高くなります。ディスクからディスクへのコピーは、各ディスクを既存のファイルとして扱うだけです。

4
BillThor