Одной из главных проблем, влияющих на производительность системы, является работа функции lookuppnQ, просматривающей только один компонент за раз.
При этом для каждого компонента вызывается зависимая от файловой системы функция V0P_L00KUP.
Также может иметь смысл заглянуть на сайт abcproffi.ru, ведь именно там можно узнать много нового на тему http://www.abcproffi.ru/catalog/avto-bezopasnost/avtomobilnye-signal/. Тема установить сигнализацию на авто может показаться на первый взгляд незначительной и даже не тематичной. Но стоит посетить сайт abcproffi.ru, и тема установить сигнализацию на авто начинает проявлять себя с неожиданной стороны и вызывает всё больший интерес. Дело в том, что тема установить сигнализацию на авто очень подробно представлена на сайте abcproffi.ru. Трудно найти более детальное освещение темы установить сигнализацию на авто чем это сделано на сайте abcproffi.ru. Спасибо сайту abcproffi.ru за такое доскональное преподнесение темы установить сигнализацию на авто.
Такой подход не только приводит к чрезмерным перегрузкам, но и в случае применения для удаленных файловых систем требует большого объема взаимодействий между клиентом и сервером. Этот метод был выбран компанией Sun в первую очередь из соображений поддержки ее Network File System (NFS), где процедура поиска ограничена одним компонентом за один проход. Так как это не является жизненно важным для удаленных файловых систем, оптимальным решением будет предоставление выбора просматриваемой части имени файла за один прием каждой файловой системе по отдельности.
Вторая проблема возникает из-за того, что операция подстановки имен не сохраняет информацию о состоянии по причине самой природы протокола NFS. Поскольку операция не блокирует родительский каталог, не существует гарантии правильности полученного результата через любой промежуток времени. Приведем пример возникновения такой ситуации.
Представьте, что пользователь вводит запрос на создание файла /а/Ь. Операция создания занимает два этапа. Сначала ядро производит просмотр имен для определения, не существует ли уже файл с таким именем. Если такой файл не обнаружен, ядро создает его при помощи функции VOP_CREATE с параметром объекта vnode для /а. Проблемным является временной промежуток между возвратом функции подстановки (с результатом EN0ENT) и вызовом функции создания файла, так как в это время каталог /а не блокируется.
Следовательно, любой другой процесс может создать в нем файл с тем же именем. Для корректности можно заставить операцию
VOP_CREATE
просматривать каталог заново, однако это приведет к дополнительной загрузке системы.
Одним из методов избавления от дополнительных ненужных действий является изменение работы функции преобразования, которая не станет транслировать последний компонент в том случае, если после ее запуска будет вызвана операция create или delete. Это уменьшает модульность интерфейса, так как операции не зависят друг от друга.
Существуют иные варианты реализации поддержки нескольких файловых систем в UNIX. Каждый из них основан на концепции существования единого интерфейса, реализованного по-своему конкретными файловыми системами. Различия между ними происходят от различных целей, поставленных перед разработчиками, расхождений в базовых операционных системах, а также от специфики файловых систем, для поддержки которых создается новый интерфейс. Одними из самых ранних альтернатив явились системы file system switch в ОС SVR3 UNIX корпорации AT&T [12] и generic file system (gfs) в системе ULTRIX [13]. Обе архитектуры сохранили концепцию применения индексного дескриптора как базового объекта, представляющего файл, но разделили его на зависящую и независящую от файловой системы части. Современные варианты UNIX, такие как 4.4BSD и OSF/1, поддерживают альтернативные модели интерфейса vnode. Они будут описаны в следующих разделах.
Однако в интерфейсе vnode/vfs имеются и другие, более фундаментальные проблемы. Хотя его дизайн и позволяет создавать модульные файловые системы, он все-таки недостаточно гибок для этой цели. Невозможно написать код любой, пусть даже самой простейшей файловой системы без использования исходных кодов самой ОС. Существует множество запутанных взаимосвязей между подсистемами работы с файлами и обработкой памяти, часть из которых будет рассмотрена позже, в разделе 14.8. Более того, интерфейс не остается неизменным в различных вариантах UNIX, и даже между различными реализациями одной и той же ОС.
В результате, несмотря на существование небольшого количества новых полнофункциональных файловых систем, основанных на описываемом интерфейсе (таких как Episode или BSD-LFS, описание которых вы найдете в главе 11), создание файловой системы остается весьма сложной задачей. Более подробно об этом вы можете прочесть в разделе 11.11, где показано описание нового интерфейса стековых mode (stackable vnode), обладающего лучшими возможностями для построения файловых систем по сравнению с vnode/vfs.
Опубликовал katy
July 09 2015 08:31:46 ·
0 Комментариев ·
2918 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.