OberonCore https://forum.oberoncore.ru/ |
|
Серверное ПО SCADA-системы https://forum.oberoncore.ru/viewtopic.php?f=5&t=5214 |
Страница 1 из 1 |
Автор: | Дмитрий Дагаев [ Понедельник, 15 Сентябрь, 2014 15:44 ] | ||
Заголовок сообщения: | Серверное ПО SCADA-системы | ||
Разработка на Обероне серверного ПО. Сделана система "черный ящик" и внедрена на АЭС. Презентация со встречи 14 сентября. Будет продолжение, напишу.
|
Автор: | Роман М. [ Понедельник, 15 Сентябрь, 2014 20:30 ] |
Заголовок сообщения: | Re: Серверное ПО SCADA-системы |
А как вообще относятся к open-source проектам без поддержки со стороны организаций? Вот, к примеру, кто сможет оказать поддержку по BlackBox (как ядру так и каркасу) в случае необходимости? Или всё своими силами? Интересно каковы критерии выбора инструмента разработки при планировании ПО. Почему разработка не ведётся, скажем на C# или, скажем, на Форте? |
Автор: | Илья Ермаков [ Понедельник, 15 Сентябрь, 2014 20:44 ] |
Заголовок сообщения: | Re: Серверное ПО SCADA-системы |
Роман, кстати, посмотрите статью Дмитрия в Объектных системах: viewtopic.php?f=31&t=4496 Там рассказано о сопоставлении с CORBA и о возросшей стабильности и производительности при уходе с CORBA на свой коммуникационный слой... Жалко, что ещё не вышел последний выпуск, там тоже будет его очень интересная статья. А ещё на конференции Дмитрий приводил пример очень паршивой проблемы с CORBA и С++ (сочетание исключений, параллелизма в условиях нестабильной сети), которую в принципе не удалось побороть... Дмитрий Викторович, наверное, неплохо было бы кратко и здесь раскрыть эту проблему? Пример симптоматичный... |
Автор: | Alexey Veselovsky [ Понедельник, 15 Сентябрь, 2014 21:15 ] |
Заголовок сообщения: | Re: Серверное ПО SCADA-системы |
Илья Ермаков писал(а): А ещё на конференции Дмитрий приводил пример очень паршивой проблемы с CORBA и С++ (сочетание исключений, параллелизма в условиях нестабильной сети), которую в принципе не удалось побороть... Проблема, вероятно, не в С++ или Корбе, проблема скорее всего где-то в ошибке при работе с вытесняющей многозадачкой. Точнее с многозадачкой в сочетании с разделяемой общей памятью. От ЯП это не зависит. |
Автор: | Дмитрий Дагаев [ Понедельник, 15 Сентябрь, 2014 21:40 ] |
Заголовок сообщения: | Re: Серверное ПО SCADA-системы |
Роман М. писал(а): А как вообще относятся к open-source проектам без поддержки со стороны организаций? Вот, к примеру, кто сможет оказать поддержку по BlackBox (как ядру так и каркасу) в случае необходимости? Или всё своими силами? Интересно каковы критерии выбора инструмента разработки при планировании ПО. Почему разработка не ведётся, скажем на C# или, скажем, на Форте? За атомную отрасль могу сказать. Есть стандарты МЭК, в них написано про использование ранее разработанного ПО. Два варианта: 1. Делаем систему безопасности - тогда каждая строчка кода, ось и весь инструментарий сертифицируется - требования, проект, план качества, ... плюс требования защиты массивов, нет goto, см МЭК-60880 2. Для остального - можно использовать при наличии комплекса мер по верификации/валидации. Там есть место линуксам и др. Но все хотят избавиться от зависимостей - среды, конкретного компилятора, библиотек. |
Автор: | Info21 [ Понедельник, 15 Сентябрь, 2014 21:47 ] |
Заголовок сообщения: | Re: Серверное ПО SCADA-системы |
Alexey Veselovsky писал(а): От ЯП это не зависит. При прочих равных. Которых нет.
|
Автор: | Илья Ермаков [ Понедельник, 15 Сентябрь, 2014 22:58 ] |
Заголовок сообщения: | Re: Серверное ПО SCADA-системы |
Alexey Veselovsky писал(а): Проблема, вероятно, не в С++ или Корбе, проблема скорее всего где-то в ошибке при работе с вытесняющей многозадачкой. Точнее с многозадачкой в сочетании с разделяемой общей памятью. От ЯП это не зависит. Думаешь, что идёт разрушение памяти, ведущее к некорретной работе механики исключений? Но любое разрушение памяти проявлялось бы не одинаковым образом... Дело таки в какой-то ошибке в реализации рантайм-поддержки исключений в этом компиляторе С++, может быть? Дело, конечно, не в самом ЯП (т.е. не в особенностях его синтаксиса и семантики), но в толщине непрозрачности того, как его механизм исключений реализован и работает... |
Автор: | Илья Ермаков [ Понедельник, 15 Сентябрь, 2014 23:00 ] |
Заголовок сообщения: | Re: Серверное ПО SCADA-системы |
Дмитрий Дагаев писал(а): За атомную отрасль могу сказать. Есть стандарты МЭК, в них написано про использование ранее разработанного ПО. Два варианта: 1. Делаем систему безопасности - тогда каждая строчка кода, ось и весь инструментарий сертифицируется - требования, проект, план качества, ... плюс требования защиты массивов, нет goto, см МЭК-60880 И реально какие применяются инструменты, соответствующие этому стандарту? Ada? |
Автор: | Дмитрий Дагаев [ Вторник, 16 Сентябрь, 2014 09:40 ] |
Заголовок сообщения: | Re: Серверное ПО SCADA-системы |
Илья Ермаков писал(а): А ещё на конференции Дмитрий приводил пример очень паршивой проблемы с CORBA и С++ (сочетание исключений, параллелизма в условиях нестабильной сети), которую в принципе не удалось побороть... Дмитрий Викторович, наверное, неплохо было бы кратко и здесь раскрыть эту проблему? Пример симптоматичный... Конфигурация Есть многопоточное серверное ПО (C++, linux, CORBA), которое периодически, 1 раз в 2 месяца сбоит на объекте (там не идеальная сеть). На полигоне не сбоит. Путем долгих экспериментов (более месяца удалось придумать конфигурацию, в которой возникают сбои: 58 потоков, 15 локальных и 15 удаленных клиентов с учетверенной скоростью опроса, периодически обрывающих TCP-соединение, программа, которая в cron, которая периодически, раз в полчаса загружает ЦПУ. Симптомы Вызываем, скажем из пользовательской клиентской программы получение удаленного объекта Код: try { vxch = Xch::_narrow(obj); } catch (...) { } пересобрали корбу, отследили внутри Код: if(policies_ -> retry.max != 0) throw CORBA::UNKNOWN; Эксперименты Методом тыка нашли, что перестает падать в данной конфигурации, если изменить код на Код: if(policies_ -> retry.max != 0)
throw ; |
Автор: | Дмитрий Дагаев [ Вторник, 16 Сентябрь, 2014 09:57 ] |
Заголовок сообщения: | Re: Серверное ПО SCADA-системы |
Alexey Veselovsky писал(а): Проблема, вероятно, не в С++ или Корбе, проблема скорее всего где-то в ошибке при работе с вытесняющей многозадачкой. Точнее с многозадачкой в сочетании с разделяемой общей памятью. От ЯП это не зависит. Выводы 1. Безусловно, многозадачка влияет 2. Корба - это лишних 150тыс строк в библиотеке и лишних пять потоков и интенсивная работа с динамической памятью. Учитывая, что Xch::_narrow использует удаленный блокирующий вызов с переключением на эти пять потоков, не соглашусь - Корба влияет. Кстати, на локальных соединениях эффекта нет. 3. С++. То, что я описываю, означает, что программа падает после исключения, а не вследствие исключения. Есть ли между этими повторяющимися симптомами причинно-следственная связь, я не знаю. Астрология тоже наблюдает повторяющиеся цепочки, но причинно-следственная связь пока не доказана. Я - гадаю и думаю, что: нарушение границ массивов и некорректное освобождение памяти в самых удаленных уголках корбы (которые мало тестировались) могло привести к таким последствиям. По крайней мере, с Обероном пространство поиска (и моих мучений было бы меньше) |
Автор: | Дмитрий Дагаев [ Вторник, 16 Сентябрь, 2014 10:41 ] |
Заголовок сообщения: | Re: Серверное ПО SCADA-системы |
Илья Ермаков писал(а): Дмитрий Дагаев писал(а): За атомную отрасль могу сказать. Есть стандарты МЭК, в них написано про использование ранее разработанного ПО. Два варианта: 1. Делаем систему безопасности - тогда каждая строчка кода, ось и весь инструментарий сертифицируется - требования, проект, план качества, ... плюс требования защиты массивов, нет goto, см МЭК-60880 И реально какие применяются инструменты, соответствующие этому стандарту? Ada? Для систем безопасности - графический САПР (не Дракон), который сертифицируется. И крутится по прерыванию, либо с Микро Осью. Варианты с Адой у нас не знаю. |
Автор: | Info21 [ Вторник, 16 Сентябрь, 2014 16:01 ] |
Заголовок сообщения: | Re: Серверное ПО SCADA-системы |
Ситуация типологически сходная с научным софтом: На Обероне может не быть библиотек, но обмен (С++ + готовая монструозная библиотека) на (Оберон + своя контролируемая библиотека) оказывается сильно в пользу второго варианта -- уж точно по качеству результата. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |