IPC в системах передачи сообщений — прямая связь

Согласно книге «Концепции операционных систем», говорится:

При прямой связи каждый процесс, который хочет установить связь, должен явно указать получателя или отправителя сообщения. Эта схема демонстрирует симметрию в адресации. В этой схеме примитивы отправки и приема определяются как:

  • Отправить (P, сообщение): отправить сообщение процессу P
  • получить (Q, сообщение) — получить сообщение от процесса Q.

При асимметрии только отправитель называет получателя; получатель не обязан называть отправителя. В этой схеме примитивы отправки и приема определяются следующим образом:

  • Отправить(P, сообщение): отправить сообщение процессу P.
  • получить (идентификатор, сообщение): получить сообщение от любого процесса; переменная id устанавливается на имя процесса, с которым произошла связь.

Я не могу понять, в чем разница? В асимметричной схеме разве вызов receive() не должен указывать идентификатор отправителя?


person user3087000    schedule 03.08.2019    source источник
comment
Для асимметричного случая книга должна была описать его как (senderID, message) = receive(), чтобы было ясно, что и senderID, и message являются выходами, а не входами (где это было бы message = receive(senderID) для симметричного случая).   -  person Brendan    schedule 06.08.2019


Ответы (1)


Разница заключается в том, что вызов receive() не указывает идентификатор отправителя. Подразумевается, что отношение отправитель:получатель много к одному (N:1), тогда как симметричный случай равен 1:1. Многие реализации предлагают вторичные механизмы для размытия этих последствий.

В случае N:1 необходимо некоторое объяснение механизмов обработки нескольких одновременных отправителей. Объяснения включают политику: в порядке живой очереди; случайный; приоритет, мощность: #-потоки и, возможно, наследование параметров планирования и ограничений.

В случае 1:1 нет необходимости в политике или емкости, и можно с уверенностью предположить, что наследование является врожденным. Таким образом, случай 1:1 более поддается автоматическому анализу.

Система 1:1, допускающая динамическую настройку пар отправитель:получатель, может быть еще более сложной, чем эти идентифицированные системы. В системе такого рода отправитель может обнаружить получателя с помощью некоторого процесса, который создает экземпляр получателя для этого отправителя. Раскрытие атрибутов policy,capacity,inheritance является более сложным в такой схеме.

person mevets    schedule 06.08.2019