Многое будет зависеть от того, какой тип файловой системы вы используете (а также от того, как ОС взаимодействует с ней).Поведение файловой системы NTFS в Windows может отличаться от поведения файловой системы ext3 в Ubuntu для того же набора логических операций.
В целом, однако, большинство современных файловых систем определяют файл как последовательность указателейна блоки на диске.Существует минимальный размер блока, который описывает наименьший выделяемый блок (обычно в диапазоне от 512 байт до 4 Кбайт), поэтому файлам, размер которых меньше этого размера или не является точным кратным этому размеру, будет выделено определенное количество дополнительного пространства.
Так что же происходит, когда вы выделяете 10 МБ файл «А»?Файловая система резервирует блоки размером 10 МБ (возможно, даже с учетом нескольких дополнительных блоков в конце для размещения любых незначительных изменений, внесенных в файл или его метаданные) для содержимого файла.В идеале эти блоки должны быть смежными, как в вашем примере.Когда вы редактируете «А» и уменьшаете его, файловая система освобождает часть или все (скорее всего, все, так как в большинстве случаев редактирование «А» предполагает повторную запись всего содержимого «А» на диск, поэтому нет особых причин дляфайловая система предпочитает хранить «A» в том же физическом местоположении, а не записывать данные в новое место где-либо еще на диске) блоков, выделенных для «A», и обновлять свою ссылку, чтобы включить любые новые блоки, которые были выделены, если это необходимо,
С учетом вышесказанного, в типичном случае и с использованием современной файловой системы и ОС, я ожидаю, что ваш пример создаст следующее конечное состояние на диске ('b' и 'a' представляют дополнительные байты, выделенные для 'B'и' A ', которые не содержат каких-либо значимых данных):
xxxxxxxxxxxxxxxBBBBBBBBBBBBBBBBBBAAAAAAaaxxxxxxxxxxxxxxxxxxxxxx
Но реальные результаты, конечно, будут различаться в зависимости от файловой системы, ОС и, возможно, других факторов (например, других факторов (использование фрагментации данных SSD становится неактуальным, потому что любой раздел диска может быть доступен с очень низкой задержкой и без штрафов за поиск, но в то же время становится важным минимизировать циклы записи, чтобы устройство не изнашивалось преждевременно, поэтомув этом случае ОС может предпочесть оставить «А» на месте в максимально возможной степени, чтобы минимизировать число секторов, которые необходимо перезаписать).
Таким образом, краткий ответ: «это зависит».