コピーするデータはすべてこれを経由するのでしょうか、それとももっと直接的な方法があるのでしょうか?
答え1
難しいですね! データは実際には CPU を通過しません。
データと重要な 1 と 0 はチップセット、または専用の I/O チップとメモリを通過しますが、ファイルをコピーする場合、コピーを実行するコマンドはプロセッサによって実行されます。
目の前に物体 (データ)、腕 (チップセット/I/O チップ)、脳 (CPU) があると想像してください。物体を動かすのに実際に脳を使うわけではなく、脳が腕に物体を動かすための「コマンド」を実行します。
答え2
CPU は、ソース ファイルを読み取って宛先ファイルに書き込むプログラムを実行する必要があります。
読み取られるデータは(通常)チャンク単位でメインメモリに読み込まれますが、実際には CPU を通過しません。
答え3
インテリジェント チャネルを備えたメインフレームでは、CPU はチャネルにコピーを実行するよう指示するだけです。非常に効率的で、CPU オーバーヘッドをほとんどかけずに高速で大規模なバックアップを実行できます。
残念ながら、インテリジェント チャネルがないため、CPU は次のようなループに陥ってしまいます。
各ファイル(dev1)に対して ファイルを作成します(dev2); ファイル内容をコピーします(dev1、dev2); 終わり;
多数の小さなファイル、特に同じディレクトリ内に多数のファイルがある場合を除いて、CPU オーバーヘッドはそれほど高くありません。通常、ファイル作成操作のオーバーヘッドが最も高くなります。ディスク間のコピーでは、各ディスクが既存のファイルとして扱われます。