Доступ к файлам

feliks28

Как интересно происходит обращение к файлам с точки зрения компьютера?
Как поиск в базе данных или почти моментально?
Т.е. если утрируя есть мильон файлов, то для быстрого доступа к конкретному файлу следует разбить их на тысячу папок по тысяче файлов в каждой или пофиг? (1)
И еще интересно :
-скорость записи в конец файла зависит от размера файла? (2)
-Хард быстрее посыпется если на него писать, считывать с него или пофиг? (3)
Ну и еще какие-нибудь непрограмные мелочи такие?

artimon

Щас набегут всякие спецы
Ответ на первый вопрос: в зависимости от файловой системы.
В fat16/32 файлы в папке никак не сортируются и не индексируются. Поэто поиск происходит линейно и быстрее будет, если разложить файлы по папкам (фактически ты сам посттроишь дерево поиска).

maggi14

Информация о файлах записывается в file allocation table, как бы она ни называлась. Поиск идет по этой таблице.

Papazyan

Хорошие ФС вычисляют по названию файла хеш-значение и ищут по нему. Сортировать, вроде, никто не сортирует, это накладно.
Скорость записи тоже зависит от ФС. В хороших ФС не зависит от длины.
Про хард сказать не могу, сам вопрос какой-то странный.

Papazyan

А блин. Скорость работы естественно зависит от длины файла, просто в новых ФС это хорошо оптимизировано - номера блоков хранятся в дереве, и оперируют они на самом деле не блоками, а extents - непрерывными цепочками блоков, что уменьшает размер дерева.

feliks28

А как узнать хорошесть ФС? Какие ФС хорошие?
Вопрос (3) для того, чтобы если есть параметры сохраняемые в файлы, часть(не одна и та же) которых меняются, допустим, раз в секунду.
То нужно ли гемороиться с тем чтобы хранить изменения в памяти до какого-то момента, и потом записать все изменения разом, или можно сразу при изменении писать.

mirt1971

Об этом должна геммороиться ОС. Когда ты пишеш в файл OS пишет все в буфер. А потом сама по каким-то хитрым алгоритмам все это дело разруливает. Кстати поиск по именам файлов у всех нормальных FS уже давно логарифмический. И никаких списков FS не хранит. Сейчас это в основном B-деревья, а у понтовой reiser4 - "танцующие" деревья

Papazyan

XFS, ReiserFS, JFS, например. Они к тому же еще журналирующие.

sergey_m

Кстати поиск по именам файлов у всех нормальных FS уже давно логарифмический.
Не "поиск логарифмический", а время поиска зависит от кол-ва файлов логарифмически.

mirt1971

Мне было лень это набивать Разве смысл не тот же?

sergey_m

Вообще-то смысл "поиск логарифмический" можно понять как угодно. Например, что хэш функция логарифм.
Оставить комментарий
Имя или ник:
Комментарий: