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