booksdaily.club
booksdaily.club » Компьютеры и Интернет » ОС и Сети » Операционная система UNIX - Робачевский Андрей Михайлович

Операционная система UNIX - Робачевский Андрей Михайлович

На этом ресурсе Вы можете бесплатно читать книгу онлайн Операционная система UNIX - Робачевский Андрей Михайлович. Жанр: ОС и Сети . На сайте booksdaily.club Вы можете онлайн читать полную версию книги без регистрации и sms. Так же Вы можете ознакомится с содержанием, описанием, предисловием о произведении
Перейти на страницу:

Основные поля vnode приведены в табл. 4.1.

Таблица 4.1. Поля vnode

Поле Описание
u_short vflag
Флаги vnode
u_short v_count
Число ссылок на vnode
struct filock *v_filocks
Блокировки файла
struct vfs *v_vfsmountedhere
Указатель на подключенную файловую систему, если vnode является точкой монтирования
struct vfs *v_vfsp
Указатель на файловую систему, в которой находится файл
enum vtype v_type
Тип vnode: обычный файл, каталог, специальный файл устройства, символическая связь, сокет
caddr_t v_data
Указатель на данные, относящиеся к реальной файловой системе
struct op
Операции vnode

Каждый vnode содержит число ссылок

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

Поле

v_vfsp
указывает на файловую систему (структуру
vfs
, о которой мы поговорим в следующем разделе), в которой расположен файл, адресованный данным vnode. Если vnode является точкой монтирования, то поле
v_vfsmountednere
указывает на подключенную файловую систему, "перекрывающую" данный vnode.

Поле

v_data
указывает на данные, относящиеся к конкретной реализации реальной файловой системы. Например, для дисковой файловой системы ufs,
v_data
указывает на запись в таблице in-core inode.

Набор операций над vnode указан полем

v_op
. В терминах объектно-ориентированного программирования этот набор представляет собой виртуальные методы класса vnode. Он является своего рода шлюзом к реальной файловой системе, позволяя предоставить общий интерфейс виртуальной файловой системы и в то же время обеспечить специфические реализации функций работы с файлами, необходимые для различных типов файловых систем. Некоторые операции, большинство из которых уже знакомы читателю по системным вызовам, приведены в табл. 4.2.

Таблица 4.2. Операции с vnode виртуальной файловой системы

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.

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

Робачевский Андрей Михайлович читать все книги автора по порядку

Робачевский Андрей Михайлович - на сайте онлайн книг booksdaily.club Вы можете читать полные версии книг автора в одном месте.


Операционная система UNIX отзывы

Отзывы читателей о книге Операционная система UNIX, автор: Робачевский Андрей Михайлович. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор booksdaily.club


Прокомментировать
Подтвердите что вы не робот:*