Когда мы сохраняем файл в Windows - фактическое расположение файла на жестком диске является случайным или детерминированным?

Я хочу знать, когда мы пытаемся сохранить файл на жесткий диск, как ОС сохраняет файл на жесткий диск. Будут ли два компьютера с одинаковой конфигурацией и ТАКЖЕ ЖЕ ВНУТРЕННЕЕ СОСТОЯНИЕ сохранять файл в одном месте на жестком диске, или их адреса будут случайными?

2 ответа

Решение

Это в основном детерминистично - файловые системы используют различные алгоритмы, чтобы определить лучшее место для новых данных. Но это не возможно на 100% дублировать все внутреннее состояние, поэтому вы должны учитывать, что:

  • разные файловые системы (ext4, btrfs, NTFS...) используют разные алгоритмы распределения,

  • на которую также может влиять программа, выполняющая запись (например, файл, который медленно увеличивается до 100 МБ, иногда выделяется не так, как файл, созданный с помощью fallocate() с одновременным использованием 100 МБ),

  • а также другие программы, записывающие на диск одновременно, так как распределение файла B будет зависеть от того, был ли файл A уже записан или нет (весь детерминизм здесь исчезает, когда у вас многоядерная или многопроцессорная система);

  • размер и расположение существующих файлов;

  • размер и расположение удаленных файлов (например, в файловых системах с лог-структурой данные только передаются вперед)

  • различные типы дисков (при записи на твердотельные диски файловые системы могут гораздо меньше заботиться о фрагментации, чем о магнитных дисках);

  • физическое повреждение (если поврежден один сектор, файловая система может решить поместить весь файл в другое место, вместо того, чтобы просто пропустить этот один сектор);

И, наконец, даже если на обоих компьютерах-образцах есть копии исходного содержимого диска 1:1,

  • некоторые файловые системы могут делать случайный выбор, если это записано в алгоритме. Из быстрого grep кажется, что по крайней мере Ext4 использует случайный выбор как запасной вариант, когда все варианты равны.

Это зависит от файловой системы, реализации и внешних факторов.

  • Внутреннее состояние включает в себя абсолютно все о компьютере, то есть состояние процессора, данные в оперативной памяти, текущие данные на диске и как они размещены, ВСЕ внутри компьютера. Но есть и внешние факторы, такие как, например, неисправности диска, которые не зависят от состояния компьютера - вы должны принять их во внимание.

  • "Рандомизированное расположение", вероятно, также будет детерминированным. Компьютеры детерминированы. "Случайные" числа, используемые в информатике, в большинстве случаев являются псевдослучайными (и обычно это совершенно нормально, за очень немногими исключениями). Поэтому, даже если файловая система навязывает некоторую случайность, весьма вероятно, что она все равно будет детерминированной.

Другие вопросы по тегам