Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Answers.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
1.55 Mб
Скачать

Монтирование файловых систем

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

Каждая подключенная файловая система представлена на независимом уровне в виде структуры vfs, аналоге записи таблицы монтирования дисковой файловой системы. Структуры vfs всех подключенных файловых систем организованы в виде односвязного списка, в совокупности обеспечивая информацию, необходимую для обслуживания всего иерархического дерева, а также информацию о реальной файловой системе, которые не изменяются на протяжении работы. Первой записью списка всегда является корневая файловая система. В дальнейшем, список vfs мы будем называть устоявшимся термином - таблица монтирования. Поля структуры vfs приведены в табл. 3.3.

Таблица 3.3 Поля структуры vfs

struct vfs *vfs_next

Следующая файловая система в списке монтирования.

struct vfsops *vfs_op

Операции файловой системы.

struct vnode *vfs_vnodecovered

vnode, перекрываемый файловой системой.

int vfs_flag

Флаги: только для чтения, запрещен бит SUID и т. д.

int vfs_bsize

Размер блока файловой системы.

caddr_t vfs_data

Указатель на специфические данные, относящиеся к реальной файловой системе.

Поле vfs_data содержит указатель на данные реальной файловой системы. Например, для дисковой файловой системы s5fs, это поле указывает на суперблок, размещенный в памяти.

Поле vfs_op указывает на операции файловой системы, которые в терминах объектно-ориентированного подхода могут быть названы виртуальными методами объекта vfs. Возможные операции файловой системы приведены в табл. 3.4. Поскольку они существенным образом зависят от архитектуры и конкретной реализации, поля vfs_op заполняются указателями на соответствующие функции реальной файловой системы при ее монтировании.

Таблица 3.4. Операции файловой системы

int (*vfs_mount)()

Подключает файловую систему. Обычно операция включает размещение суперблока в памяти и инициализацию записи в таблице монтирования.

int (*vfs_unmount)()

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

int (*vfs_root)()

Возвращает корневой vnode файловой системы.

int (*vfs_statfs)()

Возвращает общую информацию о файловой системе, в частности: размер блока хранения данных, число блоков,число свободных блоков,число inode.

int (*vfs_sync)()

Актуализирует все кэшированные данные файловой системы.

int (*vfs_fid)()

Возвращает файловый идентификатор (fid - file Identifier), однозначно адресующий файл в данной файловой системе. В качестве fid может, например, выступать номер inode реальной файловой системы.

int (*vfs_vget)()

Возвращает указатель на vnode для файла данной файловой системы, адресованного fid.

Для инициализации и монтирования реальной файловой системы UNIX хранит коммутатор файловых систем (File System Switch), адресующий процедурный интерфейс для каждого типа файловой системы, поддерживаемой ядром. UNIX System V для этого использует глобальную таблицу, каждый элемент которой соответствует определенному типу реальной файловой системы, например s5fs, ufs или nfs. Элемент этой таблицы vfssw имеет поля, указанные в табл. 3.5.

Таблица 3.5. Коммутатор файловых систем

char *vsw_name

Имя типа файловой системы

int (*vsw_init)()

Адрес процедуры инициализации

struct vfsops *vsw_vfsops

Указатель на вектор операций файловой системы

long vsw_flag

Флаги

Монтирование файловой системы производится системным вызовом mount(2). В качестве аргументов передаются тип монтируемой файловой системы, имя каталога, к которому подключается файловая система (точка монтирования), флаги (например, доступ к файловой системе только для чтения) и дополнительные данные, конкретный вид и содержимое которых зависят от реализации реальной файловой системы. При этом производится поиск vnode, соответствующего файлу - точке монтирования (операция lookup() или namei() трансляции имени), и проверяется, что файл является каталогом и не используется в настоящее время для монтирования других файловых систем.

Затем происходит поиск элемента коммутатора файловых систем vfssw[], соответствующего типу монтируемой файловой системы. Если такой элемент найден, вызывается операция инициализации, адресованная полем vsw_init().

После этого вызывается операция vfs_mount(), соответствующая данному типу файловой системы. Конкретные действия определяются реализацией файловой системы и могут существенно различаться. Например, операция монтирования локальной файловой системы ufs предусматривает считывание в память метаданных системы, таких как суперблок, в то время как монтирование удаленной NFS файловой системы включает передачу сетевого запроса файловому серверу. Однако монтирование предусматривает выполнение и ряда общих операций, включающих:

