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

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

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

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

Каждая подключенная файловая система представлена на независимом уровне в виде структуры vfs. Структуры vfs всех подключенных файловых систем организованны в виде односвязного списка. Первой записью списка всегда является корневая файловая система. Структура vfs содержит следующие поля:

  • Vfs_next: следующая файловая система в списке монтирования;

  • Vfs_op: операции файловой системы;

  • Vfs_vnodecovered: (vnode) виртуальный индексный дескриптор, перекрываемый файловой системой. Структура данных vnode одинакова для всех файлов, независимо от типа реальной файловой системы, где фактически располагается файл.

  • Vfs_flag: флаги;

  • Vfs_bsize: размер блока файловой системы;

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

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

Для инициализации и монтирования реальной файловой системы UNIX хранит коммутатор файловых систем, адресующий процедурный интерфейс для каждого типа файловой системы, поддерживаемой ядром. UNIX System V для этого использует глобальную таблицу, каждый элемент которой соответствует определенному типу реальной файловой системы.

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

11.6 Подсистема управления процессами

11.6.1 Типы процессов

Системные процессы – являются частью ядра и всегда расположены в оперативной памяти. Системные процессы не имеют соответствующих им программ в виде исполняемых файлов и запускаются при инициализации ядра системы. Выполняемые инструкции и данные этих процессов находятся в ядре системы. К этим процессам относятся различного рода диспетчеры (диспетчер страничного замещения, памяти ядра и др.). К системным процессам относится и init, являющийся прародителем всех остальных процессов в UNIX. Хотя init не является частью ядра и его запуск происходит из исполнительного файла.

Демоны – не интерактивные процессы, которые запускаются обычным образом – путем загрузки в память соответствующих им программ и выполняются в фоновом режиме. Обычно демоны запускаются при инициализации системы, но после инициализации ядра и обеспечивают работу различных подсистем UNIX: системы терминального доступа, системы печати, сетевого доступа и т.п. Демоны не связаны ни с одним пользователем и не могут непосредственно им управляться. Большую часть времени демоны ожидают пока какой-либо процесс запросит определенную услугу, например печать документа.

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