OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Понедельник, 22 Октябрь, 2018 04:04

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




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
СообщениеДобавлено: Пятница, 20 Сентябрь, 2013 22:50 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9010
Откуда: Россия, Орёл
Дмитрий Дагаев. Реализация однопоточного коммуникационного ПО
Статья в сборнике трудов конференции "Объектные системы-2013".
http://objectsystems.ru/files/2013/Obje ... edings.pdf

Цитата:
При модернизации распределенной системы обработки данных АСУТП АЭС была
поставлена задача замены коммуникационного ПО. Рассматривались действующее ПО на
основе CORBA [1], реализующее клиент-серверное взаимодействие, технология DDS [2] на
основе модели публикация-подписка и новая разработка ПО для этих задач. При этом нужно
было повысить качество сетевого взаимодействия.
Действующая система была реализована в виде многопоточного пользовательского ПО
с блокировками потоков до получения данных. При сбоях связи и зависаниях сети система
штатно переходила на резервированные сети, с выдерживанием задержек, но время от
времени приходилось сталкиваться с присущими CORBA проблемами [3]: "ошибками,
относящимися к надежности потоков управления, надежности исключительных ситуаций и
управлению памятью". Опыт эксплуатации показывал не всегда правильное
функционирование при сложных условиях связи, ошибках в сети и переходах на резервные
маршруты передачи данных. Кроме того, архитектурно сложно выглядели системы,
требующие модели публикации-подписки.
Второй подход, в свою очередь, не слишком хорошо решает не присущие DDS клиент-
серверные задачи. Предлагаемый [2] протокол RTPS использует UDP как транспортный
уровень и переносит механизмы гарантированной доставки на пользовательский уровень.
Это не первый и не последний способ реализации функциональности TCP в пространстве
пользователя. Является ли это решение не худшим, чем транспортная реализация TCP, - это
вопрос, требующий тщательного рассмотрения.
С точки зрения приложения важен еще момент буферизации данных, которые
получены по UDP. DDS предоставляет многопоточные сетевые сервисы для этих целей,
которые добавляют еще один уровень сложности.
Учитывая вышесказанное, было принято решение разработки коммуникационного ПО
TA (англ. Transparent Architecture), призванного совместить клиент-серверную модель и
модель публикации-подписки. Технология Transparent Architecture построена на основном
временном цикле одного потока, который осуществляет прием и передачу данных без
единой блокировки. Это, кстати, дает дополнительное преимущество, т.к. "все переключения
контекста при получении каждого пакета сильно расходуют время центрального процессора
и существенно снижают производительность сети" [4] .


Цитата:
1. Основные принципы реализации
Неблокируемость и немодальность – ключевые особенности Transparent Architecture.
Клиентские программы в клиент-серверных приложениях часто построены по принципу
выделения отдельного потока для приема данных от сервера. Типичными особенностями
такой схемы является модальность, заключающаяся в переходе в режим ожидание чтения
данных с таймаутом. Поток при этом блокируется, при обрыве связи происходят переходы
от одного таймаута к другому.
Транспортный уровень построен на неблокирующих способах взаимодействия (в
частности, сокетах). Прием данных осуществляется при наличии данных без ожидания,
передача – без ожидания завершения, которое будет зафиксировано позднее. Главный цикл
обеспечивает точность поддержания времени в соответствии с требованиями задачи и
возможностями операционной системы.


Цитата:
Первоначально коммуникационное ПО было реализовано в виде C-библиотеки с
возможностью присоединения к BlackBox. Начиная с версии 2.0, появились Оберон-
реализации для BlackBox и XDS. Все реализации тестировались для ОС Windows и Linux.
TA реализована, версия 2.0 доступна в исходных текстах как ta1 на sourceforge.net.
http://sourceforge.net/projects/ta1/


Последний раз редактировалось Илья Ермаков Пятница, 20 Сентябрь, 2013 23:47, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 20 Сентябрь, 2013 23:05 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9010
Откуда: Россия, Орёл
На самом деле, что тут можно сказать...

Ещё три месяца назад, когда участвовал я в редактировании этого сборник "Объектных систем" - и параллельно читал всякие разборки на форумах - думалось: кто-то занимается нытьём, о том, что не хватает того и того, и того... а кто-то берёт и просто делает. решает свои задачи. Жалко, выпуск сборника ростовчане немного затянули, нельзя было поделиться раньше :)

Собственно, уважаемый Дмитрий Дагаев продолжил линейку славящихся применений Оберонов для "своих сложных задач, где не нужно чужих тараканов". С чем его и хочется поздравить.

А также обратить внимание на продолжение в современном системном программировании тренда отказа от конкуррентности в пользу неблокирующего однопоточного подхода (о чём я писал для И21 вот здесь: http://www.inr.ac.ru/~info21/zametki/welcome.html).


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

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 277
Откуда: Москва
Илья, спасибо большое, что обратили внимание.

Возможности использования неконкурентной многозадачности не исчерпаны. По поводу ссылки позволю одно уточнение: Services.Action не использует механизм кооперативной многозадачности(как гласит первое предложение). Это - чистое асинхронное программирование, также, как и TA.

Кооперативная многозадачность может тоже весьма интересно применяться для Оберонов, ну в моем пакете Co_ есть пример с Co_ObxActions, как альтернатива родной ObxActions на Services.Actions
http://www.zinnamturm.eu/downloadsAC.htm#Co_


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 21 Сентябрь, 2013 19:07 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2524
Откуда: Россия, Ярославль
Дмитрий Дагаев писал(а):
Вопрос, пугающий своей новизной: зачем в названии подчёркивание? :D


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 21 Сентябрь, 2013 20:54 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1537
Откуда: Беларусь, Минск
Чтобы спрятать смайлик Co_ObxActions : )


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

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


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

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


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

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