Объект inode

Объект inode

Объект inode содержит всю информацию, которая необходима ядру для манипуляций с файлами и каталогами. В файловых системах в стиле Unix вся информация просто считывается из дисковых индексов и помещается в объект inode подсистемы VFS. Если файловые системы не имеют индексов, то эту информацию необходимо получить из других дисковых структур[70].

Объект индекса файла представляется с помощью структуры struct inode, которая определена в файле <linux/fs.h>. Эта структура с комментариями, описывающими назначение каждого поля, имеет следующий вид.

struct inode {

 struct hlist_node       i_hash;         /* хешированный список */

 struct list_head        i_list;         /* связанный список индексов */

 struct list_head        i_dentry; /* связанный список объектов dentry */

 unsigned long           i_ino;          /* номер индекса */

 atomic_t                i_count;        /* счетчик ссылок */

 umode_t                 i_mode;         /* права доступа */

 unsigned int            i_nlink;        /* количество жестких ссылок */

 uid_t                   i_uid; /* идентификатор пользователя-владельца */

 gid_t                   i_gid; /* идентификатор группы-владельца */

 kdev_t                  i_rdev;         /* связанное устройство */

 loff_t                  i_size;         /* размер файла в байтах */

 struct timespec         i_atime; /* время последнего доступа к файлу */

 struct timespec         i_mtime; /* время последнего изменения файла */

 struct timespec         i_ctime;        /* время изменения индекса */

 unsigned int            i_blkbits;      /* размер блока в битах */

 unsigned long           i_blksize;      /* размер блока в байтах */

 unsigned long           i_version;      /* номер версии */

 unsigned long           i_blocks;       /* размер файла в блоках */

 unsigned short          i_bytes; /* количество использованных байтов */

 spinlock_t              i_lock;         /* блокировка для защиты полей */

 struct rw_semaphore     i_alloc_sem     /* вложенные блокировки при

                                            захваченной i_sem */

 struct semaphore        i_sem;          /* семафор индекса */

 struct inode_operations *i_op;          /* таблица операций с индексом */

 struct file_operations  *i_fop;         /* файловые операции */

 struct super_block      *i_sb;          /* связанный суперблок */

 struct file_lock        *i_flock;       /* список блокировок файлов */

 struct address_space    *i_mapping;     /* соответствующее адресное

                                            пространство */

 struct address_space    i_data; /* адресное пространство устройства */

 struct dquot            *i_dquot[MAXQUOTAS]; /* дисковые квоты

                                                 для индекса */

 struct list_head        i_devices;      /* список блочных устройств */

 struct pipe_inode_info  *i_pipe;        /* информация конвейера */

 struct block_device     *i_bdev;        /* драйвер блочного устройства */

 unsigned long           i_dnotify_mask; /* события каталога */

 struct dnotify_struct   *i_dnotify; /* информация о событиях каталога */

 unsigned long           i_state;        /* флаги состояния */

 unsigned long           dirtied_when    /* время первого изменения */

 unsigned int            i_flags;        /* флаги файловой системы */

 unsigned char           i_sock;         /* сокет или нет? */

 atomic_t                i_writecount;   /* счетчик использования

                                            для записи */

 void                    *i_security;    /* модуль безопасности */

 __u32                   i_generation;   /* номер версии индекса */

 union {

  void *generic_ip; /* специфическая информация

                       файловой системы */

 } u;

};

Для каждого файла в системе существует представляющий его индекс (хотя объект файлового индекса создается в памяти только тогда, когда к файлу осуществляется доступ). Это справедливо и для специальных файлов, таких как файлы устройств или конвейеры. Следовательно, некоторые из полей структуры struct inode относятся к этим специальным файлам. Например, поле i_pipe указывает на структуру данных именованного конвейера. Если индекс не относится к именованному конвейеру, то это поле просто содержит значение NULL Другие поля, связанные со специальными файлами, — это i_devices, i_bdev, i_cdev.

Может оказаться, что та или иная файловая система не поддерживает тех свойств, которые присутствуют в объекте inode. Например, некоторые файловые системы не поддерживают такого атрибута, как время создания файла. В этом случае файловая система может реализовать это свойство как угодно. Например, поле i_ctime можно сделать нулевым или равным значению поля i_mtime.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Составной объект

Из книги Самоучитель UML автора Леоненков Александр

Составной объект Составной объект (composite object) или объект-контейнер предназначен для представления объекта, имеющего собственную структуру и внутренние потоки (нити) управления. Составной объект является экземпляром составного класса (класса-контейнера), который связан


Объект File

Из книги Windows Script Host для Windows 2000/XP автора Попов Андрей Владимирович

