Параллельные процессы обработки потоков данных в системах безопасности

Понятие многоядерных вычислительных систем и их устройство. Разработка средств ускорения работы аппаратно-программного комплекса за счет распараллеливания вычислительных процессов. Отладка модуля обработки данных в многоканальных системах безопасности.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 17.11.2015
Размер файла 1,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Федеральное государственное автономное образовательное учреждение высшего профессионального образования

"Национальный исследовательский университет"

"Высшая школа экономики"

Московский институт электроники и математики

Выпускная квалификационная работа

по направлению 230100.62 "Информатика и вычислительная техника"

Параллельные процессы обработки потоков данных в системах безопасности

Студент

Зайцев Е.А.

Научный руководитель

Потапова Т.А.

Москва 2015

Введение

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

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

1. Представление предметной области

1.1 Многоканальные системы обработки данных

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

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

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

К примеру, для видеосигнала в формате Full HD (1080р 60fps) поток данных составляет около 12 Mpixel/s, а сложность алгоритмов может составлять 2-3 тысячи операций на пиксель и более, следовательно, вычислительная платформа для видеоприложений должна обладать производительностью, как минимум, в 200-300 GOPs на один канал.

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

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

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

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

1.2 Понятие многозадачности

Многозадачность -- это особенность операционной системы, которая позволяет поддерживать совместное, одновременное выполнение и взаимодействие нескольких задач (потоков исполнения, программ) друг с другом и с внешней средой. При этом, самым точным примером многозадачности является параллельная многозадачность, при которой каждая задача исполняется в своём аппаратном микропроцессорном ядре одновременно друг с другом.[1] Но чаще всего использование отдельных аппаратных средств для каждой задачи оказывается слишком расточительным, из-за этого применяется псевдопараллельная многозадачность, при которой ресурсы микропроцессора по очереди передаются между задачами, создавая иллюзию одновременности, или совокупность параллельной и псевдопараллельной многозадачности при наличии нескольких процессорных ядер.

В современных операционных системах и в различных системах программирования реализация многозадачности стала просто необходимой. При этом на применяемые определенные решения по реализации программ влияет значительное число факторов:

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

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

определение средств, которые операционная система предоставляет разработчикам приложений.

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

1.2.1 Типы многозадачности

Существует несколько типов многозадачности: процессная и поточная.

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

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

Рисунок 1. Многозадачность в однопроцессорной системе. [2]

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

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

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

Рисунок 2. Распределение потоков. [3]

1.2.2 Однотипные независимые процессы

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

Для успешного решения данной задачи необходимо выделить однотипные участки вычислений (подзадачи) и вынести данные участки в отдельные исполнительные модули. Желательно, что бы типов данных процессов было минимальное количество, так как увеличение разнородных модулей приводит к усложнению взаимодействия. Для многоканальных систем удобнее всего определить один исполнительный модуль, который осуществляет вычисление алгоритма для каждого отдельного канала и вызывает данный модуль для всех обрабатываемых каналов. Чтобы достигнуть параллелизма при работе отдельных процессов, необходимо определить требования к вычислительной системе - это требования относится в одинаковой степени ко всем главным компонентам системы - к устройствам памяти, устройствам ввода-вывода, а главное к обрабатывающим процессорам. Любая вычислительная система (будь то супер-ЭВМ или персональный компьютер) достигает своей наивысшей производительности благодаря использованию высокоскоростных элементов и параллельному выполнению большого числа операций. Именно возможность параллельной работы различных устройств системы (работы с перекрытием) является основой ускорения основных операций. Однопроцессорные системы не могут обеспечить истинную параллельность вычислений, и поэтому приходится возвращаться к исходному подходу последовательной обработки потоков. Решить задачу производительности возможно только на многопроцессорных или многоядерных вычислительных системах.

1.3 Многоядерные вычислительные системы

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

Помимо многоядерных процессоров, в архитектуру новых платформ были внедрены некоторые новые технологии, такие как самостоятельность соответствующих программных компонент (Intel Virtualization Technology), технологии одновременной многопоточности (Intel Hyper-Threading Technology), повышение скорости обмена данными (Intel I/O Acceleration Technology).

Технология Virtualization Technology Hypervisor это сочетание новейших программно-аппаратных возможностей многоядерных процессоров, которые реализуют самостоятельность соответствующих программных компонентов. Процессоры, которые поддерживают эту технологию, понимают дополнительные инструкция позволяющие производить работу нескольких операционных систем и позволяют между ними переключаться.[4]

Технология Acceleration Technology основана на аппаратных способностях процессора с оптимизированным стеком протоколов, на имеющихся возможностях чипсетов и сетевых адаптеров, поддерживающих оптимизированный доступ к данным, это технология позволит добиться улучшения скорости передачи данных. [5]

Hyper-Threading - это название технологии одновременной многопоточности (Simultaneous Multi-Threading, SMT). Идея этой технологии очень проста. Каждый физический процессор представляется операционной системе, как два логических процессора, и операционная система не видит разницы между одним SMT процессором или двумя обычными процессорами. [6]

Плюсы многоядерных процессоров:

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

процессы, которым необходимы интенсивные вычисления, протекают намного быстрее;

увеличение скорости работы программы;

снижение энергопотребления ПК.

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

1.3.1 Ядра и потоки

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

Рисунок 3. Многоядерный процессор Intel. [7]

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

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

1.3.2 Общие вычислительные ресурсы

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

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

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

NUMA - архитектура разделяемой памяти, которая позволяет производить неоднородный доступ, а в разный процессорах реализуется когерентность локальных кэшей.

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

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

Рисунок 4. Архитектура многопроцессорных систем с разделяемой памятью: системы с однородным (а) и неоднородным (б) доступом к памяти.

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

1.3.3 Многозадачные операционные системы

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

Многозадачные операционные системы, это системы, которые поддерживают многозадачность, это одновременное выполнение нескольких программ (процессов). При этом большое значение имеет способ совмещения выполнения программ. Если система однопроцессорная, но многозадачная, то каждой программе система выделяет определенный квант времени, спустя который система приступает к выполнению следующей программы. Если система многопроцессорная или многоядерная, то каждой программе будут выделены ее собственные ресурсы, и программы будут выполняться одновременно с другими программами, имеющими свои собственные ресурсы. Естественно, что при наличии большого числа одновременно работающих приложений многозадачная операционная система перейдет к последовательно-параллельному выполнению программ с оптимальным распределением ресурсов. [9]

Использование многоядерных систем в многозадачных приложениях

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

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

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

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

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

2. Постановка задачи

2.1 Цель и задачи работы

Целью данной работы является разработка средств ускорения работы аппаратно-программного комплекса за счет распараллеливания вычислительных процессов посредством создания и отладки модуля параллельной (одновременной) обработки данных в многоканальных системах безопасности с использованием компьютерных алгоритмов детектирования движения, работающих в реальном масштабе времени. Модуль будет выполнен на основе библиотеки MegaLibV1.2, разработанной в ООО "Мегапиксел" (www.mpixel.ru).

Задачами разработки является:

разработка отдельных вычислительных модулей;

разработка класса взаимодействия основного процесса и модуля обработки;

разработка процедур распределения потоков данных и сбора результатов;

объединение разработанных модулей в конечный продукт.

2.2 Определение состава, платформы и инструментов

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

многоканальное видеонаблюдение;

многоканальный контроль аудио данных;

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

системы распознавания номерных знаков автомобилей.

