Архитектура виртуальной файловой системы
Интерфейсы VFS имеют большой набор функций для манипулирования потоками информации и структурами данных, особенно для работы с ?-узлами и файлами. Например, интерфейс I узлов содержит следующие функции: Открытие директории для последующего чтения. Например, чтобы перечислить файлы, входящие в каталог, процесс должен его открыть и считать имена всех файлов, которые в нем находятся… Читать ещё >
Архитектура виртуальной файловой системы (реферат, курсовая, диплом, контрольная)
Рассмотрим архитектуру УЕ8, представленную на рис. 4.1.
Рис. 4.1. Архитектура УЕ5 и ее связь с другими подсистемами:
— потоки данных; — зависимости от;
— потоки управления Большинство функций файловой системы реализовано (как и функций других подсистем ядра) в виде динамически загружаемых модулей. Это позволяет пользователю ОС сконфигурировать ядро так, чтобы оно занимало минимальное место, а необходимые для выполнения модули загружались по мере их вызова. Например, для печати в UNIX используется специальный драйвер, который обслуживает порт принтера. Этот драйвер загружается динамически только в тот момент, когда необходимо вывести информацию на печать. После окончания печати он выгружается и освобождает память.
В состав виртуальной файловой системы входят следующие блоки:
- • модули драйверов физических устройств (Device Drivers), каждый из которых поддерживает контроллер конкретного физического устройства. Поскольку существует большое количество обслуживаемых устройств, то есть и большое количество драйверов к ним;
- • модуль интерфейсов, аппаратно-независимых от устройств (Device Independent Interface), обеспечивает доступ ко всем устройствам в системе;
- • модуль логической файловой системы (Logical System) объединяет все устройства системы в единую виртуальную файловую систему;
- • модуль системных интерфейсов, аппаратно-независимых от устройств (System Independent Interface), обеспечивает единый для всех файловых систем доступ к устройствам в системе. Этот модуль представляет все ресурсы физических устройств ОС, используя либо бит-ориентированный, либо байт-ориентированный интерфейсы;
- • модуль внешнего системного интерфейса (System Call Interface) обеспечивает пользовательским процессам управление и доступ к файловой системе.
Интерфейсы виртуальной файловой системы
Так же как и остальные подсистемы ядра, поддерживает два вида интерфейсов: внешний интерфейс для обслуживания процессов пользователя и внутренний интерфейс для обеспечения взаимодействия с другими подсистемами. Внешний интерфейс обеспечивает для пользователя доступ к файлам и каталогам. К основным файловым операциям ОС иШХ[1] относятся:
- • создание файла, не содержащего данных;
- • удаление файла и освобождение занимаемого им дискового пространства;
- • открытие файла. Цель данного системного вызова — разрешить системе проанализировать атрибуты файла, проверить права доступа к нему и вернуть некоторый числовой параметр для пользовательского обращения к файлу (дескриптор или номер канала);
- • закрытие файла и освобождение места во внутренних таблицах файловой системы;
- • позиционирование. Дает возможность специфицировать место внутри файла, откуда будет производиться считывание (или запись) данных, т. е. определить текущую позицию;
- • чтение данных из файла с текущей позиции. Пользователь должен задать объем считываемых данных и предоставить для них буфер в оперативной памяти;
- • запись данных в файл с текущей позиции. Если текущая позиция находится в конце файла, то его размер увеличивается, в противном случае запись осуществляется на место имеющихся данных, которые, таким образом, теряются.
Есть и другие операции — внешние, например, переименование файла, получение атрибутов файла и т. п.
Операции над файлами типа open/close/read/write/seek/tell и над каталогами типа readdir/create/unlink/chmod/stat и некоторые другие полностью соответствуют стандарту POSIX систем. При работе с каталогами обычно используются следующие системные операции[2]:
- • создание каталога. Вновь созданный каталог включает записи с именами «.» и «.», однако считается пустой;
- • удаление директории. Операция может быть исполнена только над пустым каталогом;
- • открытие директории для последующего чтения. Например, чтобы перечислить файлы, входящие в каталог, процесс должен его открыть и считать имена всех файлов, которые в нем находятся;
- • закрытие каталога после ее чтения для освобождения места во внутренних системных таблицах;
- • поиск. Данный системный вызов возвращает содержимое текущей записи в открытом каталоге. Вообще говоря, для этих целей может использоваться системный вызов read, но в этом случае от программиста потребуется знание внутренней структуры директории;
- • получение списка файлов в каталоге;
- • переименование. Имена директорий можно менять, как и имена файлов;
- • создание файла. При создании нового файла необходимо добавить в каталог соответствующий элемент;
- • удаление файла — удаление из каталога соответствующего элемента. Если удаляемый файл присутствует только в одной директории, то он вообще удаляется из файловой системы, в противном случае система ограничивается только удалением специфицируемой записи.
Интерфейсы VFS имеют большой набор функций для манипулирования потоками информации и структурами данных, особенно для работы с ?-узлами и файлами. Например, интерфейс I узлов содержит следующие функции:
- • chdir () — сменить директорию;
- • chrootQ — сменить root-директорию;
- • dir () — класс директории;
- • closedir () — закрывает дескриптор директории;
- • getcwdQ — получает текущую рабочую директорию;
- • opendir () — открывает дескриптор директории;
- • readdir () — читает вхождение из дескриптора директории;
- • rewinddir () — переходит в начало дескриптора директории;
- • link() / symlink () / unlinkQ / readlink () / follow linkO — управление связями в файловой системе;
- • mkdir () / rmdir () — создание и удаление каталогов;
- • mknod () — создание каталога, специального файла или обычного файла (regular);
- • readpage() / writepage () — чтение или запись страницы физической памяти;
- • smapQ — пометить логический блок файла на физическом устройстве;
- • гепате () — переименовать файл или каталог.
Интерфейс для работы с файлами:
- • ореп () / releaseQ — открыть/закрыть файл;
- • readQ / writeQ — чтение запись файла;
- • create() — создание файла в каталоге;
- • lookupi) — поиск файла в каталоге;
- • select () ~ ожидание, пока свойства файла не изменятся (т.е. файл станет доступным на чтение или запись);
- • heek() / fseek() — поиск в файле по смещению;
- • ттарО — отметить регион файла внутри виртуальной памяти пользовательского процесса;
- • fsyncO / fasyncO — синхронизация некоторого буфера памяти с физическим устройством;
- • truncate() — установить длину файла равной нулю;
- • permissionO — проверка и установка пользовательским процессом свойств файла на выполнение;
- • ioctlO — установить атрибуты файла;
- • revalidateO — проверить, чтобы вся кэшированная информация была правильной.