Разработка отказоустойчивой операционной системы реального времени для вычислительных систем с максимальным рангом отказоустойчивости
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: курсовые работы бесплатно, украинские рефераты
| Добавил(а) на сайт: Silin.
Предыдущая страница реферата | 15 16 17 18 19 20 21 22 23 24 25 | Следующая страница реферата
Для реализации модели была выбрана ОС Windows 98/2000, так как на
данном этапе не ставилась задача тестирования ПО ВС в условиях жесткого
реального времени, а семантически механизмы обеспечения многопроцессности, синхронизации, ввода-вывода практически идентичны механизмам большинства
ОСРВ.
[pic]
Рис. 3.1. Взаимодействие модулей узла ВС
ПО узла ВС разбито на модули, структура которых представлена в таблице
3.1. Описание функций, реализующих данные модули, представлено в таблицах
3.2, 3.3, 3.4, 3.5.
Таблица 3.1
Описание составляющих модулей текстового редактора
|Модуль |Описание |
|Main.cpp |Центральный модуль. Запуск инициализации системы. Запуск|
| |маршрутизатора. Запуск модуля эмуляции каналов связи. |
| |Запуск ФЗ. |
|Router.cpp |Функции маршрутизатора |
|Commun.cpp |Функции модуля коммуникации |
|Vote.cpp |Функции голосования и анализатора отказов. |
|task.cpp |Функциональная задача. |
Таблица 3.2
Функции, реализующие маршрутизатор
|Имя |Описание |
|void router() |Формирование таблиц рассылки методом волны |
|void GetRoute(int |Поиск всех кратчайших по числу транзитных |
|CpuNum) |передач путей в графе ВС до узла CpuNum. |
Таблица 3.3
Функции, реализующие модуль коммуникации
|Имя |Описание |
|int InitLinkEmul (const|Инициализация модуля эмуляции каналов связи по |
|char *IniFile) |файлу инициализации IniFile, выделение буферов |
| |приема информации для каждого канала, создание |
| |и соединение каналов связи (неименованные |
| |каналы или сокеты). |
| |Возвращает 0 в случае успеха, -1 – в случае |
| |ошибки в файле IniFile. |
|void FinishLinkEmul |Завершение работы модуля эмуляции каналов |
|(void) |связи. |
|static SOCKET |Создание клиентского сокета номером Port и |
|ConnectServerSocket |соединение его с сервером. |
|(const char *ServName, | |
|int Port) | |
|static SOCKET |Создание серверного сокета номером Port и |
|CreateServerSocket |ожидание соединения с клиентом. |
|(SOCKET *PrimSock, int | |
|Port) | |
|static int |Создание серверного неименованного канала с |
|CreatePipeServer (int |номером Port. По указателям pipeRead и |
|Port, HANDLE *pipeRead,|pipeWrite возвращаются файловые дескрипторы на |
|HANDLE *pipeWrite) |чтение и запись. |
|static int |Создание клиентского неименованного канала с |
|CreatePipeClient (int |номером Port. По указателям pipeRead и |
|Port, HANDLE *pipeRead,|pipeWrite возвращаются файловые дескрипторы на |
|HANDLE *pipeWrite) |чтение и запись. |
|int LinkOut (int Link, |Посылка данных по заданному каналу связи Link, |
|void *Addr, int Length)|начиная с адреса Addr, Length байт с приемом |
| |квитанции от адресата. |
|int LinkIn (int Link, |Прием данных по заданному каналу связи Link, в |
|void *Addr, int Length)|буфер начиная с адреса Addr, Length байт с |
| |контролем целостности пакета и отправкой |
| |квитанции. |
|int Receive (int Chan, |Выборка данных из канального буфера Chan, |
|int From, void |пришедших от ПЭ From, начиная с адреса Addr, |
|*DataAddr, int |Length байт. |
|DataLength) | |
|int Send (int Chan, |Посылка данных по каналу Chan, начиная с адреса|
|void *DataAddr, int |DataAddr, длиной DataLength байт. |
|DataLength) | |
|static DWORD WINAPI |Задача прослушивания канала связи lpvThreadParm|
|LinkThreadFunc (LPVOID |в фоновом режиме, расшифровка заголовка пакета,|
|lpvThreadParm) |прием информационных частей посылки, запись в |
| |канальный буфер, выдача сигнала о приходе |
| |данных. |
Таблица 3.4
Функции, реализующие модуль голосования и анализатора отказов
|Имя |Описание |
|void |Переинициализация буферов голосования |
|InitializeVoteBuffers()| |
|void RestoreCpuFault() |Сброс информации о накопленных отказах ПЭ |
|void RestoreLinkFault()|Сброс информации о накопленных отказах каналов |
| |связей |
|int compare(struct |Провести элементарную проверку (сравнение) |
|BUFFER b1,struct BUFFER|буферов функциональной информации |
|b2) | |
|int TrippleFault() |Определение сбоя одного и того же элемента ВС |
| |на протяжении трех циклов. |
|void consolidate() |Функция анализа отказов, принятие |
| |консолидированного решения, активизации |
| |реконфигуратора. |
|void VoteThread() |Задача голосования, активизирующаяся по |
| |заполнению канальных буферов, активизирующая |
| |обмен в сети результатами голосования и |
| |передающая управление анализатору отказов. |
Таблица 3.5
Функции, реализующие реконфигуратор
|Имя |Описание |
|static int |Проверка изолированности ПЭ Cpu. |
|CheckCpuLinks (int Cpu)| |
|void reconfig(struct |Процедура реконфигурации, путем изменения |
|SYSTEM* M) |системных таблиц по информации об отказе. |
| |Активизация маршрутизатора для перестройки |
| |системных таблиц. |
Таблица 3.6
Функции, реализующие функциональную задачу
|Имя |Описание |
|void TaskLoop() |Функция исполнения ФЗ (на данном этапе ФЗ – |
| |набор последовательных простейших операторов) |
| |по информации от объекта управления. |
| |Завершается отсылкой результатов для |
| |голосования другим ПЭ и передачей управления |
| |задачам прослушивания и голосования. |
Дополнительные функции, обеспечивающие моделирование отказов в рамках своего ПЭ, представлены в таблице 3.7.
Таблица 3.7
Функции, реализующие моделирование отказа
|Имя |Описание |
|void KillCpu( int |type=1 – фатальный отказ ПЭ, приостановка всех |
|Cpu, int type ) |канальных потоков и ФЗ. |
| |type=0 – отказ ФЗ, внесение искажений при |
| |вычислении ФЗ. |
|void KillLink( int |Завершает соответствующий канальный поток, в |
|Link, int type ) |случае фатального отказа (type=0), или дает |
| |указание модулю коммуникации отсылать ошибочные |
| |пакеты (type=1). |
Диспетчеризация процессов в ПЭ происходит на уровне операционной системы, передача управления происходит с помощью таких механизмов, как семафоры и события. Во время ожидания на прием управления задачи находятся в спячке, почти не занимая процессорного времени. Процесс передачи управления приведен на рис. 3.2. При этом:
Процесс 1: Функциональная задача;
Процесс 2: Прослушивание канала связи с ОУ;
Процесс 3: Процесс голосования и анализа отказов;
Процесс 4: Реконфигурация;
Процесс 5: Отправка согласованных данных;
Процесс 6 .. N+6: Прослушивание N каналов связи с ПЭ ВС;
[pic]
Рис. 3.2. Диспетчеризация процессов.
Поскольку используются функции блокирующего ввода-вывода базовой ОС, в случае отсутствия данных на входе задача прослушивания канала связи
помещается в состояние спячки, практически не занимая при этом
процессорного времени, и активизируется только по приходу данных. После
этого загружается тело посылки. Далее определяется адресат, и если посылка
предназначена другому ПЭ, то посылка передаётся дальше по информации от
маршрутизатора, в противном случае производится контроль заголовка
(ошибочные посылки игнорируются). При наличии места данные попадают в
соответствующий буфер. При наличии данных во всех предварительных буферах, производится голосование и запись результата во входной буфер канала.
3.2 Программное обеспечение подсистемы проверки
Данный модуль призван обеспечить следующие функции:
. Отображение текущей топологической информации ВС.
. Отображение вычислительного процесса в ВС.
. Возможность моделирования различных отказов ВС.
Для обеспечения удобного интерфейса, приложение было сделано в виде
диалогового окна с помощью библиотеки классов Windows MFC (Microsoft
Foundation Classes).
[pic]
Рис. 3.3. Диалоговое окно программы Host.
Функциональное назначение элементов диалогового окна представлено в таблице
3.6.
Таблица 3.6
Назначение и функции элементов диалога
|Элемент |Описание |
|Панель «Отказ |Содержит три связанных элемента: |
|линка» | |
| |Переключатели (Radio Group) задания вида отказа линка, |
| |при этом «Фатальный отказ» означает полное прекращение |
| |передачи информации, а «Некорректная передача» - |
| |искажение передаваемых пакетов. |
| |Поля «ПЭ» и «Линк» задают номер ПЭ и номер канала связи|
| |для моделирования отказа. |
| |Кнопка «Задать» активизирует передачу управляющей |
| |информации заданному ПЭ. |
|Панель «Отказ |Содержит два связанных элемента: |
|ПЭ» |Переключатели задания вида отказа ПЭ, при этом |
| |«Фатальный отказ» означает полное прекращение |
| |функционирования (например зависание), а «Отказ ФЗ» - |
| |неправильный расчет ФЗ, с сохранением функций обмена и |
| |голосования. |
| |Поле «ПЭ» задает номер ПЭ для моделирования отказа. |
| |Кнопка «Задать» активизирует передачу управляющей |
| |информации заданному ПЭ. |
|Поле вывода |Обеспечивает отображение текущей топологической |
|(Rich Edit) |информации в виде модифицированной матрицы связности |
|«Топология» |(текстовый вид), обновляющейся на каждом такте работы |
| |ВС. |
|Поле вывода |Обеспечивает вывод в текстовом или графическом виде |
|«Процесс» |согласованных результатов счета ФЗ. |
|Кнопка «ПУСК» |По нажатию обеспечивает создание конфигурационных |
| |файлов для каждого ПЭ, запуск процессов, моделирующих |
| |ВС, связывание каналов связи с каждым ПЭ и вывод из |
| |спячки канальных потоков прослушивания. |
|Кнопка «Выход» |Обеспечивает освобождение памяти, уничтожения потоков |
| |исполнения, завершение программы. |
Для каждой кнопки диалогового окна существует свой обработчик, выполняющий вышеописанные функции. Помимо этого функция InitInstance(), инициализирующая работу диалога, выполняет анализ топологии ВС, создает приостановленные потоки прослушивания каналов для связи с каждым ПЭ, аналогичные описанным в таблице 3.3. Модуль коммуникации выполнен так же, как и модуль коммуникации ПЭ ВС.
При работе с интерфейсом задания отказа, канальные потоки
прослушивания приостанавливаются, и возобновляются после отсылки информации
ВС. На каждом цикле модуль коммуникации обеспечивает прием текущей
топологии ВС, согласованные результаты счета ФЗ и передает их на
отображение в соответствующие поля вывода.
Представленное программное обеспечение позволяет моделировать произвольную ВС, заданную матрицей связности, проводить проверку функционирования модулей ОСРВ, обеспечивающих отказоустойчивость, проводить комплексную отладку ПО.
4. Портирование ОСРВ на платформу TMS320C30
Под портированием (от англ. porting) понимается изменение программного обеспечения для функционирования в услвиях разных архитектур процессорных элементов.
Рекомендуем скачать другие рефераты по теме: российская федерация реферат, изложение.
Категории:
Предыдущая страница реферата | 15 16 17 18 19 20 21 22 23 24 25 | Следующая страница реферата