totoro
> А под таблицу не выделяет? Из чего таблица-то состоит, не из ячеек ли? :)
Таблица файловой системы очевидно не хранит по ячейке на каждое возможное имя файла, потому что их "бесконечно" много. Но это никак не ограничивает юзера в произвольным выборе имени файла)
Зачем тогда хранить пустые ячейки для участков пространства, где ничего нет?
Eugene
> Зачем тогда хранить пустые ячейки для
> участков пространства, где ничего нет?
Потому что пустая ячейка сейчас не значит пустая ячейка навсегда. В неё в любую секунду может что-нибудь прилететь из других ячеек.
Вы играли когда-нибудь в трёхмерные игры?
Например, в такой игре как fallout 4 можно стрелять ядерными снарядами и попадать ими в летающие винтокрылы. При этом ячейка, где ядерный снаряд попал в винтокрыл, могла быть абсолютно пустой.
Eugene
> Таблица файловой системы очевидно не хранит по ячейке на каждое возможное имя файла
Это зависит от внутреннего устройства файловой системы, но при любом раскладе таблица резервируется заранее заданного размера, рассчитанного на конечное кол-во записей, и при необходимости расширяется.
iw4nna.rock
> Потому что пустая ячейка сейчас не значит пустая ячейка навсегда. В неё в любую секунду может что-нибудь прилететь из других ячеек.
То, что файла по имени "аааааа213231" нет сейчас, не значит, что его никогда не будет. Этот файл в любую секунду может быть создан любой программой.
Но по какой-то неведомой причине файловая система умеет работать, не выделяя заранее на изначальном форматировании ячейки под файлы "аааааа213230", "аааааа213231", "аааааа213232" и под все остальные возможные имена файлов.
Eugene
> Но по какой-то неведомой причине файловая система умеет работать, не выделяя заранее на изначальном форматировании ячейки под файлы "аааааа213230", "аааааа213231", "аааааа213232" и под все остальные возможные имена файлов.
Ну с чего ты это взял-то? Вот если взять FAT32, то там заранее резервируется таблица с фиксированным количеством ячеек, в Википедии так прям и написано:
Область таблицы FAT, содержащая массив индексных указателей («ячеек»), соответствующих кластерам области данных. Для повышения надёжности на диске обычно представлено две копии таблицы FAT;
Eugene
> Но по какой-то неведомой причине файловая система умеет работать
вот вы сначала разберитесь по какой причине, а потом будем думать дальше. А пока вам сказали, что файловая система - это для жёсткого диска, а не для оперативной памяти.
totoro
> Ну с чего ты это взял-то? Вот если взять FAT32, то там заранее резервируется таблица с фиксированным количеством ячеек, в Википедии так прям и написано:
Мне очень хочется ответить издевательски, но я не буду.
Эти ячейки не под фиксированные имена файлов резервируются.
Я могу дать файлу любое имя и положить его в любую свободную ячейку.
Я напомню, что изначальный комментарий предлагает под все возможные "имена файлов" заранее выделять ячейки:
Сколько там в FAT32 имен возможных? 240^65536?..
iw4nna.rock
> вот вы сначала разберитесь по какой причине, а потом будем думать дальше. А пока вам сказали, что файловая система - это для жёсткого диска, а не для оперативной памяти.
В чем разница между файловой системой, которая может хранить файлы с любыми именами, и таблицей объектов, которая может хранить объекты с любыми координатами?
Eugene
> В чем разница между файловой системой и таблицей объектов
разница в том, что файловая система занимается созданием и удаление файлов в выделенной памяти, а таблица создаётся один раз и обеспечивает максимально быстрый доступ.
iw4nna.rock
> разница в том, что файловая система занимается созданием и удаление файлов в выделенной памяти, а таблица создаётся один раз и обеспечивает максимально быстрый доступ.
Стоит определиться, что тебе больше хочется.
Ты можешь заплатить кучей впустую потраченной памяти за "максимально быстрый доступ".
Или ты можешь сделать доступ (немного?) медленнее, но тратить память только на нужные вещи.
На обоих стульях усидеть не выйдет.
Eugene
> Мне очень хочется ответить издевательски, но я не буду.
И правильно, не в твоих это интересах.
Eugene
> Эти ячейки не под фиксированные имена файлов резервируются.
Запись в таблице - это вообще не про имена. Тебе следовало хотя бы общую информацию почитать об устройстве файловых систем на Википедии, прежде чем устраивать дискуссию.
Eugene
> Сколько там в FAT32 имен возможных?
268173300 файлов.
totoro
> Запись в таблице - это вообще не про имена.
А изначальный комментарий, в контексте которого я пишу все это — про "имена".
Следовательно, записи в таблице файловой системы не имеют отношения к тому, о чем я говорю.
> Тебе следовало хотя бы общую информацию почитать об устройстве файловых систем на Википедии, прежде чем устраивать дискуссию.
Тебе следовало целиком читать сообщения, на которые ты отвечаешь, чтобы отвечать на то, что я пишу, а не на что-то свое.
PS: Вот оригинальные сообщения:
iw4nna.rock
> Например в мире размером 64х64х64 М³ будет 512 подпространств размером 8х8х8 М³. Потом можно найти какие объекты попали в подпространства и сделать список индексов этих объектов для каждого подпространства.
> Но такое не выглядит гладко, если мир большой. Например 4096х4096х4096 М³.
> ...
> 512 * 512 * 512 = 134 217 728
> 134 217 728 * sizeof(void*) = 1 073 741 824 = 1 Гб
> то есть просто пустая карта будет весить 1 Гб.
Eugene
> Зачем тебе хранить пустую карту?
Eugene
Я, если что, отвечал вот на это сообщение
> Ага. И файловая система выделяет ячейки только под те файлы, которые существуют. А под файлы, которых не существует — не выделяет.
Это бред. Даже не вдаваясь в технические детали, на примерах из повседневной жизни можно догадаться, что дисковое пространство перед использованием должно быть каким-то образом размечено, а процесс разметки еще называют форматированием.
totoro
> Это бред. Даже не вдаваясь в технические детали, на примерах из повседневной жизни можно догадаться, что дисковое пространство перед использованием должно быть каким-то образом размечено, а процесс разметки еще называют форматированием.
Это сообщение было написано в том же контексте.
Файловая система форматируется под максимальное число *реальных* файлов, которые она может вместить. А не под все возможные имена файлов от aaaaaaaa.aaa до zzzzzzzz.zzz
Я использую аналогию между координатами ячеек для хранения объектов (в оригинальном вопросе) и именами файлов (в файловой системе) потому что и то и то является ключом поиска с точки зрения программиста.
Eugene
Ты по ходу совсем запутался, и нас с програминой хочешь запутать тоже. Астанавись :/
totoro
> Ты по ходу совсем запутался, и нас с програминой хочешь запутать тоже. Астанавись :/
Тут негде путаться. Мой поинт в том, что если у iw4nna.rock в задаче очень много возможных ключей (миллиард ячеек в разбиении мира), то выделять память под каждый ключ, даже когда он не используется — очевидно дурацкая и непрактичная затея.
Я привел в пример файловую систему только потому, что в ней такой поход был бы очевидно абсурдный.
А если у тебя объем 4000х4000х4000 равномерно заполнен разными объектами с шагом в 1, то тут уже не в ключах проблема, а в желании хранить 64 миллиарда различных рандомных объектов.