проверку соответствующих прав на выполнение монтирования;

размещение и инициализацию специфических для файловой системы данного типа данных, сохранение адреса этих данных в поле vfs_data элемента vfs;

размещение vnode для корневого каталога подключаемой файловой системы, доступ к которому осуществляется с помощью операции vfs_root().

После подключения файловая система может быть адресована по имени точки монтирования. В частности, при отключении файловой системы с помощью системного вызова umount(2), в качестве аргумента ему передается имя точки монтирования. Адресация с помощью специального файла устройства, как это происходило раньше, нарушает унифицированный вид виртуальной файловой системы, так как некоторые типы вообще не имеют такого устройства (например, NFS).

Рис.3.10 Монтирование файловой системы

Билет 6

11. Концепции ОС семейства Novell NetWare. NLM. Нити. Кольца защиты.

Концепции ОС семейства Novell NetWare

Структурная схема OC

На рисунке 2.2 представлена укрупненная структурная схема ОС NetWare.

Рис. 2.2. Структурная схема ОС NetWare

Ядро ОС NetWare загружается в ОП файлового сервера из-под DOS (программа SERVER.EXE). Программа SERVER.EXE выполняет следующие действия.

1. Читает из каталога DOS файл STARTUP.NCF и интерпретирует закодированные в нём операторы. Этот небольшой текстовый файл обычно содержит следующие команды:

  • оператор загрузки (load) NLM-модуля DOMAIN.NLM (только для версии 4.х); этот модуль читается из каталога DOS и обеспечивает защиту оперативной памяти файлового сервера,

  • оператор загрузки NLM-модуля драйвера жесткого диска, например ISADISK.DSK; после этого становится доступной файловая система NetWare,

  • может быть некоторые SET-команды, например, указание максимального уровня вложенности каталогов файловой системы NetWare.

2. Монтирует том SYS файлового сервера и открывает каталог SYSTEM на этом томе.

3. Читает из каталога SYSTEM конфигурационный файл AUTOEXEC.NCF и интерпретирует закодированные в нем операторы. Этот небольшой текстовый файл обычно содержит следующие группы команд:

  • некоторые SET-команды, например, обеспечивающие переход на летнее и зимнее время,

  • SET-команды, определяющие Bindery-контексты в дереве NDS (только для версии 4.х),

  • операторы, указывающие имя файлового сервера и внутренний номер сети,

  • операторы загрузки драйверов сетевых адаптеров (например, NE2000.LAN) и их связи с протоколом IPX,

  • операторы загрузки некоторых дополнительных NLM-модулей.

Далее устанавливаются значения SET-параметров, принятые по умолчанию. Изменяя SET-параметры, можно оптимизировать работу операционной системы. Эти параметры следует изменять с помощью SET-команд, которые можно включать в конфигурационные файлы STARTUP.NCF и AUTOEXEC.NCF или вводить с консоли файлового сервера.

В процессе функционирования ядро выполняет также роль диспетчера нитей (задач) операционной системы. Каждая нить или связана с каким-либо NLM-модулем, или представляет внутреннюю задачу ОС. NLM-модуль - это исполняемый файл ОС NetWare 3.х и 4.х.

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

  • объектах,

  • их свойствах (атрибутах),

  • значениях этих свойств.

NetWare поддерживает возможность описания различных типов объектов: пользователей, групп, файловых серверов, очередей печати, серверов печати и т.д. Каждый из этих типов объектов имеет свой набор свойств. Например, объект "пользователь" характеризуется следующими атрибутами: пароль, балансовый счет, список групп, участником которых является пользователь, и т.д. Значением атрибута (свойства) является та совокупность данных, которая содержится в полях этого атрибута. Системная база данных представляет собой множество файлов, хранящихся на томе SYS файлового сервера. В NetWare 3.х и 4.х эти базы организованы по-разному. В NetWare 3.х она представлена в виде БД Bindery, а в NetWare 4.х - в виде глобального сетевого каталога NDS. NDS стала мощным средством управления большими корпоративными сетями.

Следует подчеркнуть, что в NetWare 3.х и 4.х данные о защите файлов и каталогов отделены от системной базы данных и хранятся в элементах DET томов файлового сервера.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]