Почему это занимает больше времени, скажем, 10 минут при копировании файла, но при удалении того же файла это занимает гораздо меньше времени, это займет 10-20 секунд.
6 ответов
Когда вы копируете файл, каждый бит или байт должны быть переданы или перемещены.
Для операции удаления все, что нужно сделать, - пометить заголовок каждого кластера как "удаленный". Файл не поврежден, он просто скрыт от операционной системы. Именно поэтому удаленные файлы так небезопасны, нужно просто найти программное обеспечение, которое будет игнорировать заголовок, в котором говорится, что файл был удален, и файлы можно легко прочитать.
При удалении файла большинство операционных систем помечают файл как удаленный, но фактически не удаляют данные с жесткого диска. Это позволяет быстро удалять, так как ОС просто устанавливает один флаг и не трогает какие-либо данные.
При копировании файла данные фактически должны быть продублированы, чтобы скопировать файл. Это означает, что ОС сначала должна прочитать данные, а затем записать их в другое место, что составляет 2 операции, по сравнению с установкой флага для удаления, который является всего одним. Эти 2 операции также занимают больше времени, так как чтение и запись не являются мгновенными.
Комментарий Дэвида Шварца дает наиболее сжатую метафору:
По той же причине чтение книги занимает больше времени, чем выбрасывание ее в мусорное ведро.
Это потому, что когда вы удаляете файл, он просто исчезает из вашего окна в проводнике Windows. Но на самом деле файл никуда не денется. Он будет храниться там до тех пор, пока новые данные будут скопированы в это место. (Вот почему все программы восстановления способны найти удаленные файлы.) Но перемещение / копирование файла на самом деле требует большого количества процессов, таких как выборка данных из источника и запись данных в новое место. Оба эти местоположения не могут быть последовательными ячейками памяти. Жесткий диск хранит данные там, где доступно свободное место. Таким образом, он должен искать все содержимое источника от распределенной области до места, где имеется большая область свободного пространства.
Файл состоит из ряда атрибутов, таких как имя, местоположение, доступ и т.д. И т.д.
Когда вы копируете файл, ваша система должна: сначала
- Создать место для нового файла
- Сделайте новую запись в каталоге (запишите его местоположение и т.д.)
- Прочитать содержимое файла для копирования
Это три шага, которым должна следовать ОС.
С другой стороны, когда вы удаляете файл, ОС просто обязана искать названный файл и удалять его.
При копировании файла ОС должна создать новый файл с теми же значениями, что и оригинал. Этот процесс копирования файла требует сбора необходимых данных из источника, а затем создания нового ресурса с теми же значениями.
С другой стороны, при удалении файла ОС просто удаляет соответствующую ссылку на этот файл. Этот процесс требует меньше времени, чем процесс копирования.