Электронная библиотека диссертаций и авторефератов России
dslib.net
Библиотека диссертаций
Навигация
Каталог диссертаций России
Англоязычные диссертации
Диссертации бесплатно
Предстоящие защиты
Рецензии на автореферат
Отчисления авторам
Мой кабинет
Заказы: забрать, оплатить
Мой личный счет
Мой профиль
Мой авторский профиль
Подписки на рассылки



расширенный поиск

Исследование и реализация эффективных методов записи активности пользователя персонального компьютера Лавров Валерий Александрович

Исследование и реализация эффективных методов записи активности пользователя персонального компьютера
<
Исследование и реализация эффективных методов записи активности пользователя персонального компьютера Исследование и реализация эффективных методов записи активности пользователя персонального компьютера Исследование и реализация эффективных методов записи активности пользователя персонального компьютера Исследование и реализация эффективных методов записи активности пользователя персонального компьютера Исследование и реализация эффективных методов записи активности пользователя персонального компьютера Исследование и реализация эффективных методов записи активности пользователя персонального компьютера Исследование и реализация эффективных методов записи активности пользователя персонального компьютера Исследование и реализация эффективных методов записи активности пользователя персонального компьютера Исследование и реализация эффективных методов записи активности пользователя персонального компьютера
>

Диссертация - 480 руб., доставка 10 минут, круглосуточно, без выходных и праздников

Автореферат - бесплатно, доставка 10 минут, круглосуточно, без выходных и праздников

Лавров Валерий Александрович. Исследование и реализация эффективных методов записи активности пользователя персонального компьютера : Дис. ... канд. техн. наук : 05.13.11 : Томск, 2005 169 c. РГБ ОД, 61:05-5/2296

Содержание к диссертации

Введение

1. Системы и модели для записи активности пользователя 16

1.1. Запись активности пользователя и ее применение 16

1.2. Требования, предъявляемые к систем записи активности пользователя 19

1.3. Модель системы для записи активности пользвателя 23

1.4. Экспериментальное тестирование современных систем 26

2. Метод записи активности пользователя на основе синхронного детектирования событий графического ядра операционной системы 30

2.1. Новая модель записи активности пользователя на основе синхронного детектирования событий графического ядра операционной системы 30

2.2. Новый формат хранения результирующей записи предложенной модели 32

2.3. Пример реализации комбинированного векторно-растрового формата 34

2.4. Выводы 40

3. Архитектура системы записи активности пользователя 41

3.1. Технические требования к системе и способы их реализации 41

3.2. Взаимодействие с операционной системой Windows 98 46

3.3. Взаимодействие с операционной системой Windows 2000/ХР 52

3.4. Универсальный метод захвата 70

3.5. Дополнительные возможности 73

3.6. Выводы 79

4. Программная реализация системы 82

4.1. Использованные среды разработки 84

4.2. Использование библиотеки сжатия ZLib 87

4.3. Классы и структуры 90

4.4. Графический интерфейс пользователя 96

4.5. Функционирование программы ВВ FlashBack Recorder 99

4.6. Реализация драйвера ВВ Capture Driver 100

4.7. Функционирование программы ВВ FlashBack Recorder в режиме Compatibility Mode 109

4.8. Установка системы ВВ FlashBack 110

4.9. Свободно распространяемый проигрыватель FBR файлов Free FlashBack Player 111

4.10. Центр поддержки программных продуктов ВВ FlashBack Support 112

4.11. Экспериментальное исследование системы ВВ Flashback и сравнение ее с аналогичными системами 114

4.12. Выводы 121

Заключение 124

Введение к работе

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

АКТУАЛЬНОСТЬ РАБОТЫ

В связи с большим распространением персональных компьютеров за последние годы резко возросло количество разнообразных приложений. Работа с компьютером усложняется с каждым годом, поэтому требуются специальные средства для быстрого обучения работе с приложениями, для тестирования программных продуктов и для создания рекламных роликов программ.

