С технической точки зрения каталог - это просто файл, содержащий имена файлов, их номера и атрибуты. В BSD и Plan9 вы даже можете прочитать его как файл. (Хотя в современных файловых системах формат на диске - это своего рода двоичное дерево, а не последовательный список.)
Основной процесс (для Unix-подобных путей):
- Разделить данный путь на компоненты, разделенные
/
- Местоположение
/
уже известно ядру.
- Сканирование каталога
/
поиск элемента с именем « folder
». Получить связанный номер инода.
- Если
/folder
не является каталогом (или символической ссылкой, указывающей на каталог), верните ENOTDIR.
- Сканирование каталога
/folder
поисках элемента с именем « directory
». Получить номер инода, прочитать инод, найти данные.
- Сканирование директории
/folder/directory
поисках элемента с именем « filename
» и получение соответствующего номера inode.
- Прочитайте индекс и получите метаданные файла, биты прав доступа, местоположение данных и т.д.
Примечание. Папки /
, /folder
и /folder/directory
могут быть точками монтирования для совершенно разных файловых систем. Обычной конфигурацией является наличие одного раздела для /
и другого для /home
. (Это также относится к не-Unix системам, таким как Windows NT.) Процесс выше должен перечислить поиск в таблице монтирования ядра.