Ядро поддерживает уникальный номер, известный как struct stat
для двух имен файлов указывают, что оба эти номера одни и те же, можно быть уверенным, что они на самом деле ссылаются на один и тот же файл.
Как упоминалось ранее, программы уровня пользователя помещают структуры индексов и другие вспомогательные данные на раздел диска, создавая тем самым файловую систему. Эти самые программы создают для файловой системы начальный корневой каталог. Таким образом, нам придется провести различие между «корневым каталогом, названным /
», который является каталогом самого верхнего уровня в иерархическом пространстве имен файлов, и «корневым каталогом файловой системы», который является отдельным каталогом верхнего уровня каждой файловой системы. Каталог /
является также «корневым каталогом» «корневой файловой системы».
По причинам, описанным на врезке, у корневого каталога файловой системы номер индекса ..
' в корне смонтированной файловой системы ссылается на родительский каталог точки монтирования.
На рис. 8.1 показаны две файловые системы: одна для корневого каталога, а другая для /usr
, до того, как /usr
смонтирована. На рис. 8.2 показана ситуация после монтирования /usr
.
Рис. 8.1. Отдельные файловые системы до монтирования
Рис. 8.2. Отдельные файловые системы после монтирования
Каталог /
, корень всей логической иерархии, особый еще в одном отношении: /.
и /..
ссылаются на один и тот же каталог; это неверно для любого другого каталога в системе. (Таким образом, после команды типа 'cd /../../../..
' вы все еще будете в /
.) Это поведение реализуется простым способом: как /.
, так и /..
являются прямыми ссылками на корневой каталог файловой системы. (Вы можете видеть это как на рис. 8.1, так и 8.2.) Каждая файловая система работает таким способом, но ядро рассматривает /
особым образом и не рассматривает как особый случай каталог '..
' для файловой системы, смонтированной в /
.