Магистрали и мосты |
В данном документе приведены начальные сведения о магистралях и мостах. Информация взята из архива переписки за 2003 г.
Магистраль - набор алгоритмов и структур данных реализующих доставку сообщений задачам. Собственно это ядро системы. Магистраль выполняет такие функции: размещение сообщений в очередях задач с учетом фильтров и правил адресации (маршрутизация).
Сообщение - это пакет данных передаваемых задаче. Все задачи обмениваются данными между собой посредством сообщений. Сообщение содержит информацию о типе передаваемых данных, задаче отправителе/получателе данных, о приоритете сообщения, собственно сами данные.
Задача представляет собой поток управления и ассоциированную с ним очередь сообщений. Поток управления выбирает из очереди сообщения и обрабатывает их. Так же поток управления может отправлять сообщения другим задачам, помещая их в магистраль.
Пример системы, основанной на сообщениях
Кроме модулей самой системы, приведена простая тестовая программа. В ней два потока обмениваются несколькими сообщениями.
Приложение, ожидающее несколько различных типов сообщений, должно будет регистрироваться в каждой магистрали. Соответственно, возрастает потребление ресурсов пропорционально (в пределе) количеству созданных магистралей.
Скорость отклика отдельного приложения (в случае большого их количества) возрастет. Как следствие, за счет распараллеливания возрастет устойчивость системы, а также ее гибкость.
См. также "Теоретическое обоснование множественных программных магистралей сообщений".
Мост - программный или аппаратный модуль, позволяющий передавать сообщения из одной шины в другую.
Мосты могут быть самые разные, от "логического" моста, соединяющего две шины на одном компьютере, до чисто аппаратных мостов (PCI brige).
Сообщения смогут ходить по массе протоколов по своему протоколу, который можно завернуть в любой другой более низкого уровня.
Магистрали без мостов это просто IPC. Но если рассматривать в комплексе с мостами, то на IPC это уже, как-бы непохоже. Нечто большее. Более похожее на PRC или распределенную среду выполнения. И все таки это именно IPC, т.к. основная задача - синхронизация потоков по данным и управлению.