Читаем Операционная система UNIX полностью

int (*vn_open)()Открыть vnode. Если операция предусматривает создание клона (размножение), то в результате будет размещен новый vnode. Обычно операции такого типа характерны для специальных файлов устройств.
int (*vn_close)()Закрыть vnode.
int (*vn_read)()Чтение данных файла, адресованного vnode.
int (*vn_write)()Запись в файл, адресованный vnode.
int (*vn_ioctl)()Задание управляющей команды.
int (*vn_getaddr)()Получить атрибуты vnode: тип vnode, права доступа, владелец-пользователь, владелец-группа, идентификатор файловой системы, номер inode, число связей, размер файла, оптимальный размер блока для операций ввода/вывода, время последнего доступа, время последней модификации, время последней модификации vnode, число занимаемых блоков.
int (*vn_setaddr)()Установить атрибуты vnode. Могут быть изменены UID, GID, размер файла и времена доступа и модификации.
int (*vn_access)()Проверить права доступа к файлу, адресованному vnode. При этом производится отображение между атрибутами доступа файлов UNIX и атрибутами реальной файловой системы (например, DOS).
int (*vn_lookup)()Произвести трансляцию имени файла в соответствующий ему vnode.
int (*vn_create)()Создать новый файл и соответствующий ему vnode.
int (*vn_remove)()Удалить имя файла в указанном vnode каталоге.
int (*vn_link)()Создать жесткую связь между именем файла и vnode.
int (*vn_mkdir)()Создать новый каталог в указанном vnode каталоге.
int (*vn_rmdir)()Удалить каталог.
int (*vn_readdir)()Считать записи каталога, адресованного vnode.
int (*vn_symlink)()Создать символическую связь между новым именем и именем файла, расположенном в указанном vnode каталоге.
int (*vn_readlink)()Чтение файла — символической связи.
int (*vn_fsync)()Синхронизировать содержимое файла — записать все кэшированные данные.
int (*vn_inactive)()Разрешить удаление vnode, т.к. число ссылок на vnode из виртуальной файловой системы стало равным нулю.

Взаимосвязь между независимыми дескрипторами (vnode) и зависимыми от реализации метаданными файла показана на рис. 4.8.

Рис. 4.8. Метаданные файла виртуальной файловой системы

<p>Монтирование файловой системы</p>

Прежде чем может состояться работа с файлами, соответствующая файловая система должна быть встроена в существующее иерархическое дерево.

Только после этого ядро сможет выполнять файловые операции, такие как создание, открытие, чтение или запись в файл. Эта операция встраивания получила название подключения или монтирования файловой системы.

Перейти на страницу:

Похожие книги

Архитектура операционной системы UNIX (ЛП)
Архитектура операционной системы UNIX (ЛП)

Настоящая книга посвящена описанию внутренних алгоритмов и структур, составляющих основу операционной системы (т. н. «ядро»), и объяснению их взаимосвязи с программным интерфейсом. Таким образом, она будет полезна для работающих в различных операционных средах. При работе с книгой было бы гораздо полезнее обращаться непосредственно к исходному тексту системных программ, но книгу можно читать и независимо от него.  Во-вторых, эта книга может служить в качестве справочного руководства для системных программистов, из которого последние могли бы лучше уяснить себе механизм работы ядра операционной системы и сравнить между собой алгоритмы, используемые в UNIX, и алгоритмы, используемые в других операционных системах. Наконец, программисты, работающие в среде UNIX, могут углубить свое понимание механизма взаимодействия программ с операционной системой и посредством этого прийти к написанию более эффективных и совершенных программ.

Морис Дж Бах , Морис Дж. Бах

ОС и Сети, интернет / ОС и Сети / Книги по IT