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

УДК 007.51

Д. В. Пащенко, Д. А. Трокоз

РАЗРАБОТКА МНОГОПОТОЧНОЙ МОДЕЛИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ЭКСПЕРТНОЙ СИСТЕМЫ АВИАЦИОННЫХ РАДИОЛОКАЦИОННЫХ КОМПЛЕКСОВ

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

Ключевые слова: радиолокационный комплекс, модель, сеть Петри, экспертные системы.

Abstract. The article deals with the construction of multithreaded software model of the expert system of aircraft radar systems in terms of data loading into the system of objective monitoring of aircraft systems and targeting radar patrol.

Key words: radar system, model, Petri nets, expert systems.

Введение

Авиационные комплексы радиолокационного дозора и наведения (АК РЛДН) для оценки качества выполнения полетных заданий и технического состояния радиотехнических комплексов (РТК) используют экспертные системы, которые осуществляют объективный контроль. Объем обрабатываемой информации в этих системах может достигать нескольких терабайт [1, 2].

Наиболее длительными и трудоемкими процессами при работе системы объективного контроля являются загрузка данных с бортового устройства регистрации в базу данных и автоматизированный контроль аппаратуры и выполнения полетного задания [3].

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

В данной работе непосредственно рассматривается построение многопоточной модели программного обеспечения (ПО) экспертной системы авиационных радиолокационных комплексов, обеспечивающее загрузку данных в систему объективного контроля АК РЛДН.

1. Описание модели

Модель наземного комплекса обработки и дешифрирования информации (НКОД) представляет собой многоуровневую сеть Петри, верхний уровень которой представлен на рис. 1.

При построении модели многопоточной системы, какой является система НКОД, позиции вводятся парами: одна позиция хранит фишки-данные, а другая фишки-потоки. Для функционирования модели необходимо ввести две позиции files и threads, которые представляют собой входные файлы и потоки.

В начале функционирования сети происходит генерация потоков, которые в виде фишек попадают в позицию потоков.

___ 1' CNT_THREAD

^-^INT

cnt

cnt>0

cnt-1

create

thread

{threadld=cnt-l, fileld=0}

threads W-

Thread

Load data to BD

CNT_FILES’ file files (50 60’ file File

I Load data to BD

l’O

<*-

Г' >

M cntBD

1-1 O' I NT

Codogramm

-(load en

Mark

1

Codogramrm

processing

ICodogramm processing I

W table

W check

Codogramm

BOOL

Рис. 1. Верхний уровень модели НКОД, реализованный в CPN tools

L/1

№ 3 (19), 2011 Технические науки. Информатика, вычислительная техника

Фишки из позиций files и threads поступают в переход «Load data to BD», после моделирования которого происходит запуск перехода «Codogramm processing». В процессе моделирования происходит сбор статистической информации в позиции table и check.

Далее рассмотрим подробнее переход «Load data to BD», моделирующий процедуру загрузки данных в систему.

2. Формализация процедуры загрузки данных в систему

Переход Load data to BD моделирует загрузку данных в систему объективного контроля и является переходом на следующий уровень модели НКОД, который представлен на рис. 2.

Из позиций thread и files фишки потоков и входных данных обрабатываются переходом Read file size and header, который имитирует процесс чтения размера файла.

Переход, отвечающий за чтение файла и заголовка, создает переменные, которые необходимы для обработки файла, и помещает их в позиции file end, isSave header, save header, not read size и not read size thread .

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

Следующая позиция также хранит фишки типа BOOLT, которые в данном контексте являются признаком хранения заголовка кодограммы при обработке файла соответствующим потоком. Эта позиция при загрузке очередного файла заполняется ложным значением. Если заголовок будет сохранен соответствующим потоком, то соответствующая сохранившему заголовок потоку фишка в позиции «isSave header» примет значение «истина».

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

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

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

Следующая позиция хранит фишки типа INT_T, содержащие размер непрочитанной части файла. Эта позиция при загрузке очередного файла заполняется значением размера файла.

Пятая позиция хранит фишки типа Thread, содержащие потоки, связанные с позицией «not read size». Эта позиция заполняется текущим рабочим потоком.

andalso

Рис. 2. Загрузка информации в базу данных

№ З (19), 2011 Технические науки. Информатика, вычислительная техника

З. Формализация процедуры чтения данных из файла в буфер системы

Переход Read file in buffer (рис. 3) является переходом на следующий уровень модели и производит чтение из файла в буфер с учетом использования диска в качестве критического ресурса.

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

При срабатывании переходов take hdd and read или last take hdd and read происходит перемещение фишек из позиций not read size, not read size _thread_ и free hdd в позиции nrs, nrs _thread_ и take hdd, т.е. происходит захват критического ресурса, который в данном случае является жестким диском.

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

Позиции take hdd и free hdd отображают состояние занятости критического ресурса. Первая хранит фишки типа Mark. Присутствие фишки в данной позиции означает занятость критического ресурса. Вторая позиция хранит фишки такого же типа. Если фишка присутствует в данной позиции, то позиция свободна.

Переходы free HDD и last free HDD отвечают за освобождение критического ресурса и организацию конвейера взаимодействия.

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

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

При срабатывании первого перехода в позицию not read size объем непрочитанных данных из файла уменьшается на величину буфера. Если же срабатывает второй переход, то он сигнализирует о том, что буфер пуст. Кроме того, при срабатывании любого из переходов происходит освобождение критического ресурса и передача фишки, содержащей объем прочитанных данных, в позицию buffer size, а также передача рабочего потока в позицию buffer size _thread_.

4. Формализация процедуры чтения кодограмм из буфера системы

Выходные данные перехода Read file in buffer, который производит чтение из файла в буфер, являются входными для перехода Read codogramm from buffer, осуществляющего процесс чтения кодограмм из буфера. Это переход на следующий уровень модели, который обрабатывает процесс чтения кодограмм из буфера в базу данных (рис. 4).

Переход read codogramm header моделирует процедуру получения заголовка кодограммы из буфера. При этом значение фишки, поступающей на вход перехода, уменьшается на величину, равную длине заголовка кодограммы, и помещается в позицию buffer size. Прочитанный заголовок кодограммы помещается в виде фишки в позицию codogramm header, а рабочий поток из позиции buffer size _thread_ - в позицию codogramm header thread .

бо

№ 3 (19), 2011 Технические науки. Информатика, вычислительная техника

On

io

Рис 4. Третий уровень модели НКОД

Известия высших учебных заведений. Поволжский регион

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

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

После того как заголовок кодограммы был помещен в позицию codogramm header и соответственно был получен размер тела кодограммы, можно ее прочитать. Переход read codogramm производит чтение тела кодограммы. Ему на вход поступают фишки, содержащие заголовок кодограммы, размер буфера и рабочий поток; в результате его срабатывания происходит чтение кодограммы в базе данных, а на выходе формируется фишка, содержащая размер оставшихся данных в буфере и фишка - рабочий поток, которые помещаются в позиции buffer size и buffer size _thread_ соответственно.

Переходы end buffer read header и end buffer read codogramm отслеживают окончание данных в буфере.

Переход end buffer read header срабатывает, если при попытке прочитать очередной заголовок кодограммы выяснилось, что объем данных в буфере меньше длины заголовка кодограммы. При этом происходит добавление длины оставшихся данных в буфере buffer size к длине непрочитанных данных, хранящихся в фишке в позиции not read size, и помещение результирующей фишки в позицию not read size. Кроме того, рабочий поток перемещается из позиции buffer size _thread_ в позицию not read size thread . На этом работа вложенного перехода чтения данных из файла в буфер завершается.

Переход end buffer read codogramm срабатывает, если при попытке прочитать очередное тело кодограммы выяснилось, что объем данных в буфере меньше длины тела кодограммы. При этом происходит добавление длины оставшихся в буфере buffer size данных к длине непрочитанных данных, хранящихся в фишке в позиции not read size, и помещение результирующей фишки в позицию not read size. Так же происходит сохранение заголовка кодограммы путем помещения фишки - заголовка кодограммы из позиции codogramm header в позицию save header и установления флага в позиции isSave header. Кроме того, рабочий поток перемещается из позиции buffer size _thread_ в позицию not read size _thread_.

Переход end read file срабатывает, когда флаг окончания файла, хранимый в позиции file end, принимает истинное значение. При этом фишки из позиций not read size, save header и isSave header, поступая на вход перехода, уничтожаются, а фишка потока из позиции not read size _thread_ помещается в позицию threads. Таким образом, поток становится доступным для чтения следующего файла из позиции files. Работа перехода Load data to BD завершается, если в позиции files не остается файлов, а в позицию threads возвращаются все потоки, т.е. если файлов, ожидающих обработки, не осталось и все потоки завершили свою работу.

Заключение

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

бЗ

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

Список литературы

1. Волчихин, В. И. Экспертная система контроля и документирования в авиации / В. И. Волчихин, Д. В. Пащенко, А. Н. Токарев, Н. Н. Коннов // Автоматизация и управление в технических системах : межвузовский сборник научных трудов. -Пенза : Инф.-изд. центр ПензГУ, 2008. - С. 170-175.

2. Коннов, Н. Н. Система для расшифровки и анализа данных объективного контроля радиолокационного комплекса / Н. Н. Коннов, Д. В. Пащенко, Г. М. Морозов, А. В. Васильев // Новые информационные технологии и системы : труды 8 Международной научно-технической конференции. - Пенза, 2008. - С. 274-281.

3. Приказ министра обороны РФ от 24.09.2004 № 275 об утверждении федеральных авиационных правил производства полетов государственной авиации (зарегистрировано в Минюсте РФ 10.11.2004 № 6110) // Законодательство РФ 2004 года (часть 1). - иКЬ: Шр://2004-1.хо^ги/ИЬ/?1т=151&ур=акШ155 (Дата обращения 23.09.2010).

4. Пащенко, Д. В. Проблемы построения многопоточной модели программного обеспечения экспертной системы авиационных радиолокационных комплексов / Д. В. Пащенко, Д. А. Трокоз // Известия высших учебных заведений. Поволжский регион. Технические науки. - 2011. - № 2 (18). - С. 21-29.

Пащенко Дмитрий Владимирович

кандидат технических наук, доцент, кафедра вычислительной техники, Пензенский государственный университет

E-mail: Dmitry.pashchenko@gmail.com

Трокоз Дмитрий Анатольевич

магистрант, Пензенский государственный университет

E-mail: vt@pnzgu.ru

Pashchenko Dmitry Vladimirovich Candidate of engineering sciences, associate professor, sub-department of computer science, Penza State University

Trokoz Dmitry Anatolyevich Graduate student,

Penza State University

УДК 007.51 Пащенко, Д. В.

Разработка многопоточной модели программного обеспечения экспертной системы авиационных радиолокационных комплексов /

Д. В. Пащенко, Д. А. Трокоз // Известия высших учебных заведений. Поволжский регион. Технические науки. - 2011. - № 3 (19). - С. 56-64.