В библиотеке MegaLibV1.2. предусмотрена возможность распараллелить выполнение алгоритмов для отдельных каналов и создать приложение, способное выполнять обработку одновременно по различным каналам при использовании многоядерных процессоров. Обеспечить такую обработку возможно только при использовании независимых вычислительных модулей для отдельного канала или группы каналов, в зависимости от времени выполнения алгоритма. Для простоты использования все модули одинаковые, и используют одну и ту же библиотеку обработки. Распределением процессоров и ресурсов компьютера займется сама операционная система. Для согласования работы нескольких копий библиотеки, одновременно загруженных в системе, используется диспетчер задач mptaskmng.exe, который входит в состав библиотеки и запускается автоматически при первом ее использовании и отслеживает все загруженные копии megalib1.dll стабилизируя их работу. В качестве основного модуля при переходе от последовательной обработки к использованию параллельных процессов приведем работу сервера ядра в системе, охраны и регистрации MegaSense V7.

Разработка будет производиться в интегрированной среде разработки программного обеспечения C++ Builder. Этот программный комплекс объединяет в себе большой перечень компонентов объектных библиотек, а также компилятор, отладчик, редактор кода и многое другое. C++ Builder позволяет производить визуальную разработку, благодаря содержащимся в нем инструментам. Разрабатываемое программное обеспечение будет работать под управлением операционной системы Windows 8. В качестве аппаратной платформы будет использоваться компьютер на базе процессора Intel Core i7.

2.3 Распараллеливание вычислительного процесса

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

Для поддержания высокой производительности в сервере необходимо применять способ параллельной (одновременной) обработки данных на нескольких процессорах компьютера. Для эффективного использования данного метода требуется оптимально распределить функции между основным и вспомогательными приложениями. Основной процесс займется осуществлением запуска приложений обработчиков каналов, инициализацией общих ресурсов, вводом изображений с устройств ввода, распределением исходных кадров между модулями в зависимости от алгоритма охраны, темпа ввода изображений и времени выполнения операций, а также обработкой полученных результатов. Все трудоемкие процедуры по детектированию движения переложим на отдельные исполнительные модули mpchannelmng.exe, которые будут работать каждый на своем процессорном ядре. На рисунке 7 представлен алгоритм работы системы с параллельной обработкой данных. Блоки, выделенные белым цветом, соответствуют работе основного модуля, а выделенные серым цветом обозначают исполнительные автономные модули.

Рисунок 5. Последовательная обработка каналов

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

Рисунок 6. Параллельная обработка каналов

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

Исполнительный модуль представляет собой отдельное изолированное приложение, которое выполняет функции, связанные с детекцией движения и способен обрабатывать видеоданные до 32 каналов. Наличие возможности обработки нескольких каналов на одном модуле обусловлено необходимостью оптимизации количества используемых модулей при обработке "быстрых" алгоритмов грубого и среднего детектирования движения. Рассмотрим структуру исполнительного модуля:

Рисунок 7. Исполнительный модуль обработки

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

2.4 Распределение вычислительных мощностей между процессами

Для того чтобы инициализировать основную задачу и модули обработки, необходимо распределить все доступные ресурсы между всеми задачами. Для этого будет применяться метод инициализации библиотек MPCreateEx(N,0,0,0). Данный метод осуществляет инициализацию части ресурсов библиотеки MegaLib для выполнения процедур ввода изображений, детектирования движения.

Рисунок 8. Инициализация библиотеки

При инициализации программы, основной модуль активирует N каналов устройств ввода изображений, при этом запрещает использование каких-либо каналов обработки данных и запускает М исполнительных модулей. Где N1+N2+N3 равно общему допустимому числу каналов обработки. После запуска модуля вырабатывается серия команд на его активизацию. В данную серию команд входят следующие действия:

запускается исполнительный модуль mpchannelmng.exe;

модулю присваивается уникальное имя;

открывается файл обмена данными;

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

основной модуль передает исполнительному модулю параметры общей памяти;

исполнительный модуль формирует аналогичную общую память:

передача команды MPCreateEx(0,c1,c2,c3), где c1,c2,c3 - количество каналов обработки

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

2.5 Взаимодействие процессов

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

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

По готовности изображения и проверки исполнительного модуля на готовность приема данных осуществляем обмен кадрами основной программы с модулями обработки и в случае удачного обмена присваиваем переменной Flag[N] значение ACTIVE, что сигнализирует о начале процесса обработки. Далее исполнительный модуль обрабатывает данные самостоятельно одновременно с другими модулями и основной программой. По окончании обработки канала исполнительный модуль вызывает изменение состояния Flag[N] в положение READY в основном модуле системы. Основная программа после проверки флага производит обмен результатом по соответствующему каналу и переводит Flag[N] в состояние EMPTY.

Рисунок 9. Блок-схема работы алгоритма программы

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

3. Разработка программного обеспечения

3.1 Разработка независимых вычислительных модулей

Независимые вычислительные модули должны представлять собой однотипные исполнительные процедуры, загружаемые из единого файла, каждый из которых осуществляет вызов своей копии динамической библиотеки Megalib1.DLL и обеспечивает обработку группы независимых каналов, количество которых определяется количеством каналов в многоканальной системе и количеством запускаемых модулей. Принятие решения о количестве запускаемых модулей осуществляется основным вызывающим процессом. Обмен данными и результатами между этими процессами должен происходить через единое адресное пространство оперативной памяти, а инициализация обмена будет определена сообщениями, которые направляются от основного процесса исполнительному модулю. Для упрощения взаимодействия основного процесса и вычислительного модуля, а также для использования данного решения третьими лицами без разработки собственного приложения создается отдельный класс, который впоследствии будет оформлен как исходный модуль в составе библиотеки разработчика MegaLib V1.2.

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

Таблица 1

Команда

Назначение команды

INIT_MEGALIB_APP

Передать указатель класса обмена.

CLOSE_MEGALIB_APP

Отсоединиться от общей памяти и прекратить выполнение приложения.

OPEN_MEGALIB_APP

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

PARENT_MEGALIB_APP

Передать указатель окна основного процесса.

HIDE_MEGALIB_APP

Скрыть окно исполнительного модуля.

EXECUTE_MEGALIB_APP

Выполнить процедуру библиотеки Megalib.

MAPBUFFER_MEGALIB_APP

Активизировать буфер обмена.

UNMAPBUFFER_MEGALIB_APP

Освободить буфер обмена.

SETBUFFERSIZE_MEGALIB_APP

Установка размера буфера обмена между основным модулем и исполнительным.

Для организации памяти мы применяем следующие команды Win32 API: OpenFileMapping, MapViewOfFile. Вызывающий процесс после загрузки модуля организует файл, отраженный в памяти под уникальным названием для каждого исполнительного модуля, т. е. организует буфер обмена через оперативную память. Из основного модуля поступают последовательность сообщений для организации процедур подключения к данной области памяти:

WParam = SETBUFFERSIZE_MEGALIB_APP, LParam = BufferSize;

WParam = PARENT_MEGALIB_APP, LParam = ParentWin;

WParam = INIT_MEGALIB_APP, LParam = ParentHandle;

WParam = OPEN_MEGALIB_APP, LParam = ProcessId;

Где: BufferSize - размер буфера обмена, ParentWin - указатель вызывающего окна, ParentHandle - указатель вызывающего объекта, ProcessId - идентификатор вызывающего приложения.

При помощи функции OpenFileMapping определяется объект файла, а при помощи функции MapViewOfFile получается указатель на общую область памяти. В названии файла применяются значения указателя вызывающего класса (ParentHandle) и идентификатор вызывающего процесса (ProcessId).

sprintf(chbuffer,"MegaPixel Channels Application Maps %08X-%08X",(UINT)ParentHandle,ProcessId);

MapHandle = OpenFileMapping(FILE_MAP_READ | FILE_MAP_WRITE,TRUE,chbuffer);

MappedPointer = MapViewOfFile(MapHandle,FILE_MAP_WRITE | FILE_MAP_READ, 0, 0, BufferSize );

sprintf(chbuffer,"MegaPixel Channels Application Flags %08X-%08X",(UINT)ParentHandle,ProcessId);

MapHandleF = OpenFileMapping(FILE_MAP_READ | FILE_MAP_WRITE,TRUE,chbuffer);

