Разработка отказоустойчивой операционной системы реального времени для вычислительных систем с макси...
Реферат - Компьютеры, программирование
Другие рефераты по предмету Компьютеры, программирование
рования SPOX-KNL стали следующие цифры:
Рис. 4.1. Структурная схема ОС SPOX
Все четыре подсистемы реализованы как библиотеки C-вызываемых перемещаемых модулей. При этом системные функции SPOX подключаются к объектному коду приложения на этапе связывания.
С помощью дополнительного модуля SPOX-MP становится возможной многопроцессорная обработка сигналов. Настройка на конкретную конфигурацию сети процессорных элементов задается в конфигурационном файле, что позволяет не привязываться к конкретной топологии в процессе разработки приложения. SPOX-MP обеспечивает динамическую передачу данных и сообщений по сети процессорных элементов, глобальное пространство имен, а также лавинообразную первоначальную загрузку сети.
Таким образом ОСРВ SPOX имеет необходимые механизмы для создания отказоустойчивой распределенной операционной системы реального времени, концепция построения которой описана в главе 2.
4.3 Аппаратно-зависимые компоненты ОСРВ
Модули маршрутизации, реконфигурации, голосования реализованы как аппаратно-независимые процедуры операционной системы. Модули оперируют данными, заданными в конфигурационном файле, что не привязывает их к конкретной топологии. Реализованные методом структурного программирования на языке Си, модули могут быть перенесены на большинство платформ, включая и TMS320C30.
Модуль коммуникации оперирует высокоуровневыми функциями обмена, опирающимися на драйвера операционной системы. Обмен данными осуществляется через последовательные порты с помощью встроенных механизмов передачи маркера между соседними процессорными элементами.
Зависимость программного обеспечения в рамках рассматриваемой операционной системы возникает на этапе самодиагностирования процессора с целью получения информации о своем состоянии.
4.3.1. Модуль диагностики ПЭ
Модуль диагностики, реализованный в виде набора функций, возвращающих код ошибки, призван решать следующие задачи:
- На этапе инициализации:
- Тестирование регистров общего назначения процессора;
- Проверка правильности выполнения арифметических, логических и др. операций;
- Занесение в соответствующую таблицу контрольных сумм неизменных во время выполнения программ областей памяти (исполняемый код, константы), размещение которых в памяти проводится на этапе сборки рабочего кода в соответствии с картой памяти;
- Во время рабочего цикла, тестирование может проводиться как с прерыванием вычислений функциональных задач, так и непосредственно во время их выполнения, если предусмотрено процессорное время на выполнение этих тестов. При этом может осуществляться:
- Тестирование регистров общего назначение;
- Проверка правильности выполнения арифметических, логических и др. операций;
- Вычисление контрольных сумм указанных областей памяти и сопоставление их с вычисленными на этапе инициализации.
4.3.1.1. Тестирование регистров общего назначения
Этот тест выполняется первым для проверки регистров повышенной точности (R0-R7) и вспомогательных регистров (АR0-АR7). Тестирование сводится к проверке регистров на запись/чтение из памяти/в память и проверке правильности перемещения данных из регистра в регистр. Тест разбивается на два этапа:
- Проверка вспомогательных регистров (целочисленные значения). Проверка реализована по следующему алгоритму:
- Инициализировать две целочисленные переменные начальным и ожидаемым значением тестирования;
- Загрузить начальное значение в регистры (АR0-АR7).
- Произвести операцию сложения так, что в каждом последующем регистре оказалась сумма предыдущих.
- Запись в стек модифицированных регистров.
- Произвести операцию сдвига влево содержимого стека на N разрядов в соответствии с номером записанного регистра.
- Записать данные из стека в регистры.
- Произвести операцию сложения так, что в каждом последующем регистре оказалась сумма предыдущих.
- Сравнить содержимое регистра АR7 с ожидаемым, заранее рассчитанным значением.
- Проверка регистров повышенной точности (значения с плавающей точкой) проводится аналогично.
Функция register_test реализована на языке Ассемблер в соответствии с архитектурой и системой команд TMS320C30.
4.3.1.2. Проверка правильности выполнения арифметических, логических и др. операций
Данный тест разделен на три различных модуля. Вместе они проверяют следующие числовые операции:
1. Логические, сдвиг, циклический сдвиг.
2. Операции с плавающей запятой, выполненные над одним значением и соответствующие параллельные команды.
3. Операции с плавающей запятой и целочисленные, выполняющие сложение, вычитание, и умножение и соответ?/p>