Существует специальный класс программ [29, 34, 44, 46, 47, 51 - 53, 58, 59, 61, 64, 67, 69, 79, 82 - 84, 86], которые могут осуществлять запись активности пользователя (изменения графического содержимого экрана, звукового сопровождения, разнообразных событий клавиатуры, мыши, других устройств ввода). Одни программы сохраняют только отдельные статические снимки экрана, другие имеют возможность создавать динамические видеоролики, которые при воспроизведении показывают все записанные действия пользователя. Весьма важным с точки зрения пользователя являются дополнительные функциональные возможности, такие как вставка маркеров во время записи, редактирования записанного видеоролика, удобные средства навигации при воспроизведении и т.п.

Существующие модели [85, 87] основываются на том, что часть информации в ходе записи может быть утеряна, за счет чего повышается производительность и уменьшается объем результирующей записи. Но такой подход абсолютно неприменим в области тестирования сложных программных продуктов. Программист должен воспроизвести в точности все действия тестера, который обнаружил проблему. К тому же, требования эффективности, предъявляемые к таким системам, противоречивы. С одной стороны, необходимо добиться наивысшей точности воспроизведения исходной активности с точки зрения адекватности изображения и времени наступления событий, с другой - получить минимальный размер записанного видеоролика. Еще одно требование связано с минимизацией дополнительной нагрузки на процессор компьютера, на котором происходит запись активности.

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

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

ЦЕЛЬ РАБОТЫ

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

МЕТОДИКА ИССЛЕДОВАНИЙ

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

НАУЧНАЯ НОВИЗНА РАБОТЫ,

по мнению автора, заключается в следующем:

  1. Разработан новый метод регистрации активности пользователя, основанный на синхронном детектировании событий графического ядра операционной системы.

  2. Разработан новый векторно-растровый формат хранения данных об активности пользователя отличающийся тем, что элементы данных привязаны к меткам времени, что обеспечивает высокую точность регистрации. Формат обеспечивает более высокую степень компрессии по сравнению с другими известными форматами.

  3. Предложено архитектурное решение, реализующее метод регистрации активности пользователя для операционных систем семейства Windows, минимизирующее нагрузку на центральный процессор.

ПРАКТИЧЕСКАЯ ЦЕННОСТЬ РАБОТЫ

  1. Предложенные в работе методы регистрации активности пользователя ЭВМ и формат хранения данных могут быть использованы для создания эффективных приложений, которым требуется функция записи активности пользователя.

  2. На основе предложенных автором методов, форматов и архитектурных решений автором создан ряд программных продуктов для регистрации активности пользователя (ВВ FlashBack и др.).

ВНЕДРЕНИЕ ПОЛУЧЕННЫХ РЕЗУЛЬТАТОВ

Разработанный автором программный комплекс для компании Blueberry Consultants Ltd. является коммерческим продуктом и распространяется по интернету. К настоящему времени продано более 1000 копий этого комплекса.

ПУБЛИКАЦИИ ПО РАБОТЕ

Основное содержание работы отражено в статьях [8 — 10, 12], брошюре [7] и в тезисах [6, 11, 13, 90].

АПРОБАЦИЯ РАБОТЫ

Отдельные результаты работы докладывались и обсуждались на следующих конференциях:

  1. Восьмой Российско-Корейский международный симпозиум по науке и технологиям, Томск, 2004 г.

  2. VIII всероссийская научно-практическая конференция, Анжеро-Судженск, апрель 2004 г.

3. Всероссийская научная конференция «Наука. Технологии. Инновации»,
Новосибирск, декабрь 2004 г.

#

*

4. IV всероссийская научно-практическая конференция «Информационные недра Кузбасса», Кемерово, 2005.

КРАТКОЕ СОДЕРЖАНИЕ РАБОТЫ

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

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

Camtasia 2.0, метод периодического захвата экрана;

DemoForge 1.2, метод, основанный на использовании протокола RDP -Remote Desktop Protocol;

WinCam 2000, метод периодического захвата экрана.

В 1.1 дается определение понятия записи активности пользователя. Описываются области применения систем записи активности пользователя. Выделяются основные требования, которые предъявляются для каждой области применения. Системы могут применяться в таких областях, как создание демонстрационных видеороликов программ и систем, создание обучающих систем, тестирование пакетов программ и онлайновые службы поддержки программных продуктов.

В 1.2 вводятся свойства идеальной системы записи активности пользователя. Проводится анализ различных областей применения, в которых свойства идеальной системы невозможно полностью реализовать.

В 1.3 анализируются существующие модели систем записи активности пользователя, делается вывод о существенных недостатках при применении систем в области тестирования программных продуктов. Существующие мо-

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

В 1.4 проводится практический анализ современных систем записи активности пользователя Camtasia, WinCam и DemoForge. В ходе тестирования оценивались такие качества систем, как нагрузка на центральный процессор, размер результирующей записи и точность воспроизведения. Из таблицы видно, что ни одна из систем не позволяет решать все задачи на самом высоком уровне, так как они отнимают много процессорного времени или теряют важную информацию в ходе записи. Для тестирования программных продуктов такие критерии являются важными, поэтому использование существующих методов в этой области не будет оправданным.

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

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

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

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

В 2.3 приводится физическая структура комбинированного векторно-растрового формата хранения данных FBR об активности пользователя.

В третьей главе диссертации предлагается новая архитектура эффективной системы записи активности пользователя на основе модели, предложенной в 2.1. Учитываются также требования эффективности и функциональной широты.

В 3.1 описываются технические требования к эффективной системе и способы их реализации. Требования включают в себя следующие элементы:

поддержка всех современных ОС семейства Windows;

высокая точность воспроизведения при минимальном размере видеоролика;

минимальное воздействие на центральный процессор;

возможность записи звукового сопровождения, событий клавиатуры и мыши;

наличие разнообразных средств редактирования;

экспорт в популярные обменные форматы (Flash, MPEG, WMW);

удобство системы навигации при проигрывании;

компонентность.

В 3.2 рассматриваются способы реализации требований к системе записи активности пользователя с учетом специфики структуры операционной системы Windows 98. Перехват графических событий операционной системы возможно осуществить по скрытой от пользователя фирменной технологии GDI Hooking, для чего должна быть разработана специальная программа.

В ОС Windows 2000/ХР фирмой Microsoft заложена технология Mirror Driver, которая предназначена для использования системой удаленного управления рабочим столом. Для того чтобы использовать этот механизм необходимо написать собственный дополнительный к основному видеодрай-

вер, которому ОС посылает копии всех графических событий. Реализация данной технологии подробно описана в 3.3.

В операционной системе Windows NT ни тот, ни другой способы неприменимы, потому что технология Windows NT не позволяет легко встраиваться в цепочку графических вызовов. Для этой ОС возможен единственный способ, заключающийся в периодическом захвате всего содержимого видеопамяти с последующим анализом. Этот способ универсален, пригоден для любой ОС, однако он не учитывает особенности команд графической подсистемы и поэтому обеспечивает меньшую компрессию, к тому же существенно нагружает центральный процессор для обработки данных. При этом существует вероятность потери событий между двумя соседними захватами. Реализация универсального метода захвата описана в 3.4.

В 3.5 предлагаются различные механизмы, которые с одной стороны могут облегчить работу с системой, а с другой стороны расширить ее функциональные возможности. Это касается продолжительной записи, записи звукового сопровождения, сохранения нажатий кнопок клавиатуры и мыши, сохранения выводимой на экран текстовой информации.

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

Современные коммерческие приложения разрабатываются в основном с использованием средств разработки, основанных на языке C++. Существуют две самые распространенные среды для платформ Windows - Microsoft Visual Studio C++ и Borland C++ Builder. Каждая из сред разработки имеет достоинства и недостатки, которые описаны в 4.1.

Приложение с графическим пользовательским интерфейсом было создано в среде Borland C++ Builder, а объекты ActiveX и свободно распространяемый проигрыватель написаны в среде Visual Studio.

Важную роль в разработанной системе играют процедуры сжатия без потерь. Существует ряд открытых библиотек сжатия, примером которой является zlib. Описание использования библиотеки zlib в реализуемой системе приводится в 4.2.

Исходя из требования компонентности, пакет реализован в виде библиотеки классов. Данный подход обеспечивает гибкость при работе готовой системы в различных средах, а также легкое использование созданного кода для создания других приложений. Описание классов и структур приводится в 4.3.

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

Вопросам взаимодействия между отдельными компонентами системы посвящен 4.5. В нем описывается последовательность действий пользователя и соответствующих вызовов внутри системы при записи активности пользователя.

Непосредственная реализация драйвера по технологии Mirror Driver рассматривается в 4.6. Приводятся примеры базового кода драйвера, описывается взаимодействие между отдельными частями драйвера и передача данных между драйвером и приложением пользователя Win32. Здесь же рассматривается вопрос отладки кода драйвера во время его разработки, что является непростой задачей.

Не во всех операционных системах возможно использование специального драйвера для захвата экрана. Описание работы системы в режиме совместимости с основными версиями ОС Windows приводится в 4.7.

Особенности установки программы на компьютеры с различными операционными системами описываются в 4.8.

Для проигрывания FBR-файлов необходим специальный проигрыватель. Для разработки небольшого проигрывателя была использована среда MS VS C++. Вопросам создания проигрывателя и его функциональных особенностей посвящен 4.9.

В 4.10 предлагается способ использования системы для он-лайновой службы поддержки.

Результаты экспериментального тестирования приводятся в 4.11. Описывается методология тестирования и использованное для тестирования оборудование, отдельные тесты и приводятся результаты тестирования. Экспериментальное тестирование показало, что по совокупности всех критериев, система FlashBack оказалось лучшей среди всего набора тестируемых систем.

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

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

Для хранения специфических результирующих данных об активности пользователя в рамках предложенной модели, был разработан формат отли-

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

На основе предложенной модели, а также сформулированных технических требований к функциональности и эффективности, разработана архитектура системы, учитывающая особенности операционных систем семейства Windows, включающего Windows 98, Windows 2000/ХР, Windows NT.

Разработанная архитектура системы записи активности пользователя была реализована в виде пакета программ ВВ FlashBack

Пакет ВВ FlashBack является коммерческой системой, состоящей из линейки специализированных продуктов и распространяемой британской компанией Blueberry Consultants Ltd. Первая коммерческая версия была выпушена в сентябре 2003 года.

В приложении 1 диссертации приводится руководство пользователя по использованию системы ВВ FlashBack.

В приложении 2 представлены веб-страницы продуктов ВВ FlashBack, ВВ TestAssistant и ВВ FlashBack SDK.

В приложении 3 находятся отзывы различных организаций на систему ВВ FlashBack.

Требования, предъявляемые к систем записи активности пользователя

При работе пользователя за компьютером с графическим интерфейсом он всегда производит манипуляции с графическими объектами на экране компьютера, работает с мышью, клавиатурой и другими устройствами ввода данных. Все эти действия входят в понятие «активность пользователя». Под записью активности пользователя будем понимать процесс, в ходе которого производится запись всех действий пользователя с целью их последующего воспроизведения на любом компьютере.

Первыми программами, записывающими активность пользователя, были макро рекордеры (macro recorder) [42]. Программы способны сохранять, а затем и воспроизводить все нажатия кнопок клавиатуры и действия мыши. К сожалению, сохраненная запись корректно может быть воспроизведена только на том компьютере, на котором она была создана.

Для полноценной записи можно использовать другие современные программы. В настоящее время на рынке программных продуктов представлен ряд пакетов предназначенных для записи активности пользователя в различных областях применения [29, 34, 44, 46, 47, 51 - 53, 58, 59, 61, 64, 67, 69, 79, 82 - 84, 86]. Каждый из программных продуктов реализует тот или иной метод записи. Одни программы могут делать только снимки отдельно взятого экрана, а другие могут записывать все, что происходит на экране компьютера, звуковое сопровождения, все нажатия кнопок мыши и клавиатуры.

