The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Каталог документации / Раздел "Документация для Linux" / Оглавление документа
next up previous contents index
Next: Система адресации данных Up: Файловая система Previous: Область блоков данных   Contents   Index

Индексные дескрипторы файлов

Каждому файлу на диске соответствует один и только один индексный дескриптор файла, который идентифицируется своим порядковым номером - индексом файла. Это означает, что число файлов, которые могут быть созданы в файловой системе, ограничено числом индексных дескрипторов, которое либо явно задается при создании файловой системы, либо вычисляется исходя из физического объема дискового раздела.

Индексный дескриптор файла имеет следующее строение.

Название поля Тип Описание  
1.2emi_mode USHORT Тип и права доступа к данному файлу  
i_uid USHORT Идентификатор владельца файла (Owner UID)  
i_size ULONG Размер файла в байтах  
i_atime ULONG Время последнего обращения к файлу (Access time)  
i_ctime ULONG Время создания файла  
i_mtime ULONG Время последней модификации файла  
i_dtime ULONG Время удаления файла  
i_gid USHORT Идентификатор группы (GID)  
i_links_count USHORT Счетчик числа связей (Links count)  
i_blocks ULONG Число блоков, занимаемых файлом  
i_flags ULONG Флаги файла (File flags)  
i_reserved1 ULONG Зарезервировано для ОС  
i_block ULONG[15] Указатели на блоки, в которых записаны данные файла  

i_version ULONG Версия файла (для NFS)  
i_file_acl ULONG ACL файла  
i_dir_acl ULONG ACL каталога  
i_faddr ULONG Адрес фрагмента (Fragment address)  
i_frag UCHAR Номер фрагмента (Fragment number)  
i_fsize UCHAR Размер фрагмента (Fragment size)  
i_pad1 USHORT Заполнение  
i_reserved2 ULONG[2] Зарезервировано  

Поле типа и прав доступа к файлу представляет собой двух- байтовое слово, каждый бит которого служит флагом, индицирующим отношение файла к определенному типу или установку одного конкретного права на файл.

Идентификатор Значение Назначение флага (поля)  
1.2emS_IFMT F000 Маска для типа файла  
S_IFSOCK A000 Доменное гнездо (socket)  
S_IFLNK C000 Символическая ссылка  
S_IFREG 8000 Обычный (regular) файл  
S_IFBLK 6000 Блок-ориентированное устройство  
S_IFDIR 4000 Каталог  
S_IFCHR 2000 Байт-ориентированное (символьное) устройство  
S_IFIFO 1000 Именованный канал (fifo)  
       
S_ISUID 0800 SUID - бит смены владельца S_ISGID 0400 SGID - бит смены группы  
S_ISVTX 0200 Бит сохранения задачи (sticky bit)  
       
S_IRWXU 01C0 Маска прав владельца файла  
S_IRUSR 0100 Право на чтение  
S_IWUSR 0080 Право на запись  
S_IXUSR 0040 Право на выполнение  
       
S_IRWXG 0038 Маска прав группы  
S_IRGRP 0020 Право на чтение  
S_IWGRP 0010 Право на запись  
S_IXGRP 0008 Право на выполнение  
       
S_IRWXO 0007 Маска прав остальных пользователей  
S_IROTH 0004 Право на чтение  
S_IWOTH 0002 Право на запись  
S_IXOTH 0001 Право на выполнение  

Среди индексных дескрипторов имеется несколько дескрипторов, которые зарезервированы для специальных целей и играют особую роль в файловой системе. Это следующие дескрипторы

Идентификатор Значение Описание  
1.2emEXT2_BAD_INO 1 Индексный дескриптор, в котором перечислены адреса дефектных блоков на диске (Bad blocks inode)  
EXT2_ROOT_INO 2 Индексный дескриптор корневого каталога файловой системы (Root inode)  
EXT2_ACL_IDX_INO 3 ACL inode  
EXT2_ACL_DATA_INO 4 ACL inode  
EXT2_BOOT_LOADER_INO 5 Индексный дескриптор загрузчика (Boot loader inode)  
EXT2_UNDEL_DIR_INO 6 Undelete directory inode  
EXT2_FIRST_INO 11 Первый незарезервированный индексный дескриптор  

Самый важный дескриптор в этом списке - дескриптор корневого каталога. Этот дескриптор указывает на корневой каталог, который, подобно всем каталогам, состоит из записей следущей структуры:

Название поля Тип Описание  
1.2eminode ULONG номер индексного дескриптора (индекс) файла  
rec_len USHORT Длина этой записи  
name_len USHORT Длина имени файла  
name CHAR[0] Имя файла  

Отдельная запись в каталоге не может пересекать границу блока (то есть должна быть расположена целиком внутри одного блока). Поэтому, если очередная запись не помещается целиком в данном блоке, она переносится в следующий блок, а предыдущая запись продолжается таким образом, чтобы она заполнила блок до конца.


next up previous contents index
Next: Система адресации данных Up: Файловая система Previous: Область блоков данных   Contents   Index
Alex Otwagin 2002-12-16

  Закладки на сайте
  Проследить за страницей
Created 1996-2017 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
Hosting by Ihor