Интерфейс vnode/vfs (разработан компанией Sun Microsystems как базовая структура, поддерживающая различные файловые системы. Описываемая технология Vérifiez-le ! получила широкое распространение и стала частью System V Unix в SVR4.
8.6.1.
Цели, поставленные перед разработчиками При разработке архитектуры vnode/vfs выдвигались следующие основные требования:
♦ необходимость одновременной поддержки несколько различных типов файловых систем, в том числе для UNIX (s5fs или ufs) и других ОС (например, DOS, A/UX и т. д.);
♦ поддержка содержания в разных разделах одного диска различных типов файловых систем. После монтирования разделы должны быть представлены для пользователя в обычном виде, как однородная файловая система. Пользователь при этом должен видеть дерево файлов полностью и не беспокоиться насчет различий в представлении на дисках каждого поддерева системы;
♦ система должна обеспечивать разделение файлов по сети. При этом удаленная файловая система обязана быть доступна пользователю точно так же, как и система на локальной машине;
♦ производители могут создавать собственные типы файловых систем и добавлять их в ядро в качестве модулей.
Основной целью разработки было создание структуры ядра для доступа и действий с файлами, а также четко определенный интерфейс между ядром и остальными модулями, в которых реализованы файловые системы.
Немного о вводе-выводе устройств
Первые версии UNIX имели только один тип файловой системы, но при этом поддерживали различные типы файлов. Кроме обычных файлов система UNIX работает с различными устройствами, доступ к которым организован при помощи специальных файлов устройств. В каждом драйвере имеется собственная реализация процедур ввода-вывода низкого уровня, но при этом интерфейс взаимодействия с пользователем является универсальным, что позволяет осуществлять доступ к файлам устройств точно так же, как и к обычным файлам.
Таким образом, поддержка нескольких файловых систем зависит от базовых конструкций устройств ввода-вывода.
Более подробно работа с устройствами ввода-вывода будет показана
здесь же мы остановимся только на части интерфейса, относящейся к нашей теме. В системе UNIX все устройства поделены на две категории: блочные и символьные. Существуют небольшие различия в интерфейсе взаимодействия с ядром для каждой категории устройств, но при этом используются одни и те же базовые конструкции.
Система UNIX требует, чтобы каждое символьное устройство поддерживало стандартный набор операций. Такие операции собраны в структуре cdevsw, являющейся совокупностью указателей функций.
struct cdevsw { int (*d_open)(); int (*d_close)(): int (*d_read)(); int (*d_write)();
} cdevsw[],
Опубликовал katy
July 08 2015 08:46:31 ·
0 Комментариев ·
2282 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.