Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Диплом_Frozen / пояснительная записка / пояснительная записка.doc
Скачиваний:
39
Добавлен:
16.04.2013
Размер:
4.04 Mб
Скачать

1.2.5. Конфигурация технических средств

Ограничения на конфигурацию технических средств накладываются проектом в целом. В проектах MiSTland, согласно тестированию, VFS никогда не занимала сколько-нибудь значительного объема памяти (это связано с небольшими объемами её собственных данных) и не отбирала сколько-нибудь заметное количество процессорного времени. Наиболее серьезно, как показали тесты, машину нагружает распаковка архива.

Требования к программному обеспечению – наличие Windows 98 и старше в случае использования подсистемы ресурсов исполняемых файлов Win32.

1.2.6. Алгоритмы работы модуля

На рис. 1.12 изображен алгоритм работы кода, собирающего последовательность файлов по маске поиска. Этот алгоритм используется при формировании списка итерирования и при нахождении отдельного файла для открытия потока либо для получения его свойств.

Рис.1.12. Схема алгоритма get_files

Необходимо пояснить работу алгоритма. Клиентский код предоставляет путь до искомой последовательности и маску поиска (допустимо конкретное имя файла), а также осуществляет выбор механизма сортировки дескрипторов файлов с одинаковыми виртуальными именами. Используется идиома «предикат», заимствованная из STL. Может использоваться предикат по умолчанию, либо же предоставленный пользовательским кодом. Потом запрашивается ядро VFS, у ядра запрашивается дерево виртуальных директорий. Дерево обходится начиная от корня, при каждой итерации выделяется текущая директория, в соответствии с ней корректируется путь поиска: путь директории считается виртуальной частью пути поиска, остальная часть – реальной, соответственно реальная часть пути должна быть передана подсистемам. Из директории берется список замонтированных в неё подсистем, к каждой подсистеме формируется запрос на существование файла с именем «реальная часть + маска поиска». Для этого используется собственный итератор подсистемы. Все найденные таким образом дескрипторы сохраняются в контейнер со структурой, несколько напоминающей графический эквалайзер (рис.1.13).

Рис. 1.13. Схема контейнера файлов виртуальной директории

Контейнер является списком, элементами которого являются списки дескрипторов с одинаковыми виртуальными именами, отсортированных в соответствии с переданным предикатом.

На рисунке 1.14 изображен алгоритм работы кода, получающего дескриптор файла по введенному имени. Работа аналогична алгоритму get_files, за исключением таких деталей:

1) В системе существует кэш для одиночных запросов, поэтому перед запуском сканирования дерева проверяется он – в случае совпадения имен искомого и закешированного дескрипторов выдается закешированный.

2) Наружу вместо контейнера выдается первый его элемент.

На рисунке 1.15 изображен алгоритм работы кода, монтирующего и демонтирующего подсистемы.

При монтировании клиентский код должен создать подсистему и передать её ядру VFS вместе с виртуальным путем, по которому должна находиться эта подсистема. У ядра запрашивается дерево и обходится в поиске директории с именем, совпадающим с желаемым виртуальным путем. Если такая находится, подсистема монтируется в неё. Если нет, берется директория с наиболее длинным подходящим виртуальным путём и в ней создаются недостающие директории, в последнюю из них монтируется подсистема. При демонтировании подсистемы VFS, конечно, ограничивается только поиском по дереву.

Рис. 1.14. Схема алгоритма get_descriptor

Рис. 1.15. Схема алгоритма mount

Соседние файлы в папке пояснительная записка
  • #
    16.04.2013190.46 Кб24UML-диаграмма system.vsd
  • #
    16.04.2013207.87 Кб25UML-диаграмма VFS (общая).vsd
  • #
    16.04.201399.33 Кб23UseCase всей VFS.vsd
  • #
    16.04.2013106.5 Кб23Входные и выходные данные.vsd
  • #
    16.04.2013112.13 Кб24Общая схема работы модуля.vsd
  • #
  • #
    16.04.2013109.57 Кб23Схема алгоритма get_descriptor.vsd
  • #
    16.04.2013106.5 Кб23Схема алгоритма get_files.vsd
  • #
    16.04.2013100.35 Кб23Схема алгоритма mount.vsd
  • #
    16.04.201396.26 Кб24технологическая - Activity.vsd
  • #
    16.04.201379.87 Кб24технологическая - Class.vsd