Объект File Объект File обеспечивает доступ ко всем свойствам файла. Создать этот объект можно с помощью метода GetFile объекта FileSystemObject следующим образом:var FSO, F;//Создаем объект FileSystemObjectFSO=WScript.CreateObject("Scripting.FileSystemObject");//Создаем объект FileF=FSO.GetFile("С:Мои документахletter.txt");Также


Объект TextStream

Из книги Справочник по JavaScript автора Коллектив авторов

Объект TextStream Объект TextStream обеспечивает последовательный (строка за строкой) доступ к текстовому файлу. Методы этого объекта позволяют читать информацию из файла и записывать ее в него.Создать объект TextStream можно с помощью следующих методов:? CreateTextFile объектов FileSystemObject и


Объект Array

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов автора Дронов Владимир

Объект Array Новый объект встроенного класса Array можно создать с помощью оператора new следующими способами:? new Array() — создание массива нулевой длины;? new Array(N) — создание массива длины N;? new Array(а0, a1, ..., aN) — создание массива длины N+1 c элементами а0, a1, ..., aN.Например:var A1, А2, A3;A1 = new


Объект Date

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

Объект Date Для создания нового объекта встроенного класса Date используется один из трех конструкторов.Конструктор первого вида позволяет создать объект, в котором хранится информация о текущих дате и времени:var d;d = new Date();Здесь время задается по Гринвичу, т.е. с


Объект Enumerator

Из книги Приемы создания интерьеров различных стилей автора Тимофеев С. М.

Объект Enumerator С помощью объекта Enumerator можно получить доступ к любому элементу коллекции (в VBScript для этого служит цикл For…Each). Коллекцией в языке JScript называется множество элементов, которое отличается от массива тем, что к элементам коллекции нельзя получить прямой доступ


Объект Math

Из книги автора

Объект Math Встроенный класс Math применяется для математических вычислений и содержит основные математические константы и функции. Замечание Объект Math создается сервером сценариев автоматически и не может быть создан при помощи оператора new, как другие встроенные


Объект String

Из книги автора

Объект String Встроенный объект String предназначен для выполнения различных операций над текстовыми строками. Обычно объекты класса String создаются просто с помощью записи в переменную текстового литерала:var s1, s2;s1 = "Это строка";s2 = "Это тоже строка";Также можно создавать такие


Объект document

Из книги автора

Объект document Прежде всего надо отметить, что объект document существует в единственном экземпляре для всего HTML-документа. Он присутствует всегда, если существует HTML-документ, поэтому специально создавать его не требуется.activeElementИспользуется в сценарии для получения ссылки


Объект location

Из книги автора

Объект location Объект location содержит информацию о местонахождении текущего документа, т.е. его интернет-адрес. Его также можно использовать для перехода на другой документ и перезагрузки текущего документа.Свойства объекта locationМетоды объекта locationПользуясь объектом location,


Объект style

Из книги автора

Объект style Как и все остальные объекты, style поддерживает ряд свойств и методов. Их можно разделить на две группы:иСвойства первой группы в целом аналогичны соответствующим атрибутам стиля и имеют почти такие же имена за тем исключением, что символы "-" убираются, т.к. не


Объект window

Из книги автора

Объект window Объект window представляет текущее окно Web-обозревателя или отдельный фрейм, если окно разделено на фреймы.closedВозвращает true, если текущее окно закрыто. Может быть использовано при работе с несколькими окнами.defaultStatusСообщение по умолчанию, отображаемое в строке


Объект CompositeElementLite

Из книги автора

Объект CompositeElementLite Вернемся в начало этой главы и вспомним, как мы получали доступ к нужному нам элементу Web-страницы.Мы можем получить доступ к одному элементу Web-страницы:var elCMain = Ext.get("cmain");Или сразу к нескольким:var clContainers = Ext.select("DIV");Мы помним, что метод select объекта Ext


11.3. Запрос и изменение информации inode

Из книги автора

11.3. Запрос и изменение информации inode 11.3.1. Поиск информации inode В начале этой главы информационный узел файла (inode) был представлен как структура данных, которая отслеживает информацию о файле, независимо от представления ее для процесса. Например, размер файла является


11.3.1. Поиск информации inode

Из книги автора

11.3.1. Поиск информации inode В начале этой главы информационный узел файла (inode) был представлен как структура данных, которая отслеживает информацию о файле, независимо от представления ее для процесса. Например, размер файла является константой в любой момент времени — он


Объект

Из книги автора

Объект Все, что находится в трехмерном виртуальном пространстве сцены — это объекты. Термин "объект" обозначает нечто, находящееся в трехмерном мире. Что бы мы ни создали в виртуальном пространстве, это будет объект.Существует множество видов объектов. Принадлежность