MappedPointerF = MapViewOfFile(MapHandleF,FILE_MAP_WRITE | FILE_MAP_READ, 0, 0, MAX_PROCESS_CHANNEL * 4 * sizeof(UINT));

Таким образом, создается уникальное имя в системе, что предотвращает возникновение неоднозначности в определении области общей памяти.

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

FLAG_EMPTY - “модуль готов к приему данных”.

FLAG_ACTIVE - “модуль обрабатывает полученные данные”.

FLAG_READY- “полученные данные готовы для чтения”.

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

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

В каждом модуле организуется очередь данных, над которыми следует выполнить процедуры детектирования движения. Если данная очередь пуста, модуль находится в режиме ожидания, не выполняя никаких действий (флаг состояния в положении FLAG_EMPTY). По готовности изображения основной модуль передает в исполнительный модуль параметры кадра и непосредственно последовательность байт самого изображения. Данная информация помещается в очередь обработки. При этом флаг состояния по данному каналу устанавливается в состояние FLAG_ACTIVE. Исполнительный модуль активизирует свой собственный поток обработки, в котором происходит выполнение процедур детектирования движения над данными, находящимися в очереди. После окончания обработки по данному каналу соответствующий флаг переходит из состояния FLAG_ACTIVE в состояние FLAG_READY. Обработка очереди осуществляется до ее обнуления. Очередь может пополняться данными других каналов асинхронно с процессом обработки, но с условием, что для одного канала в очереди может находиться только один блок данных. Это связанно с тем, что необходимо осуществить чтение результатов обработки и осуществить перевод флага из положения FLAG_READY в положение FLAG_EMPTY.

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

Перед окончанием работы по команде CLOSE_MEGALIB_APP модуль освобождает общую память обмена и прекращает свою работу:

UnmapViewOfFile(MappedPointer);

CloseHandle(MapHandle);

MappedPointer=NULL;

MapHandle=NULL;

UnmapViewOfFile(MappedPointerF);

CloseHandle(MapHandleF);

MappedPointerF=NULL;

MapHandleF=NULL;

if(MPCreated) MPRelease();

Close();

3.2 Разработка класса взаимодействия основного процесса и модуля обработки

Для обеспечения взаимодействия основного процесса и автономного вычислительного модуля, который представляет собой отдельное приложение, наиболее целесообразно организовать класс обмена TCWClass (исходные коды представлены в файлах CWManager.cpp и CWManager.h). Данный класс должен обеспечивать вызовы функций библиотеки MegaLib исполнительного модуля из основного процесса таким образом, чтобы осуществлять наиболее удобный переход от непосредственного вызова функций к вызову функций из отдельного приложения, коим является исполнительный модуль. Например, вызов функции загрузки маски детектора движения MDCHLoadMask будет выглядеть следующем образом:

Непосредственный вызов функции:

MDCHLoadMask(Channel,VOID *Msk);

Вызов функции через класс из исполнительного модуля:

CWClass[Сhannel-Сhannel/CW_Number*CW_Number]->CW_MDCHLoadMask(Channel/CW_Number,VOID *Msk);

Где: Channel - номер канала, Msk - указатель на массив маски, CW_Number- количество исполнительных модулей.

Для обработки каналов в многоканальном приложении наиболее целесообразно создавать массив объектов, каждый из которых будет обслуживать группу из нескольких каналов. Например, при использовании 16 каналов обработки и 8-и автономных исполнительных модулей, каждый модуль будет обеспечивать обработку группы из 2-х каналов. При этом будет активизирован массив из 8-и классов взаимодействия, каждый из которых будет обслуживать 2 канала. При этом индекс модуля будет определяться как: Сhannel-Сhannel/CW_Number*CW_Number, а номер канала будет определен как: Channel/CW_Number. Реальные номера каналов будут распределены между автономными модулями следующим образом:

Рисунок 10. Распределение каналов между модулями

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

Таблица 2

Функция класса

