Проектирование параллельных алгоритмов в задачах идентификации. Вашкевич Н.П - 22 стр.

UptoLike

22
Во-первых это работа с файловыми потоками (язык С++, библиотека iostream) для ус-
корения работы с дисковыми накопителями. В этом случае использование файлового вво-
да/вывода (классы ifstream, ofstream, fstream) позволяет работать с блоком заданной дли-
ны. При этом файл должен быть открыт для чтения в бинарном режиме (ios::binary).
Во-вторых несколько усложнив программу можно вычислять только те уравнения
НДСКУ, для которых очередной байт из файла будет входным сигналом, т.е. использует-
ся в правой части уравнения, что дает значительное сокращение объема вычислений;
В-третьих, возможна любая другая программная интерпретация алгоритма с языка
НДСКУ или непосредственно с языка РВАС, в том числе, с использованием функций по-
иска из библиотек каких-либо инструментальных средств.
В-четвертых, если программное приложение разрабатывается для многозадачной
ОС, то возможна организация двух параллельных нитей как показано на рис 3.2.
Проверк
а
сигнатур в
памяти
Загр
у
зка блока из
файла в память
Общая часть
программы
Поток 2,
приоритет n+1
Поток 1,
приоритет n
Рис. 3.2 Общая схема работы в системе "СОМПА"
Необходимо отметить, что программное приложение, реализующее алгоритм, должно
иметь современный графический интерфейс пользователя, обеспечивающий: идентифи-
кацию выполняемого приложения; меню, позволяющее выбрать один из пунктов "тести-
рование", "лечение", "тестирование и лечение". После выбора пункта меню пользователю
должна быть предложена форма с элементами управления, позволяющими выбрать диск,
каталог, файл, запустить или прервать поиск, сообщить об обнаружении цепочек-образов
с указанием имени файла, где обнаружены и какие именно. Если пользователь выберет на
диске каталог, то при поиске, необходимо обеспечить возможность сканирования файлов
не только внутри этого каталога, но и во всех вложенных. Дадим необходимую информа-
цию для программной реализации просмотра файлов каталога и файлов всех вложенных в
него каталогов. В далее приведенном примере используется инструментальная среда
С++Builder 3.0 и также даются сведения необходимые для использования Win32 API.
Пример подготовлен в среде программирования C++Builder 3.0. Для организации вы-
бора каталога были использованы визуальные компоненты TDriveComboBox,
TDirectoryListBox, TFileListBox из палитры Win 3.1. Формирование полного имени файла
(имя и путь доступа к нему), в котором будет идти поиск цепочки-образа, выполняется в
модуле result.cpp. Если выбран файл, то полное имя файла сохраняется в строковой пере-
менной path. Если же выбран каталог, то поиск вирусов будет осуществляться во всех
файлах этого каталога и во всех вложенных в него каталогах. В этом случае полное имя
файла хранится в строковой переменной buf, меняясь при каждом прохождении тела цик-
    Во-первых это работа с файловыми потоками (язык С++, библиотека iostream) для ус-
корения работы с дисковыми накопителями. В этом случае использование файлового вво-
да/вывода (классы ifstream, ofstream, fstream) позволяет работать с блоком заданной дли-
ны. При этом файл должен быть открыт для чтения в бинарном режиме (ios::binary).
    Во-вторых несколько усложнив программу можно вычислять только те уравнения
НДСКУ, для которых очередной байт из файла будет входным сигналом, т.е. использует-
ся в правой части уравнения, что дает значительное сокращение объема вычислений;
    В-третьих, возможна любая другая программная интерпретация алгоритма с языка
НДСКУ или непосредственно с языка РВАС, в том числе, с использованием функций по-
иска из библиотек каких-либо инструментальных средств.
      В-четвертых, если программное приложение разрабатывается для многозадачной
ОС, то возможна организация двух параллельных нитей как показано на рис 3.2.
                                                    Общая часть
                                                    программы
                        Поток 1,
                      приоритет n
                                                      Поток 2,
                                                    приоритет n+1



                     Загрузка блока из               Проверка
                      файла в память                сигнатур в
                                                      памяти

                    Рис. 3.2 Общая схема работы в системе "СОМПА"
    Необходимо отметить, что программное приложение, реализующее алгоритм, должно
иметь современный графический интерфейс пользователя, обеспечивающий: идентифи-
кацию выполняемого приложения; меню, позволяющее выбрать один из пунктов "тести-
рование", "лечение", "тестирование и лечение". После выбора пункта меню пользователю
должна быть предложена форма с элементами управления, позволяющими выбрать диск,
каталог, файл, запустить или прервать поиск, сообщить об обнаружении цепочек-образов
с указанием имени файла, где обнаружены и какие именно. Если пользователь выберет на
диске каталог, то при поиске, необходимо обеспечить возможность сканирования файлов
не только внутри этого каталога, но и во всех вложенных. Дадим необходимую информа-
цию для программной реализации просмотра файлов каталога и файлов всех вложенных в
него каталогов. В далее приведенном примере используется инструментальная среда
С++Builder 3.0 и также даются сведения необходимые для использования Win32 API.
    Пример подготовлен в среде программирования C++Builder 3.0. Для организации вы-
бора каталога были использованы визуальные компоненты TDriveComboBox,
TDirectoryListBox, TFileListBox из палитры Win 3.1. Формирование полного имени файла
(имя и путь доступа к нему), в котором будет идти поиск цепочки-образа, выполняется в
модуле result.cpp. Если выбран файл, то полное имя файла сохраняется в строковой пере-
менной path. Если же выбран каталог, то поиск вирусов будет осуществляться во всех
файлах этого каталога и во всех вложенных в него каталогах. В этом случае полное имя
файла хранится в строковой переменной buf, меняясь при каждом прохождении тела цик-



                                          22