Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Коммуникация процессов.





Рассмотрим теперь возможные механизмы для непосредственной коммуникации процессов и синхронизации их действий.

Наиболее распространенный из них - система сообщений; при этом процессы взаимодействуют между собой без обращений к общим переменным

Средства коммуникации между процессами обеспечивают две операции вида:

  • send (message) – отправка сообщения message; размер сообщения может быть постоянным или переменным;
  • receive (message) – получение сообщения в буфер message.

Если процессам P и Q требуется взаимодействовать между собой, им необходимо:

  • Установить связь (communication link) друг с другом
  • Обменяться сообщениями вида send/receive.

Реализация связи может быть физической (общая память, аппаратная шина) или логической (например, логические свойства).

При реализации коммуникационного механизма между процессами необходимо решить следующие вопросы:

  • Как устанавливается связь?
  • Можно ли установить связь более чем двух процессов?
  • Сколько связей может быть установлено между двумя заданными процессами?
  • Какова пропускная способность линии связи?
  • Является ли длина сообщения по линии связи постоянной или переменной?
  • Является ли связь ненаправленной или двунаправленной (дуплексной)?

Непосредственная коммуникация процессов

При непосредственной коммуникации (direct communication) процессы именуют друг друга явно – по именам или по адресам (указателям), которые указываются в вызовах коммуникационных примитивов, например:

  • send (P, message) – послать сообщение процессу P;
  • receive (Q, message) – получить сообщение от процесса Q.

При данном способе коммуникации свойства линии связи, согласно контрольному списку:

  • Связь устанавливается автоматически (ее реализуют операционная система или отдельные коммуникационные инструменты).
  • Связь ассоциируется только с одной парой взаимодействующих процессов.
  • Между каждой парой процессов всегда только одна связь.
  • Связь может быть ненаправленной, но, как правило, она двунаправленная (процесс может получить сообщение от другого явно заданного процесса и принять от него сообщение)..

Косвенная коммуникация процессов

При косвенной коммуникации (indirect communication) сообщения направляются и получаются через почтовые ящики (mailboxes), или порты (ports) системные структуры, предназначенные для приема, хранения и передачи сообщений. Для определенности будем использовать термин почтовый ящик.

Каждый почтовый ящик имеет уникальный идентификатор.

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

Свойства линии связи, согласно списку:

  • Связь устанавливается, только если процессы имеют общий почтовый ящик.
  • Связь одного процесса может быть установлена со многими процессами (которым доступен тот же почтовый ящик).
  • Каждая пара процессов может иметь несколько линий связи (так как сообщения могут посылаться через различные почтовые ящики).
  • Связь может быть ненаправленной или двунаправленной.

При косвенном способе коммуникации процессы используют набор операций вида:

  • Создать новый почтовый ящик.
  • Отправить (принять) сообщение через почтовый ящик.
  • Удалить почтовый ящик

Основные операции коммуникации принимают вид:

  • send (A, message) – послать сообщение в почтовый ящик A.
  • receive (A, message) – получить сообщение из почтового ящика A.

Как мы видим, в данном случае не используются адреса или имена процессов-корреспондентов; вместо них задаются имена почтовых ящиков.

При косвенной связи процессов может оказаться необходимой синхронизация. Дело в том, что передача сообщений может выполняться с блокировкой (синхронно) или без блокировки (асинхронно). Соответственно, основные операции send и receive могут быть с блокировкой или без блокировки.

 







Date: 2016-07-25; view: 398; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию