Правила распределения SIL для задач в критически важных для безопасности приложениях и совместного использования разделов
Рассматривая критически важное для безопасности приложение, состоящее из нескольких задач, у меня возникает следующий вопрос:
Возможно ли иметь в приложении задачи с разными уровнями SIL или это все задачи одного и того же уровня SIL? Я знаю, что в HW возможно иметь систему определенного SIL, фактически состоящую из подкомпонентов различных SIL. В МЭК 61508-2, раздел 7.4.3 представлены правила объединения подсистем различных уровней SIL для формирования системы с большим уровнем SIL, чем составляющие части.
Если это возможно, какие правила объединить? Ссылки очень полезны. Например, может ли задача уровня SIL 2 быть входом для задачи уровня SIL 3?
Спасибо и удачи,
4 ответа
Да, это возможно. Я рекомендую прочитать часть 3 последней версии МЭК 61508 (IEC 61508-3:2010), Приложение F, "Методы достижения невмешательства между элементами программного обеспечения на одном компьютере", это всего 5 страниц, но очень информативно. В нем изложены методы для достижения пространственной и временной независимости программных модулей с различными уровнями SIL.
Как говорилось ранее в этой ссылке, такие разделы должны обеспечивать такие операционные системы, как PikeOS и Vxworks; Я знаю, что SafeRTOS, сертифицированный по IEC 61508, обеспечивает этот тип разделения в качестве стандарта.
Вам следует взглянуть на системы, основанные на ARINC 653 (и DO-297) или эквивалентном. Операционные системы на основе разделов предназначены для удовлетворения такого рода потребностей. Я имею в виду PikeOS, VxWorks, Целостность...
Как я уже сказал: совместимая с ARINC 653 ОСРВ (для самолетов) точно нацелена на достижение этой цели. DO-178B (эквивалент IEC 61508 или ISO 26262 или Def-Stan 55/56) требует сегментирования в пространстве и времени между разделами или другого уровня обеспечения программного обеспечения (для вас, уровень SIL). Вы можете найти эквивалентные системы для вашего конкретного рынка. Для связывания разных уровней существуют трудности, связанные с низкоуровневыми уровнями и каналом связи. Вам нужно будет доказать детерминизм вашей системы на более высоком уровне безопасности / надежности / надежности (то есть, наиболее трудно получить). Таким образом, связь не может быть блокирована, RTOS должна быть сертифицирована на более высокий уровень, ... Это учитывается в ОСРВ на основе разделов, как эквивалент ARINC 653. Вы также можете иметь успех с MILS Linux или виртуальными системами (= гипервизоры, такие как ядра XEN, OKL)
Вы можете комбинировать модули SW с различным уровнем SIL, даже если Независимый Оценщик Безопасности глубоко проанализирует ваш код. Принцип прост: вы должны продемонстрировать, что более низкий модуль SIL не может влиять на больший модуль SIL. Чтобы достичь этого, вы должны иметь в виду, что функция с низким SIL может вызывать функцию с большим SIL, но следует строго избегать обратного. В этом сценарии для обмена данными между двумя модулями с различным уровнем SIL необходим третий модуль с уровнем SIL, равным более высокому, который предоставляет обоим API для обмена данными. Пример: - задача SIL3 (T1) реализует отказоустойчивый прикладной протокол. - задача SIL0 (T2) реализует стек TCP/IP, используемый в качестве транспортного уровня протокола приложения. Конечно, T1 и T2 должны обмениваться данными в обоих направлениях. Вам нужна третья задача (T3), по крайней мере, SIL3, которая предоставляет API взаимодействия между задачами (например, некоторые функции управления очередями). Таким образом, либо T1, чем T2 вызывают только функции T3 (то есть SIL3) для обмена данными.
Типичным примером такого механизма является так называемая "доска", используемая в авионике.