OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 19:58

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 64 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
СообщениеДобавлено: Воскресенье, 12 Ноябрь, 2017 18:21 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
А как нужно строить самые критически важные системы для АЭС?

Требования к системам категории А - в стандарте МЭК 60880.

Интересны требования по отсутствию:
-ОС-
Цитата:
B.2cb Следует избегать использования универсального операционного программного обеспечения (операционных систем)
B.2cc Если операционная система необходима, то ее применение следует ограничить небольшим числом простых функций
B.2cd Операционная система должна содержать только необходимые функции
Идеальный конечный результат (в формулировке ТРИЗ):
Идеальная ОС для изделия 60880, когда ее нет, а функции ОС выполняются.
Системы строят обычно на жесткой логике или без ОС или с циклом от таймера.

-Время выполнения-
Цитата:
B.2dd Время прогона не должно существенно изменяться в результате изменения входных данных
B.2de Значение изменения времени прогона, которое может быть вызвано входными данными, должно быть документально оформлено
B.2dg Объем данных, считываемых в течение одного вычислительного цикла, должен быть постоянным
Идеальный RealTime - отсутствие планировщика, в одном потоке от таймера.
Идеальная структура программы - без ветвлений, с жестко заданными ограничениями итераций циклов, с постоянным числом принимаемых сигналов.

-Прерывания-
Цитата:
B.2e Необходимо ограничивать применение прерываний
B.2ea Прерывания могут использоваться, если они упрощают проект ПО и не делают верификацию чрезмерно сложной
B.2ed Если прерывания используются, то для непрерываемых частей необходимо иметь оценки максимального времени вычислений, чтобы можно было рассчитать максимальное время, в течение которого прерывание запрещено
Идеально - отсутствие прерываний

Интересны требования по наличию:
Цитата:
B.3c Содержимое памяти должно быть защищено или контролироваться
B.3db Следует проверять правильность передачи любого параметра, включая проверку типа параметров
B.3dc При адресации массива следует проверять его границы
Идеально - наличие контроля памяти, типов, границ.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 12 Ноябрь, 2017 22:23 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
В последнее время и железо переусложнено и может быть ненадежно. В интернете была инфа, что в процессорах известной фирмы есть возможность перехвата управления чем угодно и никакая защита работающая на программном уровне не спасет от этого. Также была информация, что в эти же процессоры известной фирмы встроен специальный механизм, который позволит "отключить" чип, если "допустим ноутбук будет украден" :) При этом данный сигнал может быть послан по радиоволнам, например, со спутника.

В статье Никлауса Вирта, где рассказывается про реализацию простого RISC процессора на плате FPGA и запуску там ОС Оберона, в конце, в заключении есть такие слова, что данная реализация Оберона на FPGA может служить защищенным решением для случаев, когда и процессоры могут содержать в себе недекларированные возможности.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 12 Ноябрь, 2017 23:04 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
Ожидаемо, что критически важное ПО должно быть простым. Неоднократно упоминалось в "Пистолет не должен думать" и Категорический императив Калашникова: KISYBI. Тем ценнее, что МЭК нас не читает.

В части ОС архитектурно для 60880 подошли бы (в порядке убывания)
1. САУ для БПЛА А.Ширяева
2. Project Oberon
и, может быть, сильно порезанная А2.

Что еще важно, хотя продать «смотрите, что я ради вас сделал» куда легче, чем «смотрите, от чего я ради вас уклонился», но сертифицированное 60880 изделие как раз продает это свойство гарантированной минимальности.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 12 Ноябрь, 2017 23:12 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
Rifat писал(а):
данная реализация Оберона на FPGA может служить защищенным решением для случаев, когда и процессоры могут содержать в себе недекларированные возможности.

Отсутствие НДВ относится к другой сертификации (ФСТЭК), но также является свойством гарантированной минимальности.

Разные были попытки использовать embedded Win/Lin для сертификации, но это - попытки "договориться с таможней".
Требуется отсутствие функций в ОС (если есть), не являющихся необходимыми.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 13 Ноябрь, 2017 09:23 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 987
Откуда: Казань
Да, но кроме ОС, есть еще куча кода, который выполняется:
- микрокод в процессоре x86, который транслирует команды x86 в еще более низкоуровневые (говорят, что ядро процессора Pentium, ближе к RISC процессорам, хотя внешне он выглятит как CISC).
- код BIOS (когда-то давно читал, что уже тогда было возможно в качестве BIOS хранить 1 Gb данных, по сути там может быть целая операционка).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 13 Ноябрь, 2017 20:51 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
Цитата:
B.2db Результаты, связанные с последовательной программой, не должны зависеть:
-от времени, необходимого для выполнения программы
-от времени (отнесенного к независимым "часам"), когда начинается выполнение программы

