Где хранятся записи в каталоге файлов для подкаталогов?

Простите, если этот вопрос имеет точный дубликат в другом месте, но пока все ответы, которые я нашел на SE или других сайтах вообще, не отвечают на этот вопрос конкретно. Я беру курс операционной системы в своем колледже, и поэтому я довольно новичок в файловых системах в целом.

Я понимаю, что в большинстве файловых систем есть корневой каталог, содержащий записи в каталоге файлов. Эти записи содержат сопоставление от имени файла до номера inode и имеют размер переменной по длине.

Согласно этому ответу , я думаю, что эти записи хранятся линейно, как показано ниже:

Я могу полностью понять, что такое inodes и как они сопоставляются с номерами блоков данных файла на физическом диске, используя записи оглавления (TOC).


Однако, мой вопрос: как и где хранятся записи каталога файлов подкаталога?

Я считаю, что они либо хранятся в том же месте, что и корневой каталог, с некоторым смещением. Тем не менее, я не могу представить, как это смещение можно извлечь из inode.

Следовательно, я чувствую, что записи в каталоге подкаталогов фактически хранятся в области данных на диске, а не в записи корневого каталога.

Следовательно, если это так, переход от одного каталога к другому требует, чтобы диск читался из кажущихся произвольными местоположений, что кажется мне немного неэффективным.

Тем не менее, я хотел бы просто прояснить свои заблуждения относительно расположения записей в каталоге каталога в подкаталоге.

Большая помощь приветствуется.

  • MacOS: история USB (имя и временная метка подключенных устройств)
  • Настройка файловой системы ext4 для раздела хранения
  • Проблема временных файлов
  • Определить файлы text / ascii в Linux / Solaris
  • Как удалить недействительный osd в кластере ceph?
  • Внешний диск chmod ничего не делает
  • Может ли жесткая связь нарушить структуру файловой системы?
  • Как определяется значение readahead по умолчанию
  • 2 Solutions collect form web for “Где хранятся записи в каталоге файлов для подкаталогов?”

    Каталоги обычно реализуются как файлы. У них есть inode и область данных, но, конечно, к ним обычно обращаются (по крайней мере, записываются) с помощью специальных системных вызовов. Некоторые системы позволяют читать каталоги с обычным системным вызовом read(2) (Linux не работает, FreeBSD сделал, когда я последний раз проверял). Затем область данных каталога-файла содержит записи в каталоге. В ext4 корневой каталог также имеет индексный дескриптор, он исправлен для числа inode номер 2 (попробуйте ls -lid / ).

    Наличие каталога как файла облегчает выделение пространства для записей каталога и т. Д., Поскольку функции выделения блоков для файлов всегда должны быть там. Кроме того, поскольку они используют блоки данных sama по мере необходимости, нет необходимости заранее выделять пространство между данными файла и списками каталогов.

    Внутренности того, как хранятся записи в каталогах, различаются между файловыми системами и, например, развиваются между ext2 и ext4 . Современные системы используют деревья вместо линейных списков для более быстрого поиска. См. Здесь . Даже почтенная файловая система FAT хранит каталоги в виде файлов, но, по крайней мере, в старых FAT, корневой каталог является особым. (Структура записей в каталоге FAT, конечно, отличается от файловых систем unix).

    Следовательно, если это так, переход от одного каталога к другому требует, чтобы диск читался из кажущихся произвольными местоположений, что кажется мне немного неэффективным.

    Ага. Но часто используемые записи каталога (или базовые блоки данных), скорее всего, будут кэшироваться в современных операционных системах.

    Сохранение содержимого всех каталогов централизованно потребует предварительного выделения большой площади и по-прежнему потребует обращения к диску в области данных каталога.

    Общим решением является то, что некоторые из inodes в корневом каталоге указывают на записи, которые также являются каталогами. Во многом они похожи на файлы, но тип файла указывает на файловую систему, чтобы интерпретировать их как каталоги.

    (В действительно старых учебниках, как и в оригинальной Unix, вам даже скажут, что вы также можете cat каталоги. Это, как правило, уже не так.)

    Другими словами, каждый каталог представляет собой простой линейный список указателей inode. Некоторые из них указывают на листовые узлы в дереве каталогов (файлы), другие указывают на внутренние узлы (другой каталог). Единственное, что особенно важно в корневом каталоге, это то, что оно является его собственным родителем, и что есть что-то внешнее по отношению к дереву, которое сообщает системе начать обход дерева отсюда.

    Interesting Posts

    использование клавиш thinkpad fn в openbox

    Как прокручивать в терминале по строке в терминале GNOME 2.31.3?

    Как использовать программы пользователями, которые сами не установили их?

    Преобразование файла .okular в pdf

    Современное руководство для настольных компьютеров Linux?

    Что именно происходит, когда за трубой следует командная группировка?

    Как я могу систематизировать цели для остановки служб от других целей?

    Как я могу извлечь / проанализировать полный URL-адрес из полуслучайной строки?

    Как изменить переменную среды локали?

    Не удается удалить файл – разрешено разрешение – почему?

    Программа для отслеживания изменений файлов / каталогов в Linux

    Шрифты не отображаются корректно в Linux Mint 17.2 32bit

    Утилита шифрования файлов без проверки целостности ключа (симметричный ключ)

    Как восстановить забытый пароль root в Fedora 19 от GRUB

    Как написать простой плагин mutter?

    Linux и Unix - лучшая ОС в мире.