Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kursovaOS_Horiacheva_331.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
471.05 Кб
Скачать

Раздел 2. Алгоритм программы

2.1. Общий алгоритм программы

Взаимодействие потоков чтения и анализа представлено на диаграмме последовательностей UML на рис.1. Главный поток выполняет параллельный запуск потоков чтения и анализа и создает отчет на основе полученных данных[5].

Рис.1 – UML диаграмма последовательности

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

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

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

Блок-схема управляющего потока представлена на рис.2.

Далее рассмотрим алгоритм для потока чтения.

Рис. 2. Блок-схема алгоритма управляющего потока

2.2. Алгоритм потока чтения

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

Рис.3. Блок-схема алгоритма потока чтения

Далее рассмотрим алгоритм потока анализа.

2.3. Алгоритм потока анализа

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

Рис. 4. Блок-схема алгоритма потока анализа

Раздел 3. Принципы реализации программы

Реализация приложения в данной курсовой работе выполнена на языке программирования С++ в IDE Microsoft Visual Studio 2010. Программа базируется на основе библиотек, классов, функций, методов и параметров этого языка программирования. Компилятор Visual C++. Программа разработана для архитектуры iа-32 (intel architecture) (x86).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]