Функция MegaLib

Назначение

CW_MPCreateEx

MPCreateEx

Инициализация части ресурсов библиотеки.

CW_MPRelease

MPRelease

Освобождение ресурсов библиотеки.

CW_MDCHSetParam

MDCHSetParam

Установка исходных параметров детектирования.

CW_MDCHSetChannelProperty

MDCHSetChannelProperty

Установка параметров входного изображения детектора движения.

CW_MDCHLoadMask

MDCHLoadMask

Загрузка маски канала.

CW_MDCHRestart

MDCHRestart

Перевод канала в исходное состояние.

CW_MDCHSetFrameParam

-

Установка параметров изображения для передачи исполнительному модулю.

CW_MDCHPutData

-

Запись блока данных в очередь обработки.

CW_MDCHCheckData

-

Проверка флага состояния исполнительного модуля.

CW_MDCHGetData

-

Чтение результатов обработки.

CW_MDCHSetFlag

-

Установка флага состояния исполнительного модуля.

На данный класс возложены следующие основные функции:

Запуск исполнительного модуля и установка интерфейса между ним и классом;

Выполнение всех функций, представленных в библиотеке;

Обеспечение обмена исходными данными и получения результата выполнения операций:

Чтение и запись флагов состояния исполнительного модуля;

Выгрузку исполнительного модуля после окончания работы.

Запуск исполнительного модуля осуществляется при выполнении метода CW_MPCreateEx. Данный метод осуществляет инициализацию части ресурсов библиотеки MegaLib для выполнения процедур ввода изображений, детектирования движения. При выполнении метода через класс запись выглядит следующим образом:

CWClass->CW_MPCreateEx(0,NumberMD,0,0);

Где: NumberMD - число каналов детектирования движения, которое обрабатывает один модуль.

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

WinCW = FindWindow("TChannelWork","MegaPixel Channel Work");

