Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры_ОС.rtf
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.9 Mб
Скачать

9 Архитектура виртуальной файловой системы. Монтирование и доступ к файловым системам.

.

Каждая ФС делится на зависимый и независимый от реализации уровни. Независимый уровень – виртуальная ФС – для остальных подсистем ядра представляет некоторую абстрактную ФС. На уровне vfs – виртуальные методанные, следовательно виртуальный индексный дескриптор vnode. Он содержит поле v_data (указатель на данные, относящиеся к реальной ф.с.), v_op (операции vnode, например, открыть, закрыть vnode, прочитать данные файла, адресованого vnode, записать в файл и т.д.) и др.

Монтирование ФС.

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

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

Для инициализации и монтирования ФС UNIX хранит коммутатор ФС.

Монтирование ФС производится системный вызовом mont(). В качестве аргументов передаются:

  • тип монтируемой ФС

  • имя каталога, к которому монтируется ФС

  • флаги (например, доступ к ФС только для чтения)

  • дополнительные данные

При этом производится поиск vnode, соответствующего файлу - точке монтирования и проверка что файл является каталогом и не используется в настоящее время для монтирования других ФС. Затем происходит поиск элемента коммутатора ФС, соответствующего типу монтируемой ФС. Если такой элемент найден, вызывается операция инициализации. При этом выполняется размещение специфических для данного типа ФС данных Потом ядро размещает структуру vfs и помещает ее в связный список подключенных ФС. После подключения ФС может быть адресована по имени точки монтирования

Доступ к ФС.

Процесс совершает операции с файлами, адресуя их при помощи файловых дескрипторов- целых чисел, имеющих локальное для процесса значение. Процесс получает файловый дескриптор с помощью системных вызовов (open(), creat()), выполняющих операцию трансляции имени, в результате которой выделяемый файловый дескриптор адресует определенный inode (или vnode) и, соответственно, файл ФС. Процесс имеет таблицу файловых дескрипторов. Каждая активная запись таблицы(открытый файл) адресует запись системной файловой таблице (она используется всеми процессами).

Блокирование доступа у файлу. Для этого используется системный вызов fcntl() и библиотечная функция lockf. Рекомендательное блокирование – процессы могут руководствоваться блокировками, но ядро не запрещает чтение или запись в блокированный участок. Обязательное блокирование – ограничение на доступ накладывается самим ядром.

12