2.2.3 Приложение для создания нагрузки
Поскольку в реальных условиях параллельно с нашим драйвером будут выполняться и другие приложения, важно учесть это в ходе нашей исследовательской работы. Для этих целей было разработано специальное приложение, внешний вид которого показан на рис. 2.2.
Рис 2.2. Внешний вид приложения для создания нагрузки (фрагмент)
Первая пара кнопок позволяет включать или выключать нагрузку на подсистемы GDI, вторая пара кнопок соответственно влияет на генерацию множественных страничных отказов.
2.2.4 Обратная связь
Для определения текущего состояния драйвера необходимо поддерживать с ним обратную связь. Из всех возможных способов такой связи был выбран самый простой — посылка текстовых строк отладчику ядра функцией DbgPrint. Для чтения таких строк можно использовать специальные программные средства, в нашем случае будет использовано приложение DebugView 4.31 от Марка Руссиновича (Mark Russinovich), внешний вид которого показан на рис. 2.3.
Рис 2.3. Приложение DebugView
3. Технологическая часть
3.1 Выбор средства разработки
Для разработки драйверов наиболее широкое применение получили языки C/C++ и Ассемблер. Для разработки настоящего драйвера был выбран язык C++, поскольку он сочетает в себе простоту разработки программ с возможностью использования ассемблерных вставок для критических участков кода. Кроме того, заголовочные файлы для этого языка идут в стандартной поставке DDK. Для сборки конечного драйвера использовались компилятор и линковщик из DDK.
3.2 Организация задержек
Для имитации обработки данных, полученных от устройства необходимо создавать задержки. Для этого можно использовать вызов специальной функции ядра KeStallExecutionProcessor, однако в этом случае мы не можем контролировать что на самом деле произойдет с потоком и мы получим меньше информации о том сколько тактов центрального процессора было востребовано.
Кроме того, при реальной работе вместо фиктивных задержек будут использованы реальные математические вычисления на центральном процессоре. Наиболее удачной имитацией этого на наш взгляд будет создание холостых циклов при помощи ассемблерных вставок например такого вида:
mov ecx, count
label: xchg eax,eax
loop label
Здесь параметр count определяет, сколько именно холостых циклов нужно выполнить, причем мы даже можем приблизительно предположить, сколько тактов центрального процессора на это уйдет.
Для приблизительного пересчета числа холостых циклов во временные интервалы при начальной инициализации драйвера выполняется порядка 108 холостых циклов с вычислением времени которое было затрачено на эту операцию. Далее необходимое число холостых циклов для организации задержки рассчитывается по следующей формуле:
,
где count0 и time0 соответственно количество холостых циклов и время на их выполнение при начальной инициализации драйвера, time — требуемая длина задержки.
3.3 Взаимодействие с драйвером
Управление параметрами работы драйвером производится при помощи следующей структуры:
struct ControlStruct
{ int Priority;
int Frequency;
int Delay;};
Поле Priority задает текущий приоритет рабочего потока драйвера (приоритет управляющего потока всегда 31). Поле Frequency задает частоту прихода данных от эмулируемого внешнего устройства. Поле Delay определяет длительность задержек на обработку данных от устройства.
Передача обновленной структуры из управляющего приложения в драйвер осуществляется следующим образом. Приложение открывает виртуальное устройство, ассоциированное с драйвером, а замет вызовом WriteFile передает в драйвер нужные данные.
Драйвер получает данные в своей функции DispatchWrite и сохраняет их в глобальной переменной, внося необходимые изменения в свою работу.
4. Исследовательская часть
4.1 Цели и задачи
Для того чтобы начать исследование, необходимо определиться, как будет использоваться полученное программное обеспечение в ходе его проведения, и каких результатов мы хотим добиться.
При помощи управляющего потока мы будем имитировать работу реального устройства на некоторой частоте. Начав с небольших частот мы попытаемся довести частоту до 1 кГц и добиться устойчивой работы на ней.
Следует также определиться с тем, что мы будем понимать под устойчивой работой. Поскольку речь идет о системе управление реального времени, то необходимо, чтобы к моменту прихода следующего запроса от устройства предыдущий был уже полностью обработан. Если по приходу запроса мы обнаружим что предыдущий запрос еще обрабатывается, мы будем считать что на данной частоте с данным временем задержки на используемой системе реализация системы управления реального времени невозможна.
... , но впоследствии стали применяться для управления проектами в самых различных отраслях. В настоящее время в это семейство продуктов входят: · Open Plan – система календарного планирования и контроля, предназначенная для управления реализацией как отдельных проектов, так и сложных проектных программ в срок и в рамках бюджета; · Cobra – система управления бюджетом проектов, ...
... элементов, глобальное пространство имен, а также лавинообразную первоначальную загрузку сети. Таким образом ОСРВ SPOX имеет необходимые механизмы для создания отказоустойчивой распределенной операционной системы реального времени, концепция построения которой описана в главе 2. 4.3 Аппаратно-зависимые компоненты ОСРВ Модули маршрутизации, реконфигурации, голосования реализованы как аппаратно- ...
... оптимальные варианты оснащения офиса коммерческой компании комплектом оборудования, достаточным для решения поставленной задачи Глава 1. 1.1 Постановка задачи. Целью данного дипломного проекта является разработка системы управления работой коммерческой компании. Исходя из современных требований, предъявляемых к качеству работы управленческого звена коммерческой компании, нельзя не отметить, что ...
... множество управляющих "транзакций": генерацию сообщений о событиях, модификацию учетной информации пользователя, распределение нового программного обеспечения, операции по управлению хранением данных, сбор информации о производительности и т.д. Использование интегрированной системы управления, удовлетворяющей этим условиям, может существенно повысить эффективность работы. Интеграция позволяет ...
0 комментариев