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


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


2
2018-06-22 10:48


Источник




Ответы:


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

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

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

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

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

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

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

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

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

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

4
2018-06-22 11:12





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

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

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


2
2018-06-22 11:20



Современные ОС забирают внутриъядерный PRNG из таких вещей, как вариации частоты процессора, тайминги диска или прерывания клавиатуры, которые не являются полностью детерминированными. Даже если у вас есть две идентичные системы, их RNG могут выдавать разные значения, потому что программа начала несколько циклов позже. - grawity