Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Материалы по конспектам 2011.docx
Скачиваний:
13
Добавлен:
21.04.2019
Размер:
967.53 Кб
Скачать

28. Архитектура виртуальной фс

Физические носители: hard disk, floppy, compact.

Ядро поддерживает возможность работы с различными ФС.

Поля struct vfs

Переменная

Смысл

struct vfs *vfs_next

struct vfsops *vfs_ops

struct vnode *vfs_vnodecovered

int vfs_flags

int vfs_bsize

caddr_t vfs_data

Следующая ФС

Операции над ФС

Связь с точкой монтирования

Флаги чтения/записи

Размер блока ФС

Указатель на специальные данные реальной ФС

Активный файл – такой, на который ссылается хотя бы один процесс.

Метаданные всех активных файлов, представленных в памяти в виде in_core_inode, хранятся в структуре vnode. Структура vnode одинакова для всех файлов, принадлежащих всем различным ФС. В vnode хранятся неизменные характеристики файла.

Необходим для функционирования ФС.

Поля struct vnode

Переменная

Смысл

int v_flag

int v_count

struct filock *v_filocks

struct vfs *v_vfsmountedhere

struct vfs *v_vfsp

struct vfs v_type

struct vfs v_date

struct moleops *v_op

Флаги vnode

Число ссылок на vnode

Блокировки файлов

Указатель на точку монтирования

Указатель на ФС, где находится файл

Тип vnode (regular, dir, link etc)

Данные

Операции vnode, которые разрешены для конкретного файла

Различные ФС представлены данными в ядре – структурами vfs.

Метаданные, всех открытых файлов, на которые ссылается один или несколько процессов представлены в структуре vnode (одинаковы для всех файлов независимо от ФС, в которой они содержатся).

Информация о реальном представлении в ядре содержится в структуре vfs.

Ещё одна структура описания файлов в ФС – vfs sw (switch).

Поля: имя типа ФС, адрес процедуры инициализации, указатель на вектор операций (vsw_vfops), флаги. При инициализации монтирования реальной ФС UNIX коммутирует … и адресует интерфейс для каждой ФС, поддерживаемой ядром.

29. Последовательность действий при монтировании

Утилита монтирования - mount. Демонтирования – umont. Аргументы – точка монтирования.

Аргументы:

- тип ФС;

- точка монтирования;

- дополнительны данные, связанные с реальной ФС;

- флаг (если требуются).

Для QNX: mount dos /dev/mnt/fd0. Для UNIX: mount dos /dev/fd0/mnt

Точка монтирования.

При монтировании осуществляются следующие действия:

1) Поиск vnode (lookup(), name_i()), соответствующей точке монтирования.

2) Проверяется, является ли vnode каталогом и не используется ли другими ФС данная (.) монтир-ия.

3) Поиск элемента-коммутатора ФС vfssw, который соответствует типу монтируемой ФС.

4) Процедура инициализации этого элемента (размещение специальных данных) – init().

5) Ядро размещает структуру vfs и помещает указатель vfs в список подключённых ФС.

6) Заполнение поля *vfs_vnodecovered. Сюда записывается ссылка на точку монтирования. Вычисление этого указателя производится с учетом всех путей. Если ФС – корневая (root) – записывается 0.

7) Заполнение поля *vfs_op – указатель на список операции, определённых для данной ФС.

8) Указатель на данный элемент (vfs) сохраняется в *v_vfsmountedhere/

9) Вызов функции vfs_mount() для данной ФС, он имеет возможность формировать реальную ФС.

Происходит проверка прав монтирования ФС:

- размещение и инициализация файлов данного типа;

- размещение vnode для корневого каталога, подключённого для данной ФС, доступ к которому возможен с помощью операции vfs_root.

10) После подключения ФС, она м.б. адресована по имени точки монтирования (/mnt либо /dev/fd0).