Постулируется отсутствие синхронизации времени типа NTP, когда время "подтягивается" при рассинхронизации от источника.

Данные в системы категории А передаются по полевым сетям из систем категории А или от датчиков посылкой постоянного объема, с периодом обычно 20-50 мс.
Никакие спутники и Ethernet'ы повлиять не могут.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 13 Ноябрь, 2017 21:03 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
Цитата:
B.4ac Следует избегать переходов из циклов, если они не ведут к полному окончанию цикла. Исключение - выход по отказу
B.4af В тех случаях, когда используется список альтернативных ветвлений или операторов, управляемых вариантами, список условий ветвлений или вариантов должен быть исчерпывающим. Концепция "вариант по умолчанию" должна быть зарезервирована для обработки сбоя
B.4ag Следует использовать циклы только с постоянными максимальными областями значений переменной цикла


-Запрещен цикл LOOP EXIT END

-Запрещена ветка ELSE в
Код:
CASE
| VAR1: | VAR2:
ELSE
END


-В циклах необходима охрана по ограничению постоянным значением (IMAX)
Код:
WHILE ~done & (i < IMAX) DO ... END;

Цитата:
B.4dc Массивы должны иметь фиксированную, определенную заранее, длину


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Ноябрь, 2017 11:00 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Хорошие требования.
Я б сказал - описание идеального решения.
На счёт прерываний - СПОРНО (и - обсуждаемо, естественно).

Практически описана спецификация на библиотеку QP (http://www.state-machine.com/).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Ноябрь, 2017 11:06 

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 597
Rifat писал(а):
… Также была информация, что в эти же процессоры известной фирмы встроен специальный механизм, который позволит "отключить" чип, если "допустим ноутбук будет украден" :) При этом данный сигнал может быть послан по радиоволнам, например, со спутника.

В статье Никлауса Вирта, где рассказывается про реализацию простого RISC процессора на плате FPGA и запуску там ОС Оберона, в конце, в заключении есть такие слова, что данная реализация Оберона на FPGA может служить защищенным решением для случаев, когда и процессоры могут содержать в себе недекларированные возможности.

Всё хорошо, только и в FPGA наличие "закладок" не исключается.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Ноябрь, 2017 11:11 

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 597
Rifat писал(а):
Да, но кроме ОС, есть еще куча кода, который выполняется:
- микрокод в процессоре x86, который транслирует команды x86 в еще более низкоуровневые (говорят, что ядро процессора Pentium, ближе к RISC процессорам, хотя внешне он выглятит как CISC).
- код BIOS (когда-то давно читал, что уже тогда было возможно в качестве BIOS хранить 1 Gb данных, по сути там может быть целая операционка).

Гиг не гиг, а 8MB вполне себе объём - вчера только обновлял биос: flashdrive как источник, uefi-bios с графическим интерфейсом.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Ноябрь, 2017 11:31 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
В связи с тем, что последние годы связаны разработкой встроенного ПО и работы постоянно ведутся на границе софта и "железа", уже устоялись подходы к проектированию и решениям.

Они, кстати, во многом перекликаются с тем, что описано выше.

ОС (ОСРВ) стараюсь не применять "до последнего". Даже если и применяется, то стараюсь сводить её использование к минимуму.
В любом случае архитектура основывается на "главном цикле + обработчики прерываний". Синхронизация - через очереди сообщений/событий. Совместный доступ к данным модели "предметки" - "звоночек" неправильности проектирования архитектуры.

В любом случае, работаем в понятии "такта/рабочего цикла системы".
Мы должны в него укладываться по всем фрагментам задач/действий.
Какая разница, если длительность такта системы будет превышена в нашем "планировщике пошаговых действий" или - в многопоточной реализации нашего приложения?
Никакой.
При "ручной" реализации (часто) простейшего "планировщика фрагментов активностей" системы, логика синхронизации исчезает практически совсем или сводится к синхронному доступу к очередям событий (с сопутствующими им данными), что, в свою очередь, чрезвычайно ускоряет обработку таких моментов (раз)блокировки. Часто это сводится либо к запрету конкретного вида прерывания по конкретному связному интерфейсу/линии ввода, либо к общему запрету прерываний. Это занимает один-два такта, а не десятки-сотни, как в случае работы с элементами синхронизации в подсистемах поддержки многопоточности ОСей...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Ноябрь, 2017 11:59 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
В чём тогда обоснование существованию полноразмерных ОСРВ типа QNX?
Какую задачу без них решить будет крайне затруднительно?

Видимо, задачи как раз не управляющего характера, а информационного обеспечения.
Например, реализация и запуск полноценной СУБД РВ. Типа какого-нибудь Линтера.
Что-то ещё?