При создании программного продукта фирмы часто сталкиваются с проблемой рекламы созданного продукта на рынке. Как правило, они создают специальные web-сайты в Интернете, где рассказывают о возможностях своей системы, предоставляют различные варианты ее покупки, осуществляют техническую поддержку. Просто прочитав описание и посмотрев изображение отдельных окон рекламируемой программы, зачастую трудно понять ее смысл, возможности и функциональные особенности. Для того, чтобы показать эти особенности, было бы неплохо создать видеоролик, демонстрирующий возможности программы [27, 88].

Современные программные продукты типа MS Office являются достаточно сложными для изучения простым пользователем, который ни разу ничего подобного на компьютере не делал. Чтобы помочь пользователю научиться пользоваться программой, можно создать видеоролик, демонстрирующий основные операции, которые пользователь может производить с программой. Посмотрев такой ролик, пользователь всегда сможет повторить то, что показано в нем. Более того, пользователь может шаг за шагом выполнять последовательность действий, о которых рассказывается в видеоролике. Рано или поздно пользователь полностью запоминает необходимые операции и начинает усовершенствовать свои навыки пользования программным продуктом [11,28,55,65,43].

В связи с тем, что в разработке программного продукта, как правило, участвует множество людей, отвечающих за различные части кода, бывает сложно обнаружить возможные места ошибок. Более того, люди, тестирующие программы, могут быть и непрограммистами. Можно использовать специальный способ тестирования, при котором разработчик всегда получит необходимую информацию об обнаруженной ошибке в программе [1, 13, 14, 24, 33, 35, 54].

На машине тестера предварительно запускается программа, которая записывает все действия пользователя в видеоролик. Тестер производит различные действия с тестируемой программой. При обнаружении каких-либо отклонений в работе программы тестер прерывает запись видеоролика, создает отчет о проведенном тестировании и прикрепляет к этому отчету записанный видеоролик. Отчет затем отсылается разработчикам программного продукта.

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

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

Работа службы поддержки может быть облегчена, если будет создан специальный веб-сервис, с помощью которого, шаг за шагом, пользователь может достоверно сообщить о проблеме и получить квалифицированную помощь. Ему даже не надо будет устанавливать программу создания видеороликов, так как она будет встроена в HTML страницы в виде ActiveX-объекта. Необходимые параметры для правильной работы этого объекта на машине клиента могут изменяться динамически и настраиваются техническим персоналом службы поддержки.

Пример реализации комбинированного векторно-растрового формата

Из-за того, что многие пользователи как можно дольше стараются сохранить свои вложения в программные продукты, которые они используют, в мире до сих пор используется несколько операционных систем семейства Windows. Это множество включает в себя Windows 98, Windows NT 4.0, Windows 2000 и Windows ХР. Программный комплекс для создания видеороликов должен работать на всех вышеперечисленных платформах с целью охватить как можно большее число потенциальных пользователей. Так как эти операционные системы сильно различаются, то система должна автоматически отключать или, наоборот, включать средства программного комплекса, которые поддерживаются или не поддерживаются той или иной операционной системой. Для Windows NT 4.0, Windows 2000 и Windows ХР существует еще проблема администраторских прав на компьютере. Без этих прав пользователь не сможет установить, изменить или удалить системные компоненты. Поэтому программа должна быть сделана так, чтобы, независимо от прав пользователя, она оставалась работоспособной. 2. Высокая точность воспроизведения при минимальном размере видеоролика. Точность воспроизведения в свою очередь может быть декомпозирована на две составляющих: точность воспроизведения статических изображений и точность воспроизведения последовательности статических изображении, а также событий мыши и клавиатуры.

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

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

Нарушения статических изображений и их последовательности определяются субъективно при просмотре записанных видеороликов и их визуальном сравнении.

Размер видеоролика зависит от метода компрессии. Суть любой компрессии аудиовизуального объекта заключается либо в использовании специфических особенностей объекта (сжатие без потерь), либо в использовании особенностей психофизиологического восприятия объекта (сжатие с потерями). Целью нашей работы являлось построение механизма сжатия без потерь, обеспечивающего наивысшее качество воспроизводимого объекта. При этом используется специфическая особенность, состоящая в том, что последовательность изображений на экране монитора представляет собой не случайный видеосюжет, а совокупность экранных кадров, построенных графической операционной системой компьютера. Предложенный в параграфе 2.3 комбинированный векторно-растровый формат FBR целиком основан на этой специфической особенности, он хранит не произвольные изображения, а команды и данные графического интерфейса. Сам по себе формат FBR является универсальным, но эффективность его применения зависит от того, насколько тонко используется специфические особенности той или иной операционной системы.

С этой точки зрения графические подсистемы операционных систем Windows 98, Windows NT и Windows 2000/ХР существенно различаются, взаимодействие в них происходит по-разному. Описание различий можно найти в литературе [48, 69, 72, 75]. В системе Windows 98 все низкоуровневые драйверы являются 16-битными, а приложения, которые их используют, - 32-х битные. Перехват графических событий операционной системы возможно осуществить по скрытой от пользователя фирменной технологии GDI Hooking, для чего должна быть разработана специальная программа. Данная технологии детально описана в параграфе 3.2.

В ОС Windows 2000/ХР фирмой Microsoft заложена технология Mirror Driver, которая предназначена для использования системой удаленного управления рабочим столом. Для того чтобы использовать этот механизм необходимо написать собственный дополнительный к основному видеодрайвер, которому ОС посылает копии всех графических событий. Подробно реализация данной технологии описана в параграфе 3.3. В операционной системе Windows NT ни тот, ни другой способы неприменимы, потому что технология Windows NT не позволяет легко встраиваться в цепочку графических вызовов. Для этой ОС возможен единственный способ, заключающийся в периодическом захвате всего содержимого видеопамяти с последующим анализом. Этот способ универсален, пригоден для любой ОС, однако он не учитывает особенности команд графической подсистемы и поэтому обеспечивает меньшую компрессию, к тому же существенно нагружает центральный процессор для обработки данных. При этом существует вероятность потери событий между двумя соседними захватами. Реализация универсального метода захвата описана в параграфе 3.4.

Взаимодействие с операционной системой Windows 2000/ХР

Механизм виртуальной памяти в Windows 98 позволяет выполнять одновременно 32-, 16-битные приложения и приложения MS-DOS. Это стало возможным благодаря использованию особой структуры для виртуальной памяти, которая немного отличается от структуры виртуальной памяти семейства Windows NT, но это отличие является существенным.

Менеджер памяти в Windows 98 использует страничную память с 32-бит-ной линейной адресацией, что обеспечивает полностью 32-битное виртуальное пространство, имеющее максимальный размер в 4 гигабайта. Это виртуальное пространство разбивается менеджером памяти на четыре части, называемые аренами, которые используются для различных типов приложений. Первая арена, от 0 до 4 мегабайт, используется для совместимости с приложениями Windows 3.11 и MS-DOS. Следующая арена от 4 мегабайт до 2 гигабайт - это частное адресное пространство для каждого Win32 процесса. Третья арена, от 2 до 3 гигабайт, используется как разделяемое адресное пространство и используется для отображаемых в память файлов (memory mapped files) и 16-битных компонент. И четвертая арена, от 3 до 4 гигабайт, используется для системных нужд.

Структура виртуального адресного пространства для Windows 98 представлена в табл. 11. Арена совместимости содержит текущую виртуальную машину и другое программное обеспечение. Каждый Win32 процесс получает свое частное адресное пространство, в котором он и исполняется. Все 16-битные приложения работают в разделяемой арене. Системная арена используется для хранения любого кода нулевого кольца - кода виртуальной машины и виртуальных драйверов устройств. Эта область недоступна никаким 16-или 32-битным процессам.

Арена совместимости находится в первых четырех мегабайтах системного адресного пространства и доступна для 16-битных и MS-DOS приложений. Текущая виртуальная машина занимает самый нижний мегабайт этой арены. Оставшиеся три мегабайта, как правило, пустые, но могут содержать драйверы устройств MS-DOS и резидентные программы. Эта арена недоступна для чтения и записи для Win32 приложений. Это значит, что Win32 приложения не могут выделять память, загружать DLL или быть загруженными в эту область памяти.

