Как работает копирование и вставка больших файлов?

Как работает копирование и вставка больших файлов?

Мне любопытно узнать, как компьютеры выполняют «копирование» и «вставку» больших папок. Я читал, что копирование и вставка текста между различными процессами или одним и тем же процессом достигается путем сохранения содержимого в оперативной памяти и последующего копирования его оттуда в указанное место.

Итак, как компьютерные инструкции протекают при копировании папки размером, скажем, 10 ГБ на машину с 2 ГБ ОЗУ и 4 ГБ максимальной виртуальной памяти? Отличается ли копирование файлов от копирования текста.

Думаю, это простой вопрос, но любые ссылки или идеи приветствуются.

решение1

Буфер обмена не обязательно должен содержать весь файл. Когда вы копируете файл (или файлы), в буфер обмена помещается только его путь. Он также помечается как файл — буфер обмена отслеживает тип его содержимого, например, простой текст, форматированный текст, файл, изображение, текст Word и т. д. Вот почему вы не можете, например, открыть изображение в Paint, нажать Ctrl+ C, а затем вставить его в каталог — потому что вы скопировали изображение, а каталоги содержат файлы, а не изображения.

Когда вы вставляете совместимый контент (т. е. файл(ы) и/или папку(и)) ​​в каталог, какое-то приложение будет обрабатывать операцию копирования/перемещения. По умолчанию это будет процесс explorer(тот же, который отвечает за отображение меню «Пуск» и всех окон проводника), но некоторые приложения могут заменить его. [1]

Что произойдет дальше, зависит от того, что вы делаете:

  • Если выперемещение файла в другой каталог на том же разделе, он не будет физически перемещен на диске, будет обновлен только его путь [2] .
  • Если выперемещение файла на другой раздел, он будет разделен на куски одинакового размера [3] , которые будут скопированы один за другим, затем исходный файл будет удален. Слишком маленькие куски замедлят процесс, слишком большие куски будут потреблять больше памяти.
  • Точно то же самое произойдет, когда выкопирование файла(неважно, тот же это раздел или нет), за исключением того, что исходный файл не будет удален.
  • Запись на внешнее хранилище(как USB-накопители) не работает именно так [4] , и я не уверен, что именно тогда происходит. Я предполагаю, что это не непрерывный процесс по частям, а что-то еще происходит каждые несколько частей (связанное с буфером?). Если кто-то что-то знает об этом, не стесняйтесь редактировать.

Аннотации:

[1] НапримерТераКопия, что является хорошей усовершенствованной заменой окна копирования.

[2]. Физическая структура файлов на жестком диске не похожа на структуру каталогов - она ​​плоская и вся иерархическая информация хранится в отдельной части раздела. Как именно это делается, зависит от файловой системы (например, см.МФТ). Этот информационный блок содержит всю информацию о местоположении файлов и т. д. Поэтому, когда вы перемещаете файл внутри одного раздела, нет необходимости перемещать его физически — необходимо обновить только информацию о пути.

[3]. Не буквально, на жестком диске ничего не будет разделено. Программа, которая управляет процессом копирования, будет работать так, как будто есть несколько отдельных фрагментов, но исходный файл останется нетронутым. Он чисто виртуальный.

[4]. Вы можете увидеть это при использовании TeraCopy: «предсказанный прогресс» не работает как на фиксированных дисках, вместо этого «реальный прогресс» догоняет его, затем «предсказанный прогресс» расширяется и т. д. В окне копирования по умолчанию в Explorer также наблюдаются сбои USB.

Связанный контент