コピーしたすべてのデータがそれを通過するのですか、それとも別のより直接的な方法がありますか
プロセッサはアクティブで、USBで制御されていますが、Firewireでは制御されていません(そのカードには独自のCPUがあるため)
—
tobylane
コピーしたすべてのデータがそれを通過するのですか、それとも別のより直接的な方法がありますか
回答:
トリッキーなもの!データは実際にはCPUを通過しません。
データと重要な1と0は、チップセット、または専用のI / Oチップとメモリを通過しますが、ファイルをコピーする場合、コピーを実行するコマンドはプロセッサによって実行されます。
目の前にオブジェクト(データ)、腕(チップセット/ I / Oチップ)、脳(CPU)があると想像してください。オブジェクトを動かすために実際に脳を使用するのではなく、脳はオブジェクトを動かすために腕への「コマンド」を実行します。
interrupt
へのIOコマンドblock device
が完了するたびにCPUに通知することで役立ちます。その後、CPUはコピーの実行を続けます。実際、CPUが実行しているのはioctl
、chunks
(実際の名前)をコピーするためにデバイスドライバーとインターフェイスするカーネルコードを実行していることですDMA
。CPUも処理し、カーネルコード実行パースペクティブasynchronous IO
とはsync IO
少し異なります。
インテリジェントチャネルを備えたメインフレームでは、CPUは単にコピーを実行するようチャネルに指示します。非常に効率的で、CPUオーバーヘッドがほとんどない高速で大規模なバックアップが可能です。
残念ながら、インテリジェントチャネルがないため、CPUは次のようなループになります。
各ファイル(dev1); 行う createfile(dev2); copyfilecontent(dev1、dev2); 終わり;
CPUオーバーヘッドは、小さなファイル、特に同じディレクトリに多くのファイルがない限り、それほど高くありません。通常、ファイル作成操作のオーバーヘッドは最も高くなります。ディスクからディスクへのコピーは、各ディスクを既存のファイルとして扱うだけです。