3. Программное обеспечение модели отказоустойчивой ВС
Основными задачами при разработке программной модели отказоустойчивой ВС, функционирующей под управлением распределенной ОСРВ, стали следующие:
Реализовать аппаратно-независимые модули обеспечения отказоустойчивости ОСРВ.
Моделировать ВС любой топологии (3-10 ПЭ).
Возможность обеспечить логику проверки модулей ОСРВ с помощью команд оператора.
Обеспечить работу модели в условиях «мягкого» реального времени.
Таким образом, программное обеспечение было разбито на две части:
ПО узла ВС Proc.
ПО подсистемы проверки Host.
3.1 Программное обеспечение модели узла ВС
Структура программного обеспечения модели узла ВС представлена на рис 3.1. В общем виде функционирование ПО узла ВС осуществляется по графу управления (циклограмме), представленной на рис. 6.3 технологической части, а логика работы подробно описана в главе 2.
Для реализации модели была выбрана ОС Windows 98/2000, так как на данном этапе не ставилась задача тестирования ПО ВС в условиях жесткого реального времени, а семантически механизмы обеспечения многопроцессности, синхронизации, ввода-вывода практически идентичны механизмам большинства ОСРВ.
Рис. 3.1. Взаимодействие модулей узла ВС
ПО узла ВС разбито на модули, структура которых представлена в таблице 3.1. Описание функций, реализующих данные модули, представлено в таблицах 3.2, 3.3, 3.4, 3.5.
Таблица 3.1Описание составляющих модулей текстового редактора
Модуль | Описание |
Main.cpp | Центральный модуль. Запуск инициализации системы. Запуск маршрутизатора. Запуск модуля эмуляции каналов связи. Запуск ФЗ. |
Router.cpp | Функции маршрутизатора |
Commun.cpp | Функции модуля коммуникации |
Vote.cpp | Функции голосования и анализатора отказов. |
task.cpp | Функциональная задача. |
Имя | Описание |
void router() | Формирование таблиц рассылки методом волны |
void GetRoute(int CpuNum) | Поиск всех кратчайших по числу транзитных передач путей в графе ВС до узла CpuNum. |
Имя | Описание |
int InitLinkEmul (const char *IniFile) | Инициализация модуля эмуляции каналов связи по файлу инициализации IniFile, выделение буферов приема информации для каждого канала, создание и соединение каналов связи (неименованные каналы или сокеты). Возвращает 0 в случае успеха, -1 – в случае ошибки в файле IniFile. |
void FinishLinkEmul (void) | Завершение работы модуля эмуляции каналов связи. |
static SOCKET ConnectServerSocket (const char *ServName, int Port) | Создание клиентского сокета номером Port и соединение его с сервером. |
static SOCKET CreateServerSocket (SOCKET *PrimSock, int Port) | Создание серверного сокета номером Port и ожидание соединения с клиентом. |
static int CreatePipeServer (int Port, HANDLE *pipeRead, HANDLE *pipeWrite) | Создание серверного неименованного канала с номером Port. По указателям pipeRead и pipeWrite возвращаются файловые дескрипторы на чтение и запись. |
static int CreatePipeClient (int Port, HANDLE *pipeRead, HANDLE *pipeWrite) | Создание клиентского неименованного канала с номером Port. По указателям pipeRead и pipeWrite возвращаются файловые дескрипторы на чтение и запись. |
int LinkOut (int Link, void *Addr, int Length) | Посылка данных по заданному каналу связи Link, начиная с адреса Addr, Length байт с приемом квитанции от адресата. |
int LinkIn (int Link, void *Addr, int Length) | Прием данных по заданному каналу связи Link, в буфер начиная с адреса Addr, Length байт с контролем целостности пакета и отправкой квитанции. |
int Receive (int Chan, int From, void *DataAddr, int DataLength) | Выборка данных из канального буфера Chan, пришедших от ПЭ From, начиная с адреса Addr, Length байт. |
int Send (int Chan, void *DataAddr, int DataLength) | Посылка данных по каналу Chan, начиная с адреса DataAddr, длиной DataLength байт. |
static DWORD WINAPI LinkThreadFunc (LPVOID lpvThreadParm) | Задача прослушивания канала связи lpvThreadParm в фоновом режиме, расшифровка заголовка пакета, прием информационных частей посылки, запись в канальный буфер, выдача сигнала о приходе данных. |
Имя | Описание |
void InitializeVoteBuffers() | Переинициализация буферов голосования |
void RestoreCpuFault() | Сброс информации о накопленных отказах ПЭ |
void RestoreLinkFault() | Сброс информации о накопленных отказах каналов связей |
int compare(struct BUFFER b1,struct BUFFER b2) | Провести элементарную проверку (сравнение) буферов функциональной информации |
int TrippleFault() | Определение сбоя одного и того же элемента ВС на протяжении трех циклов. |
void consolidate() | Функция анализа отказов, принятие консолидированного решения, активизации реконфигуратора. |
void VoteThread() | Задача голосования, активизирующаяся по заполнению канальных буферов, активизирующая обмен в сети результатами голосования и передающая управление анализатору отказов. |
Имя | Описание |
static int CheckCpuLinks (int Cpu) | Проверка изолированности ПЭ Cpu. |
void reconfig(struct SYSTEM* M) | Процедура реконфигурации, путем изменения системных таблиц по информации об отказе. Активизация маршрутизатора для перестройки системных таблиц. |
Имя | Описание |
void TaskLoop() | Функция исполнения ФЗ (на данном этапе ФЗ – набор последовательных простейших операторов) по информации от объекта управления. Завершается отсылкой результатов для голосования другим ПЭ и передачей управления задачам прослушивания и голосования. |
Дополнительные функции, обеспечивающие моделирование отказов в рамках своего ПЭ, представлены в таблице 3.7.
Таблица 3.7 Функции, реализующие моделирование отказаИмя | Описание |
void KillCpu( int Cpu, int type ) | type=1 – фатальный отказ ПЭ, приостановка всех канальных потоков и ФЗ. type=0 – отказ ФЗ, внесение искажений при вычислении ФЗ. |
void KillLink( int Link, int type ) | Завершает соответствующий канальный поток, в случае фатального отказа (type=0), или дает указание модулю коммуникации отсылать ошибочные пакеты (type=1). |
Диспетчеризация процессов в ПЭ происходит на уровне операционной системы, передача управления происходит с помощью таких механизмов, как семафоры и события. Во время ожидания на прием управления задачи находятся в спячке, почти не занимая процессорного времени. Процесс передачи управления приведен на рис. 3.2. При этом:
Процесс 1: Функциональная задача;
Процесс 2: Прослушивание канала связи с ОУ;
Процесс 3: Процесс голосования и анализа отказов;
Процесс 4: Реконфигурация;
Процесс 5: Отправка согласованных данных;
Процесс 6 .. N+6: Прослушивание N каналов связи с ПЭ ВС;
Рис. 3.2. Диспетчеризация процессов.
Поскольку используются функции блокирующего ввода-вывода базовой ОС, в случае отсутствия данных на входе задача прослушивания канала связи помещается в состояние спячки, практически не занимая при этом процессорного времени, и активизируется только по приходу данных. После этого загружается тело посылки. Далее определяется адресат, и если посылка предназначена другому ПЭ, то посылка передаётся дальше по информации от маршрутизатора, в противном случае производится контроль заголовка (ошибочные посылки игнорируются). При наличии места данные попадают в соответствующий буфер. При наличии данных во всех предварительных буферах, производится голосование и запись результата во входной буфер канала.
... первичной или первичной вместе со вторичной или только вторичной И. Если это - итог обработки информации, решения задачи, то такая информация называется результативной, результирующей. В процессе решения задач возникает промежуточная информация, которая часто в автоматизированных системах играет самостоятельную роль, определения направления путей завершения решения задачи. Результатная информация ...
... , практически, не используются. Проблема информатизации Минторга может быть решена путем создания Автоматизированной Информационной системы Министерства Торговли РФ (АИС МТ РФ) в соответствии с настоящим Техническим предложением. ГЛАВА 2. МАТЕМАТИЧЕСКОЕ ОБЕСПЕЧЕНИЕ КОМПЛЕКСА ЗАДАЧ "СИСТЕМА ДОКУМЕНТООБОРОТА УЧЕРЕЖДЕНИЯ”. функции поиска и архивации 2.1. Постановка задачи и её спецификация ...
... действий одной из них; • обращение к внешним устройствам только через операционную систему, что позволяет программистам использовать уже написанные драйверы, и не заниматься проблемами обеспечения совместимости с ними вновь разработанных программ; • возможность использования звуковых и видеоприложений. В отличие от Windows З.х новая операционная система не нуждается в установке на компьютере ...
... Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования. М.: Госстандарт СССР. ГОСТ 31078-2002. Защита информации. Испытания программных средств на наличие компьютерных вирусов. Типовое руководство. СТБ ИСО/МЭК 9126-2003. Информационные технологии. Оценка программной продукции. Характеристики качества и руководства по их применению. СТБ ИСО/МЭК ТО ...
0 комментариев