Из главы 1 напомним, что каталоги
являются файлами, из которых
строится иерархическая структура
файловой системы; они играют важную
роль в превращении имени файла в
номер индекса. Каталог - это файл,
содержимым которого является набор
записей, состоящих из номера
индекса и имени файла, включенного
в каталог. Составное имя - это
строка символов, завершающаяся
пустым символом и разделяемая
наклонной чертой ("/") на
несколько компонент. Каждая
компонента, кроме последней, должна
быть именем каталога, но последняя
компонента может быть именем файла,
не являющегося каталогом. В версии V
системы UNIX длина каждой компоненты
ограничивается 14 символами; таким
образом, вместе с 2 байтами,
отводимыми на номер индекса, размер
записи каталога составляет 16 байт. Рисунок 4.10. Формат
каталога /etc На Рисунке 4.10 показан
формат каталога "etc". В каждом
каталоге имеются файлы, в качестве
имен которых указаны точка и две
точки ("." и "..") и номера
индексов у которых совпадают с
номерами индексов данного каталога
и родительского каталога,
соответственно. Номер индекса для
файла "." в каталоге "/etc"
имеет адрес со смещением 0 и
значение 83. Номер индекса для файла
".." имеет адрес со смещением 16
от начала каталога и значение 2.
Записи в каталоге могут быть
пустыми, при этом номер индекса
равен 0. Например, запись с адресом
224 в каталоге "/etc" пустая,
несмотря на то, что она когда-то
содержала точку входа для файла с
именем "crash". Программа mkfs
инициализирует файловую систему
таким образом, что номера индексов
для файлов "." и ".." в
корневом каталоге совпадают с
номером корневого индекса файловой
системы. Ядро хранит данные в каталоге так
же, как оно это делает в файле
обычного типа, используя индексную
структуру и блоки с уровнями прямой
и косвенной адресации. Процессы
могут читать данные из каталогов
таким же образом, как они читают
обычные файлы, однако
исключительное право записи в
каталог резервируется ядром,
благодаря чему обеспечивается
правильность структуры каталога.
Права доступа к каталогу имеют
следующий смысл: право чтения дает
процессам возможность читать
данные из каталога; право записи
позволяет процессу создавать новые
записи в каталоге или удалять
старые (с помощью системных
операций creat, mknod, link и unlink), в
результате чего изменяется
содержимое каталога; право
исполнения позволяет процессу
производить поиск в каталоге по
имени файла (поскольку
"исполнять" каталог
бессмысленно). На примере Упражнения 4.6 показана
разница между чтением и поиском в
каталоге. Предыдущая
глава || Оглавление
|| Следующая глава
4.3 КАТАЛОГИ
Смещение в байтах
внутри каталога Номер индекса
(2 байта)Имя файла
0
83
.
16
2
..
32
1798
init
48
1276
fsck
64
85
clri
80
1268
motd
96
1799
mount
112
88
mknod
128
2114
passwd
144
1717
umount
160
1851
checklist
176
92
fsdbld
192
84
config
208
1432
getty
224
0
crash
240
95
mkfs
256
188
inittab