2

Узлы индекса содержат метаданные и указывают, где находятся фактические данные. Но как система узнает, где в дереве каталогов находится файл или папка, и как она переводит имя файла в i-узел?

Объяснение с точки зрения файловых систем процесса, который происходит, когда я запрашиваю файл / папка / каталог / имя файла, было бы очень полезно.

1 ответ1

2

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

Основной процесс (для Unix-подобных путей):

  1. Разделить данный путь на компоненты, разделенные /
  2. Местоположение / уже известно ядру.
  3. Сканирование каталога / поиск элемента с именем « folder ». Получить связанный номер инода.
    • Если /folder не является каталогом (или символической ссылкой, указывающей на каталог), верните ENOTDIR.
  4. Сканирование каталога /folder поисках элемента с именем « directory ». Получить номер инода, прочитать инод, найти данные.
  5. Сканирование директории /folder/directory поисках элемента с именем « filename » и получение соответствующего номера inode.
  6. Прочитайте индекс и получите метаданные файла, биты прав доступа, местоположение данных и т.д.

Примечание. Папки / , /folder и /folder/directory могут быть точками монтирования для совершенно разных файловых систем. Обычной конфигурацией является наличие одного раздела для / и другого для /home . (Это также относится к не-Unix системам, таким как Windows NT.) Процесс выше должен перечислить поиск в таблице монтирования ядра.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .