Синхронизация и взаимодействие программных потоков в операционной среде реального времени. Дорогов А.Ю. - 35 стр.

UptoLike

Составители: 

35
общениями является базовым средством для реализации современной
концепции проектирования прикладных программ в виде набора взаимо-
действующих процессов.
QNX была первой коммерческой системой, в которой механизм пере-
дачи сообщений использовался не только для прикладных программ, но и
для объединения различных компонентов системных служб в единое це-
лое. В 2.11 было дано описание механизма синхронизации потоков при пе-
редаче сообщений, в данном разделе будут детально представлены сер-
висные примитивы, поддерживающие эту форму взаимодействия между
потоками.
Таблица 3.1
Формы взаимодействия Область реализации
Обмен синхронными сообщениями Ядро
Импульсы Ядро
Сигналы Ядро
Обмен асинхронными сообщениями Ядро
POSIX очереди сообщений Внешний процесс
Разделяемая память Администратор процессов
Неименованные программные каналы (PIPEs) Внешний процесс
Именованные программные каналы (FIFOs) Внешний процесс
Кроме передачи сообщений в QNX Neutrino используются несколько
других форм взаимодействия потоков (табл. 3.1). В большинстве случаев
другие формы взаимодействия надстраиваются поверх механизма обмена
сообщениями.
3.1. Синхронный обмен сообщениями
В QNX Neutrino программные потоки взаимодействуют не напрямую
друг с другом, а через специальные объекты, называемые каналом
(Channel) и соединением (Connection) (рис. 3.1). Поток сервера (Server), ко-
торый желает получить сообщение, сначала создает канал; другой поток
клиент (Client), который желает послать сообщение к потоку сервера, дол-
жен создать соединение с каналом. Каналы и соединения после своего
создания получают идентифицирующие номерамалые целые числа, ко-
торые берутся из пространства файловых дескрипторов. Последнее озна-
чает, что сообщение может быть послано через файловый дескриптор не-
зависимо от того, как он был получен.
С соединением связаны 2 идентификатора – coid на стороне клиента и
scoid на стороне сервера. Для передачи сообщений используется только