Наличие механизмов
взаимодействия дает произвольным
процессам возможность
осуществлять обмен данными и
синхронизировать свое выполнение с
другими процессами. Мы уже
рассмотрели несколько форм
взаимодействия процессов, такие
как канальная связь, использование
поименованных каналов и посылка
сигналов. Каналы (непоименованные)
имеют недостаток, связанный с тем,
что они известны только потомкам
процесса, вызвавшего системную
функцию pipe: не имеющие родственных
связей процессы не могут
взаимодействовать между собой с
помощью непоименованных каналов.
Несмотря на то, что поименованные
каналы позволяют
взаимодействовать между собой
процессам, не имеющим родственных
связей, они не могут использоваться
ни в сети (см. главу 13),
ни в организации множественных
связей между различными группами
взаимодействующих процессов:
поименованный канал не поддается
такому мультиплексированию, при
котором у каждой пары
взаимодействующих процессов
имелся бы свой выделенный канал.
Произвольные процессы могут также
связываться между собой благодаря
посылке сигналов с помощью
системной функции kill, однако такое
"сообщение" состоит из одного
только номера сигнала. В данной главе описываются другие
формы взаимодействия процессов. В
начале речь идет о трассировке
процессов, о том, каким образом один
процесс следит за ходом выполнения
другого процесса, затем
рассматривается пакет IPC:
сообщения, разделяемая память и
семафоры. Делается обзор
традиционных методов сетевого
взаимодействия процессов,
выполняющихся на разных машинах, и,
наконец, дается представление о
"гнездах", применяющихся в
системе BSD. Вопросы сетевого
взаимодействия, имеющие
специальный характер, такие как
протоколы, адресация и др., не
рассматриваются, поскольку они
выходят за рамки настоящей работы. Предыдущая
глава || Оглавление
|| Следующая глава
ГЛАВА 11. ВЗАИМОДЕЙСТВИЕ
ПРОЦЕССОВ