Частная арена содержит адресное пространство текущего исполняемого Win32 процесса. Так как каждый Win32 процесс имеет свое адресное пространство, содержимое этой арены будет зависеть от того, какой процесс является текущим. Менеджер памяти отображает страницы частного адресного пространства процесса для того, чтобы другие процессы не могли иметь доступ к этой арене и не могли нарушить процесс. Код процесса, данные и динамически выделяемая память существуют в частном адресном пространстве. За исключением системных разделяемых DLL (USER32.DLL, GDI32.DLL и KERNEL32.DLL), все DLL, которые загружаются процессом, отображаются на частное адресное пространство процесса. Библиотеки расширения Windows, такие как SHELL32.DLL, COMSTL32.DLL и COMDL-G32.DLL, не являются системными разделяемыми DLL и поэтому отображаются в частное адресное пространство процесса.

Так как консольное Win32 приложение является обычным Win32 процессом, но без графического пользовательского интерфейса, то оно также загружается в частное адресное пространство, как и любое графическое приложение. Минимальный начальный адрес загрузки Win32 процесса под Windows 98 4 мегабайта, так как первые 4 мегабайта заняты под арену совместимости.

Разделяемая арена является уникальной для семейства ОС Windows 95, к которому относится и Windows 98. Эта область содержит компоненты, которые должны быть отображены на адресное пространство каждого исполняемого процесса. Все страницы этой арены отображаются идентично во всех процессах. 16-битная глобальная куча, которая содержит все 16-битные приложения, DLL и 16-битные системные DLL, находится в разделяемой арене. Win32 разделяемые DLL тоже находятся в этой арене. В отличие от частной арены, разделяемая арена доступна для чтения и записи для всех 16-битных и Win32 приложений. Но это не значит, что они могут напрямую получить данные из этого адресного пространства. Для того чтобы получить доступ к этой памяти, необходимо установить соответствующие права защиты на требуемую область памяти. Это можно сделать, воспользовавшись Win32 API функцией VirtualProtect.

16-битная глобальная куча, в которой работают 16-битные приложения, доступна для чтения и записи для всех 16-битных приложений. Любая выделяемая память в контексте 16-битного приложения выделяется в 16-битной глобальной куче, а значит, находится в разделяемой арене.

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

Экспериментальное исследование системы ВВ Flashback и сравнение ее с аналогичными системами

