6

Почему копирование файлов в одном разделе значительно быстрее, чем в другом?

3 ответа3

3

Я не думаю, что копирование на тот же раздел происходит быстрее. Если вы имеете в виду "движение", то посмотрите на ответ Даниэля Шварца, он прекрасно объясняет, что происходит.

Однако, если вы имеете в виду настоящую операцию копирования, я не ожидал бы больших различий в производительности, если операция происходит на том же диске. Могут быть некоторые различия из-за времени, которое будет занимать операция размещения головок для жестких дисков (очевидно, не для твердотельных накопителей), но я не ожидаю, что влияние этого будет очень большим. Возможно, есть и некоторые различия из-за разных стратегий кэширования ОС, но и этот эффект, я не ожидаю, будет очень большим.

Что имеет большое значение, так это копирование с одного диска на другой. Если контроллер работает быстро, это намного быстрее, чем копирование на тот же диск, потому что любой диск должен только читать или записывать, а не выполнять обе операции вместе (Исключением из этого правила могут быть небольшие данные, поскольку hdd- и кеш контроллера).

Обратите внимание, что ОС может делать ссылки на файлы. В этом случае данные не будут скопированы, а будет создана только новая ссылка на данные (файл также не будет занимать удвоенное пространство). Это очень быстро. Но если вы копируете свои файлы с помощью проводника или стандартных команд оболочки, файлы будут скопированы и не будут связаны.

1

Эта проблема возникает только при копировании данных на и с одного жесткого диска. Данные считываются, кэшируются и записываются обратно, но прежде чем они смогут начать запись, головка чтения / записи должна быть перемещена в пустое пространство. Наличие источника и места назначения в отдельных разделах обеспечит физическое разделение соответствующих секторов диска. Головка чтения / записи будет постоянно двигаться вперед и назад. Часто вы можете услышать это.

Пока голова движется, данные не могут быть переданы. Наличие источника и места назначения в одном разделе обычно означает меньше времени, затрачиваемого на перемещение головы, и, следовательно, более эффективную передачу файлов.

0

Давайте сравним с двумя операциями. Сначала копируем файл из одного раздела в другой:

  1. Источник открыт.

  2. Пункт назначения открыт / создан.

  3. Пространство выделено для пункта назначения.

  4. Каждый байт данных файла считывается из источника и записывается в место назначения.

  5. Файл назначения закрыт.

  6. Дескриптор исходного файла отключен при закрытии.

  7. Дескриптор исходного файла закрыт, отменяя связь с файлом.

  8. Поскольку это (как правило) последняя ссылка на данные исходного файла, данные исходного файла должны быть свободными.

Теперь скопируйте файл из одной папки в другую на том же разделе.

  1. Источник открыт.

  2. Новая жесткая ссылка создается на исходный файл в каталоге назначения.

  3. Дескриптор исходного файла отключен при закрытии.

  4. Дескриптор источника закрыт, не связывая его. Исходный файл по-прежнему связан с целевым каталогом, поэтому не нужно менять свободное место.

Обратите внимание, что шагов меньше, а также ни один из них не требует касания каких-либо данных файла или даже отображения свободного пространства.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .