大文件的复制和粘贴如何工作

大文件的复制和粘贴如何工作

我很好奇计算机如何执行大型文件夹的“复制”和“粘贴”。我读到过,不同进程或同一进程之间的文本复制和粘贴是通过将内容保存到 RAM 中,然后从那里复制到目标位置来实现的。

那么,在具有 2 GB RAM 和 4 GB 最大虚拟内存的机器上复制 10 GB 的文件夹时,计算机指令如何流动。文件复制与文本复制不同吗?

我认为这是一个基本问题,但任何链接或见解都值得赞赏。

答案1

剪贴板不必保存整个文件。当您复制文件(或多个文件)时,只有其路径被放入剪贴板。它还被标记为文件 - 剪贴板会跟踪其内容的类型,如纯文本、格式化文本、文件、图像、Word 文本等。这就是为什么您不能在 Paint 中打开图像,然后按Ctrl+C将其粘贴到目录中 - 因为您复制的是图片,而目录保存的是文件,而不是图片。

当你将兼容内容(即文件和/或文件夹)粘贴到目录中时,某些应用程序将处理复制/移动操作。默认情况下,它将是该explorer进程(负责显示“开始”菜单和所有文件资源管理器窗口的进程),但某些应用程序可能会取代它。[1]

现在发生的情况取决于你正在做的事情:

  • 如果你是将文件移动到同一分区上的另一个目录,它不会在磁盘上物理移动,只会更新其路径[2]
  • 如果你是将文件移动到另一个分区,它将被分割成相同大小的块[3],然后逐个复制,然后删除原始文件。太小的块会减慢进程,太大的块会消耗更多内存。
  • 同样的事情也会发生在你复制文件(无论是否是同一个分区),但原始文件不会被删除。
  • 写入外部存储器(例如 USB 驱动器)的工作方式并不完全如此[4],我不确定到底发生了什么。我猜这不是一个连续的逐块处理过程,而是每隔几个块就会发生其他事情(与缓冲区有关?)。如果有人对此有所了解,请随时编辑。

注释:

[1].例如泰拉复制,这是一个很好的高级复印窗口替代品。

[2]。硬盘上的物理文件结构与目录结构不同 - 它是平面的,所有层次结构信息都存储在分区的单独部分中。具体如何实现取决于文件系统(例如,请参阅骨髓纤维化)。该信息块保存有关文件位置等的所有信息。因此,当您在一个分区内移动文件时,无需物理移动它 - 只需更新路径信息。

[3]。并非字面意义上的分割,硬盘上不会分割任何东西。处理复制过程的程序将像有多个单独的块一样工作,但原始文件将保持不变。它纯粹是虚拟的。

[4]。使用 TeraCopy 时,您可以看到这一点:“预测进度”不像在固定驱动器上那样工作,而是“实际进度”赶上它,然后“预测进度”扩大等等。Explorer 的默认复制窗口也会出现 USB 故障。

相关内容