我复制的所有数据都要经过它吗?还是还有其他更直接的方法?
答案1
有点棘手!数据本身实际上并不经过 CPU。
数据和关键的 1 和 0 会经过芯片组或专用 I/O 芯片和内存,但是,当您复制文件时,执行复制的命令会由处理器运行。
想象一下,你面前有一个物体(数据)、你的手臂(芯片组/I/O 芯片)和你的大脑(CPU)。你实际上并没有用大脑来移动物体,而是你的大脑向你的手臂发出“命令”来移动物体。
答案2
CPU 必须运行读取源文件然后写入目标文件的程序。
读取的数据(通常)会以块的形式读入主存储器,但实际上并不经过 CPU。
答案3
在具有智能通道的主机上,CPU 只需告诉通道进行复制即可。非常高效,并且能够以很少的 CPU 开销快速进行大型备份。
不幸的是,我们没有智能通道,所以 CPU 最终陷入类似如下的循环:
对于每个文件(dev1);执行 创建文件(dev2); 复制文件内容(dev1,dev2); 结尾;
除非有大量小文件,尤其是同一目录中有大量文件,否则 CPU 开销不会那么高。创建文件操作通常具有最高开销。磁盘到磁盘复制只是将每个磁盘视为预先存在的文件。