Хотя и тут можно урезать список типовых средств ОС общего назначения.
Например, отказ от тредов в пользу сопрограмм.
Только процессы.
Ну, в принципе, некий гибрид Minix 3 и Оберон-рантайма.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Ноябрь, 2017 15:00 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Илья Ермаков писал(а):
В чём тогда обоснование существованию полноразмерных ОСРВ типа QNX?

В общем случае - в универсальности способа ЗАПУСКА заранее не оговоренного/обусловленного набора процессов.
+ стандартизация средств общения между исполняющимися сущностями.
И - всё, собственно.
Дальше (когда систем запустилась и "вышла на устойчивый рабочий режим"), про ОС можно вполне забыть (если планировщик разработан правильно, адекватен задачам, реализован без ошибок и активные сущности подчиняются его правилам.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Ноябрь, 2017 16:20 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
По-моему, в этих описаниях ярко проявляется черта неформальных языков - неоднозначность трактовки.
Дмитрий Дагаев писал(а):
Цитата:
B.4ac Следует избегать переходов из циклов, если они не ведут к полному окончанию цикла. Исключение - выход по отказу
-Запрещен цикл LOOP EXIT END
Что означает полное окончание цикла? Что это за переход из цикла, который не ведёт к окончанию? Имелось ввиду полное окончание тела цикла? Если нет, то LOOP EXIT END не выглядит запрещённым.

Дмитрий Дагаев писал(а):
Цитата:
B.4af В тех случаях, когда используется список альтернативных ветвлений или операторов, управляемых вариантами, список условий ветвлений или вариантов должен быть исчерпывающим. Концепция "вариант по умолчанию" должна быть зарезервирована для обработки сбоя
-Запрещена ветка ELSE в
Если ветка ELSE введена явно, то она не по умолчанию, а по отрицанию остальных вариантов.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Ноябрь, 2017 21:42 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
Есть сертифицированные по 60880 системы
Westinghouse Common Q
Korea POSAFE-Q
AREVA
Есть реализации на FPGA
Радий, Кировоград

Есть кросс-средства разработки, кодогенераторы из, скажем, FBD в ЯВУ
SCADE Suite
SimInTech, Москва


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Ноябрь, 2017 16:30 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Объективно. насколько удобен FBD и всякие dataflow типа LabView?

По моим ощущениям, какая-то вермишель, опять же, для того, чтобы электронщик не начал мыслить системно и алгоритмически.
Может быть, сгущаю краски, но возможностей нормально инкапсулировать и делать обобщённые блоки логики (не под конкретный случай) там негусто.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Ноябрь, 2017 21:30 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1053
Откуда: Россия, Чебоксары
Илья Ермаков писал(а):
Объективно. насколько удобен FBD и всякие dataflow типа LabView?
Удобен именно для DataFlow. Не алгоритмически же дифуры описывать.

Цитата:
По моим ощущениям, какая-то вермишель, опять же, для того, чтобы электронщик не начал мыслить системно и алгоритмически.
С дискретными сигналами, по идее, без разницы. Исторически вся инфраструктура инженерная заточена на FBD.

Цитата:
Может быть, сгущаю краски, но возможностей нормально инкапсулировать и делать обобщённые блоки логики (не под конкретный случай) там негусто.
А какие проблемы?
Конкретный инструмент может чего-то и не уметь, но теоретически какая разница, что структурировать и инкапсулировать - текст или визуал?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Ноябрь, 2017 21:51 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
Еще раз, это функциональные требования с системам безопасности. Там 2 типа изделий.
90% - реализация защит реактора, FBD - и логика простейшая, защита должна сработать.
10% - приборы на панелях, панели безопасности с кнопками индивидуального управления защит - там не FBD.

Следует отметить, что
Цитата:
B.2dg Объем данных, считываемых в течение одного вычислительного цикла, должен быть постоянным

Обработка в коде от FBD делается без IF-ов и ветвлений вообще. (Практически) Исключены скрытые ошибки, все вылезает на первых же прогонах.
FBD исключительно хорош из соображений минимализма.

P.S. Для
Цитата:
возможностей нормально инкапсулировать и делать обобщённые блоки логики
есть МЭК стандарт 61499


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Ноябрь, 2017 22:41 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
Artyemov писал(а):
в FPGA наличие "закладок" не исключается.

Тема кибербезопасности для критически важных систем создана здесь

Кросс-средства разработки, которые генерят код для дальнейшей прошивки FPGA, подпадают под требования раздела D
Цитата:
B.5fd Там, где это применимо, язык, используемый для генерированного кода, должен соответствовать рекомендациям приложения D
B.5fc не должно быть никаких изменений на уровне генерированного кода. Если изменения необходимы, они должны быть внесены и документально оформлены


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 16 Ноябрь, 2017 04:36 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
По-моему, проще просто написать, что всё должно делаться на верифицированном компиляторе Оберона-07 ))


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 64 ]  На страницу 1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB