Я хочу знать, когда мы пытаемся сохранить файл на жесткий диск, как ОС сохраняет файл на жесткий диск. Будут ли два компьютера с одинаковой конфигурацией и ТАКЖЕ ЖЕ ВНУТРЕННЕЕ СОСТОЯНИЕ сохранять файл в одном и том же месте на жестком диске, или их адреса будут случайными?
2 ответа
Это в основном детерминистично - файловые системы используют различные алгоритмы, чтобы определить лучшее место для новых данных. Но невозможно на 100% продублировать все внутреннее состояние, поэтому вы должны учитывать, что:
разные файловые системы (ext4, btrfs, NTFS ...) используют разные алгоритмы распределения,
на что также может влиять программа, выполняющая запись (например, файл, который медленно увеличивается до 100 МБ, иногда выделяется не так, как файл, созданный с помощью fallocate () с одновременным использованием 100 МБ),
а также другие программы, записывающие на диск одновременно, так как распределение файла B будет зависеть от того, был ли файл A уже записан или нет (весь детерминизм здесь исчезает, когда у вас многоядерная или многопроцессорная система);
размер и расположение существующих файлов;
размер и расположение удаленных файлов (например, в файловых системах с лог-структурой данные только передаются вперед)
различные типы дисков (при записи на твердотельные диски файловые системы могут гораздо меньше заботиться о фрагментации, чем о магнитных дисках);
физическое повреждение (если поврежден один сектор, файловая система может решить поместить весь файл в другое место, а не просто пропустить этот один сектор);
И, наконец, даже если оба примера компьютеров имеют копии 1:1 исходного содержимого диска,
- некоторые файловые системы могут делать случайные выборы, если это записано в алгоритме. Из быстрого grep кажется, что по крайней мере Ext4 использует случайный выбор как запасной вариант, когда все варианты равны.
Это зависит от файловой системы, реализации и внешних факторов.
Внутреннее состояние включает в себя абсолютно все о компьютере, то есть состояние процессора, данные в ОЗУ, текущие данные на диске и как они расположены, ВСЕ внутри компьютера. Но есть и внешние факторы, такие как, например, неисправности диска, которые не зависят от состояния компьютера - вы должны принять их во внимание.
"Рандомизированное размещение", вероятно, также будет детерминированным. Компьютеры детерминированы. "Случайные" числа, используемые в информатике, в большинстве случаев являются псевдослучайными (и обычно это совершенно нормально, за очень немногими исключениями). Таким образом, даже если файловая система навязывает некоторую случайность, весьма вероятно, что она все еще будет детерминированной.