if(WinCW==NULL) {

sprintf(Section,"%s\\mpchannelmng.exe",CW_AlgPath);

WinExec(Section,SW_SHOW);

WinCW = FindWindow("TChannelWork","MegaPixel Channel Work");

if(WinCW==NULL) return 1;

При удачной загрузке модуля назначаем ему уникальное имя в системе:

sprintf(Section,"MegaPixel Channels Application %08X-%08X",(UINT)this,GetCurrentProcessId());

SetWindowText(WinCW,Section);

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

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

sprintf(Section,"%s\\mpchannelmng_m%d.exc",CW_AlgPath,NumberCW);

MapFileHandle = CreateFile(Section,

GENERIC_READ | GENERIC_WRITE,

FILE_SHARE_READ | FILE_SHARE_WRITE,

NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_TEMPORARY,NULL);

sprintf(Section,"MegaPixel Channels Application Maps %08X-%08X",(UINT)this,GetCurrentProcessId());

MapHandle = CreateFileMapping(MapFileHandle,NULL,PAGE_ READWRITE,0, BufferSize ,Section);

MappedPointer= MapViewOfFile(MapHandle,FILE_MAP_WRITE | FILE_MAP_READ, 0, 0, BufferSize);

sprintf(Section,"%s\\mpchannelmng_f%d.exc",CW_AlgPath,NumberCW);

MapFileHandleF = CreateFile(Section,

GENERIC_READ | GENERIC_WRITE,

FILE_SHARE_READ | FILE_SHARE_WRITE,

NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_TEMPORARY,NULL);

sprintf(Section,"MegaPixel Channels Application Flags %08X-%08X",(UINT)this,GetCurrentProcessId());

MapHandleF = CreateFileMapping(MapFileHandleF,NULL, PAGE_READWRITE,0, MAX_ENABLED_CHANNELS*4*sizeof(UINT),Section);

MappedPointerF= MapViewOfFile(MapHandleF,FILE_MAP_WRITE | FILE_MAP_READ, 0, 0, MAX_ENABLED_CHANNELS*4*sizeof(UINT));

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

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

SendMessage(WinCW,WM_USER,SETBUFFERSIZE_MEGALIB_APP,(LPARAM)BufferSize);

SendMessage(WinCW,WM_USER,PARENT_MEGALIB_APP,(LPARAM)ParentWin);

SendMessage(WinCW,WM_USER,INIT_MEGALIB_APP,(LPARAM)this;

SendMessage(WinCW,WM_USER,OPEN_MEGALIB_APP,(LPARAM)GetCurrentProcessId());

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

Последним шагом является передача команд инициализации копии библиотеки в самом исполнительном модуле через установленный интерфейс:

*((UINT *)MappedPointer+0) = CC_MPCreateEx;

*((UINT *)MappedPointer+1) = 0;

*((UINT *)MappedPointer+2) = NumberMD;

*((UINT *)MappedPointer+3) = 0;

*((UINT *)MappedPointer+4) = 0;

SendMessage(WinCW,WM_USER,EXECUTE_MEGALIB_APP,NULL);

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

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

CWClass->CW_MDCHPutData(Channel,void *imgbuf);

Где: Channel - номер канала детектирования движения внутри данного модуля, ImgBuffer - буфер с исходным изображением.

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

После окончания обработки изображения по данному каналу результат может быть считан по команде:

CWClass->CW_MDCHGetData(Channel, MOTIONRESULT *MotResult,char *mask);

Где: Channel - номер канала детектирования движения внутри данного модуля, MotResult - структура результата, mask = буфер зон нарушений.

Состояние исполнительного модуля и готовность данных определяется путем анализа флага по команде:

Flag = CWClass->CW_MDCHCheckData(Channel)

Где: Channel - номер канала детектирования движения внутри данного модуля, Flag - состояние модуля.

Исполнительный модуль может находиться в трех состояниях:

FLAG_EMPTY - модуль готов к приему данных;

FLAG_ACTIVE - модель производит обработку данных;

FLAG_READY - модуль готов к передаче результата.

Изменить состояние исполнительного модуля из вызывающего процесса можно по команде:

CWClass->CW_MDCHSetFlag(Channel,Flag);

Где: Channel - номер канала детектирования движения внутри данного модуля, Flag - состояние модуля.

Данная функция позволяет перевести модуль из состояния FLAG_READY в состояние FLAG_EMPTY после чтения результатов обработки. Или остановить обработку данных переводом модуля из состояния FLAG_ACTIVE в состояние FLAG_EMPTY.

После окончания работы с исполнительным модулем осуществляется очистка ресурсов путем выполнения метода:

CWClass->CW_MPRelease();

По данной команде происходит освобождение распределенных ресурсов исполнительного модуля путем выполнения последовательности команд:

*((UINT *)MappedPointer+0) = CC_MPRelease;

SendMessage(WinCW,WM_USER,EXECUTE_MEGALIB_APP,NULL);

SendMessage(WinCW,WM_USER,CLOSE_MEGALIB_APP,NULL);

В исполнительный модуль передаются команда выгрузки библиотеки MegaLib и команда освобождения ресурсов общей памяти обмена данными и флагами - CLOSE_MEGALIB_APP. По данной команде осуществляется отключение от файлов обмена и завершение работы программы исполнительного модуля. После отключения от общих ресурсов осуществляется освобождение ресурсов класса:

if(MappedPointer) UnmapViewOfFile(MappedPointer);

if(MapHandle) CloseHandle(MapHandle);

if(MapFileHandle) CloseHandle(MapFileHandle);

sprintf(Section,"%s\\mpchannelmng_m%d.exc",CW_AlgPath,NumberCW);

DeleteFile(Section);

MappedPointer=NULL;

MapHandle=NULL;

MapFileHandle=NULL;

if(MappedPointerF) UnmapViewOfFile(MappedPointerF);

...

Подобные документы

  • Аналитический обзор видеосистем с элементами интеллектуальной обработки видеоконтента: FaceInspector, VideoInspector Xpress. Разработка алгоритма организации вычислительных средств комплекса, в структуру поэтапного решения задачи анализа видеообъекта.

    дипломная работа [3,4 M], добавлен 14.06.2012

  • Абстрактные модели и способы параллельной обработки данных, допустимая погрешность вычислений. Понятие параллельного процесса, их синхронизация и гранулы распараллеливания, определение закона Амдаля. Архитектура многопроцессорных вычислительных систем.

    дипломная работа [1,3 M], добавлен 09.09.2010

  • Процесс создания комплексной системы информационной безопасности, предназначенной для обеспечения безопасности всех важных данных сети аптек "Таблэтка". Исследования практики функционирования систем обработки данных и вычислительных систем. Оценка риска.

    курсовая работа [38,8 K], добавлен 17.06.2013

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

    реферат [130,9 K], добавлен 28.09.2014

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

    дипломная работа [1,3 M], добавлен 01.07.2011

  • Классификация вычислительных систем по способам взаимодействия потоков выполняемых команд и потоков обрабатываемых данных, их разновидности и функциональные особенности. Принципы расширения классификации Флинна. Виды топологии соединительной сети.

    презентация [175,6 K], добавлен 11.10.2014

  • Разработка политики безопасности компании в условиях информационной борьбы. Повышение информационной безопасности в системах обработки данных. Обеспечение устойчивости к противодействию диверсионной и технической разведке. Защита локальной сети.

    курсовая работа [841,2 K], добавлен 13.06.2012

  • Микропроцессор как универсальное устройство для выполнения программной обработки информации. Функциональные возможности и архитектурные решения. Микроконтроллеры в системах управления и обработки информации. Классификация электронно-вычислительных машин.

    курсовая работа [189,6 K], добавлен 12.10.2015

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

    реферат [280,6 K], добавлен 01.12.2010

  • Иcпoльзoвaние мoдeлиpoвaния для oцeнки функциoниpoвaния peaльныx cиcтeм, иccлeдoвaние peжимов paбoты вычиcлитeльныx cиcтeм. Системы обработки данных: реального времени и оперативной обработки. Однопрограммные и мультипрограммные режимы обработки данных.

    лабораторная работа [21,6 K], добавлен 27.11.2009

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

    презентация [8,3 M], добавлен 11.10.2014

  • Определение иерархии системы управления и контроля, а также структуры АСКУЭ. Разработка программного модуля обработки данных счётчиков электроэнергии. Определение технико-экономической актуальности, необходимости и возможности модернизации системы.

    дипломная работа [1,0 M], добавлен 20.05.2017

  • Периоды применения средств вычислительной техники. Переход к новому поколению электронно-вычислительных машин. Системы, основанные на знаниях. Экспертные системы и искусственный интеллект. Этапы обработки данных на ЭВМ. Иерархическая структура знания.

    презентация [170,6 K], добавлен 14.08.2013

  • Создание систем автоматизированного сбора и обработки данных. Разработка информационной системы гостиничного комплекса. Выбор требуемой СУБД и программного обеспечения. Концептуальное, логическое проектирование. Организация ввода данных в базу данных.

    дипломная работа [790,1 K], добавлен 13.02.2016

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

    контрольная работа [486,7 K], добавлен 29.10.2013

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

    дипломная работа [2,9 M], добавлен 04.11.2012

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

    доклад [102,9 K], добавлен 30.04.2011

  • Требования, предъявляемые к свойствам систем распределенной обработки информации. Логические слои прикладного программного обеспечения вычислительных систем. Механизмы реализации распределенной обработки информации. Технологии обмена сообщениями.

    курсовая работа [506,8 K], добавлен 03.03.2011

  • Методы и средства защиты информационных данных. Защита от несанкционированного доступа к информации. Особенности защиты компьютерных систем методами криптографии. Критерии оценки безопасности информационных компьютерных технологий в европейских странах.

    контрольная работа [40,2 K], добавлен 06.08.2010

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

    курсовая работа [36,8 K], добавлен 23.06.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.