Привет!
RedHair wrote:
> Вполне возможно, я чего не понимаю. Постараюсь объяснить, что я имею в виду.
> Представьте себе ситуацию: у вас есть некие данные в некоем файле. Допустим для вас они представляют собой расскз Тургенева. С физической точки зрения, это пресловутые нолики и единички.
> Что случится с вашим рассказом при записи на сильно фрагментированные диск? — он тоже будет фрагментированным.
На уровне диска — возможно,да, возможно нет. Не знаю, и не хочу знать.
На уровне работы с файлом для моей программы — однозначно нет.
> На физическом уровне фраза "возчик был невысокий, крепкого сложения" (точнее последовательность ноликов-единичек, ее представляющая) разорвется на (предположим) два куска "возчик был невы" и "сокий, крепкого сложения".
Да, ну и пусть себе. Именно так.
Могу еще один пример с твоим Тургеневым привести. Представь себе, что
книги у тебя нет, а я тебе рассказ вслух читаю (файл читается). Читаю я,
разумеется, последовательно, рассказ ты получишь непрерывный, а в
действительности я начало из одной книге прочитал, середину из другой
(неважно почему), конец вообще по памяти выдал (когда я учился, нас
заставляли наизусть заучивать последний абзац из "Отцы и дети"

. Для
меня (драйвера) Тургенев фрагментирован по двум книгам и моей памяти.
Для тебя (программы) непрерывен.
> Далее представим ситуацию, когда вы файл случайно затерли. И теперь, единственная для вас возможность (на уровне А) восстановит ваш файл — открыть ваш диск — CreateFile("\\.\C",....) и считывать оттуда куски информации пока не найдете свою фразу.
> Одна проблема — вы ее не найдете никогда- потому что физически она хранится разорвано.
Совершенно верно. Эта задача в общем случае не решается. То есть
восстановить файл в общем случае нельзя (в частных — очень даже можно, и
программ таких много). Нельзя потому, что информация о том, где он там
хранился (в каких кластерах) после стирания утеряна. Хотя сами кластеры
пока что не изменились (до новой записи в них, они же теперь свободные),
но мы не знаем, где они.
Хранения файла не непрерывным куском, а фрагментами — это плата за
удобство работы. Если файлы хранить непрерывными кусками, проблем больше
будет. Файлы создаются, удаляются, диск фрагментируется, и очень быстро
это приведет к тому. что на диске места свободного будет много, а взять
нельзя, так как нужного размера кусок не находится — очень много очень
маленьких участков. Ну и другая проблема — новый файл создается, какой у
него размер в конце концов будет — пока что неизвестно. Как место для
него резервировать ? А если он расти начнет, а дальше занято ?
Отсюда компромисс — файлы хранятся экстентами (кластерами и т.п.), а
если надо или хочется — можно их дефрагментировать. Но автоматически это
не делается.
> Мдаа... Сильно. а где можно про это прочитать? МСДН Дефрагментация — уже читала.
Если найдешь книгу "Соломон, Руссинович Внутренний мир Windows 2000" и
поймешь, что там написано (не обижайся

— для начала будет
достаточно. Структура FAT и NTFS там в общих чертах описана.
--
With best regards,
Pavel Dvorkin
Posted via RSDN NNTP Server 1.9 gamma