є списками посилальних структур, кожна з яких містить одне ім'я файлу і один номер індексного дескриптора;
· ядро ??повинне переглядати каталог у пошуках імені файлу, потім конвертувати це ім'я в відповідний номер індексного дескриптора, у разі успіху;
· вміст файлів розташовується в блоках даних , на які посилаються індексні дескриптори.
Подання ядром цих даних в пам'яті називається struct inode (структурним инодом) (в ОС Linux). У BSD системах використовується термін vnode, буква v в якому вказує на віртуальну файлову систему рівня ядра.
Будова індексного дескриптора файлу наведено в табл.1
Таблиця 1. Структура індексного дескриптора
Назва поляТіпОпісаніеi_modeUSHORTТіп і права доступу до даного файлуi_uidUSHORTІдентіфікатор власника файлу (Owner Uid) i_sizeULONGРазмер файлу в байтахi_atimeULONGВремя останнього звернення до файлу (Access time) i_ctimeULONGВремя створення файлаi_mtimeULONGВремя останньої модифікації файлаi_dtimeULONGВремя видалення файлаi_gidUSHORTІдентіфікатор групи (GID) i_links_countUSHORTСчетчік числа зв'язків ( Links count) i_blocksULONGЧісло блоків, займаних файломi_flagsULONGФлагі файлу (File flags) i_reserved1ULONGЗарезервіровано для ОСi_blockULONG [15] Покажчики на блоки, в яких записані дані файлу (це поле докладно описано в разд.16.4) i_versionULONGВерсія файлу (для NFS) i_file_aclULONGACL файлаi_dir_aclULONGACL каталогаi_faddrULONGАдрес фрагмента (Fragment address) i_fragUCHARНомер фрагмента (Fragment number) i_fsizeUCHARРазмер фрагмента (Fragment size) i_pad1USHORTЗаполненіеi_reserved2ULONG [2] Зарезервовано
Поле типу та прав доступу до файлу являє собою двухбайтовое слово, кожний біт якого служить прапором, индицируют ставлення файлу до певного типу або установку одного конкретного права на файл.
Таблиця 2. Структура поля, що задає тип і права доступу
ІдентіфікаторЗначеніеНазначеніе прапора (поля) S_IFMTF000Маска для типу файлаS_IFSOCKA000Доменное гніздо (socket) S_IFLNKC000Сімволіческая ссилкаS_IFREG8000Обичний (regular) файлS_IFBLK6000Блок-орієнтоване устройствоS_IFDIR4000КаталогS_IFCHR2000Байт-орієнтоване (символьне) устройствоS_IFIFO1000Іменованний канал (fifo) S_ISUID0800SUID - біт зміни владельцаS_ISGID0400SGID - біт зміни группиS_ISVTX0200Біт збереження задачі (sticky bit) S_IRWXU01C0Маска прав власника файлаS_IRUSR0100Право на чтеніеS_IWUSR0080Право на запісьS_IXUSR0040Право на виполненіеS_IRWXG0038Маска прав группиS_IRGRP0020Право на чтеніеS_IWGRP0010Право на запісьS_IXGRP0008Право на виполненіеS_IRWXO0007Маска прав інших пользователейS_IROTH0004Право на чтеніеS_IWOTH0002Право на запісьS_IXOTH0001Право на виконання
Серед індексних дескрипторів є кілька дескрипторів, які зарезервовані для спеціальних цілей і відіграють особливу роль у файловій системі (табл.16.6).
Таблиця 3. Особливі індексні дескриптори
ИдентификаторЗначениеОписаниеEXT2_BAD_INO1Индексный дескриптор, в якому перераховані адреси дефектних блоків на диску (Bad blocks inode) EXT2_ROOT_INO2Індексний дескриптор кореневого каталогу файлової системи (Root inode) EXT2_ACL_IDX_INO3ACL inodeEXT2_ACL_DATA_INO4ACL inodeEXT2_BOOT_LOADER_INO5Індексний дескриптор завантажувача (Boot loader inode) EXT2_UNDEL_DIR_INO6Інлексний дескриптор каталогу для віддалених файлів (Undelete directory inode) EXT2_FIRST_INO11Первий незарезервірованних індексний дескриптор
Найважливіший дескриптор в цьому списку - дескриптор кореневого каталогу. Цей дескриптор вказує на кореневий каталог, який, подібно всім каталогам, являє собою зв'язаний список, що складається із записів змінної довжини. Кожен запис має наступну структуру (табл.16.7):
Таблиця 4. Структура дескриптора, що описує кореневий каталог
Назва поляТіпОпісаніеInodeULONGНомер індексного дескриптора (індекс) файлаRec_lenUSHORTДліна цієї запісіName_lenUSHORTДліна імені файлаNameCHAR [0] Файл
Використання записів змінної довжини дозволяє використовувати довгі імена файлів без порожньої витрати дискового простору. Окрема запис в каталозі не може перетинати кордон блоку (тобто повинна бути розташована цілком усередині одного блоку). Тому, якщо чергова запис не поміщається цілком в даному блоці, вона переноситься в наступний блок, а попередня запис триває таким чином, щоб вона заповнила блок до кінця.
Для підвищення ефективності обробки даних у файловій системі при відкритті будь-якого файлу його індексний дескриптор зчитується в таблицю індексних дескрипторів, яка резидентність в RAM. Резидентний образ індексного дескриптора файлу повертається в індексний файл після завершення роботи...