Для сжатия данных в файлах FBR формата используется широко распространенная библиотека Zlib — библиотека сжатия общего назначения. Она описана в документе RFC (request for comments) под номером 1950. Библиотека свободно распространяется, т.е. на нее нет никаких зарегистрированных патентов. Zlib обеспечивает функции компрессии и декомпрессии в памяти, включая проверку целостности декомпрессированных данных. Библиотека поддерживает только один метод компрессии - deflation. Сжатие может быть осуществлено за один раз, если буфер достаточно большой или библиотека позволяет сжимать данные в виде потока. Кроме этого, библиотека поддерживает чтение и запись в файлы формата .gz. В отличие от компрессии LZW или GIF, метод deflation никогда не увеличивает размер данных. LZW может увеличить размер данных в 2 и более раз. Метод компрессии deflation (LZ77) создает последовательность блоков компрессированных данных. Существуют различные типы блоков. Например, stored (сохраненный) блоки, которые состоят из первоначальных данных плюс небольшой заголовок. В наихудшем случае, когда все другие типы блоков будут увеличивать размер данных, deflation создаст stored блок (несжатый). Таким образом, увеличение данных на выходе может быть не более 5 байт на каждые 32 Кб (0.02%) и плюс 6 байт на весь поток данных. Используя поток данных всего из одного байта, мы получим на выходе размер блока в 12 байт (11 байт заголовки и 1 байт данных). Для потоков больших размеров увеличение данных ограничивается примерно 0,02%. В наиболее хорошем случае, например, используя 50Мб данных, заполненных нулями, мы можем получить на выходе блок данных размером 49Кб, то есть здесь уровень компрессии 1000:1. Но в среднем уровень компрессии может варьироваться от 2:1 до 5:1. Память, необходимая для компрессии, зависит от двух параметров - windowBits и memLevel и вычисляется по формуле: память для deflate = (1 « (windowsBits + 2)) + (1 « (memLevel+9)). Для значения по умолчании 15 и 8 соответственно требуется 256Кб памяти. Оба значения windowBits и memLevel могут быть установлены во время компиляции используя макросы MAX_WBITS и MAX_MEM_LEVEL. Память, требуемая для декомпрессии, зависит только от параметра windowsBits и вычисляется по формуле: память для inflate = (1 «windowBits) + 1440 2 sizeof(int). Поэтому, как правило, inflate требует не более 44Кб памяти на 32-битной машине. Это основано на использовании двигающегося окна размером 32768 и 11520 байт, требуемых для внутренних нужд. Для сжатия данных и сохранения их в файл был создан специальный класс TgzStream. В ходе работы над записывающей программой FlashBack Recorder и над ВВ Capture mirror драйвером стало понятно, что мы не можем пользоваться функциями дисковой подсистемы в контексте потока, обрабатывающего графические данные, поступающие от mirror драйвера. Операционная система просто входит в deadlock и полностью зависает. Поэтому понадобился механизм, который помог бы избавиться от операций записи в файл из контекста потока, обрабатывающего графическую операцию. Для решения этой проблемы был создан класс TgzStream, в котором реализован механизм буферизированной записи. В конструкторе класса создается специальный циклический буфер и два одновременно работающих потока. Первый поток кладет данные в циклический буфер, а второй поток забирает данные из буфера, компрессирует их и сохраняет в файл. Так как указатель на начало циклического буфера может изменяться только первым потоком, а указатель хвоста буфера только вторым потоком, то не потребовалось реализовы-вать никаких механизмов синхронизации доступа к буферу, что дало максимальную производительность такому механизму. В классе реализовано еще одну ухищрение, которое оптимизирует сохранение данных в файл. Имеется существенная разница по времени между сохранением большого и маленького блоков данных на диск. Для того чтобы компьютер работал плавно, несмотря на фоновое сохранение данных, был реализован механизм, который сохраняет данные на диск маленькими блоками, то есть размазывает сохранение большого блока во времени, что делает общую работу компьютера более плавной, в отличие от ситуации, когда большие блоки сохраняются за раз. Сохранение большого блока данных за раз вызывает заметную даже на глаз задержку в работе компьютера.

В своей работе класс TgzStream использует библиотеку ZLib для сжатия данных. Уровень компрессии регулируется в настройках программы FlashBack recorder. Для рядового пользователя используется уровень компрессии по умолчании, равный 6 (минимум 0 - нет компрессии, максимум 9). На более слабых компьютерах желательно выставить уровень компрессии меньше, чтобы FlashBack recorder не сильно влиял на общую производительность компьютера.

Программа ВВ FlashBack Recorder содержит несколько классов и структур. На текущий момент времени существует два вида исходных кодов - один для Borland C++ Builder, а другой для MS Visual C++. Первая версия используется для пакета ВВ FlashBack, который содержит записывающую, проигрывающую и редактирующую программы. Вторая версия исходников используется для систем под названиями ВВ FlashBack SDK и ВВ SupportMonitor. Система ВВ FlashBack SDK предназначена для сторонних компаний, которые желают встроить код приложения ВВ FlashBack в свои программы. Система ВВ SupportMonitor используется на специальном сайте в Интернете, который предназначен для удаленной диагностики работы программ. Версия исходных кодов для Visual C++ получилась портированием кода из Borland C++.

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

Для разных операционных систем используется один и тот же графический интерфейс пользователя, но исполнение кода класса ВВ Capture происходит по-разному. В действительности есть только два режима записи — Compatibility Mode и ВВ Capture Driver Mode. Первый способен работать на любой ОС. Второй метод работает только под управлением Windows, начиная с версии 2000.

Похожие диссертации на Исследование и реализация эффективных методов записи активности пользователя персонального компьютера