По сути, большая часть этого сводится к старым стандартам (особенно FAT16 / 32), которые были разработаны еще тогда, когда файлы размером 4 ГБ были неслыханными, а раздел размером 2 ТБ был ошеломляюще большим. Они пошли на компромисс в стандартах, которые в то время были вполне разумными.
Если вы посмотрите на это, старые файловые системы очень ограничены, потому что использование компьютеров было ограничено в то время. Теперь у нас есть возможность создавать настолько большие перегородки, что у нас, скорее всего, не будет соответствующих устройств еще 20-30 лет.
Я собираюсь опустить здесь большую часть теории программирования и проектирования ОС, иначе на это уйдут дни ..
Проще говоря, потому что когда они были написаны, в реализации были сделаны определенные предположения и решения, в частности, как обращаться к файлам и получать доступ к ним.
Выражаясь компьютерным языком, все и вся должна иметь максимальную ценность - бесконечности не существует.
Что еще более важно, каждая запись в каталоге должна иметь уникальный способ идентификации - право собственности, какие специальные атрибуты и разрешения у нее есть, какой это тип файла (каталог, символическая ссылка, жесткая ссылка, обычный файл, канал, блок устройство, символьное устройство и т. д.). В большинстве файловых систем unix это называется « индексный номер », и поскольку каждый из них должен быть уникальным, у вас никогда не может быть больше файлов, чем у вас есть возможные разные номера.
Другая проблема - это (или была) проблема оптимизации; поскольку операции с файловой системой - это то, что ваша система будет делать довольно довольно часто, дизайнеры, естественно, склонны выбирать диапазон наименьшего размера, который, по их мнению, будет разумным, потому что компьютеры могут выполнять арифметические операции с меньшими числами (с учетом длины битов) намного быстрее, чем более крупные ... А когда самые большие жесткие диски, которые вы видите на рынке, имеют размер один или два гигабайта, вы можете быть склонны предположить, что 65 тысяч файлов и максимальный размер файловой системы 2 терабайта - это разумная дальновидность.
Затем проходит время, и менее чем через десять лет программисты ядра проклинают ваше имя и вашу недостаточную дальновидность, пытаясь реконструировать лучшую емкость кода вашей файловой системы.