3. Клиент соединяется с администратором процессов на узле wintermute
. Это включает в себя отправку сообщения другому узлу с помощью драйверного потока qnet
. Процесс qnet
клиентского узла получает сообщение и транспортирует его через сетевую среду удаленному qnet
, который, в свою очередь, доставляет его администратору процессов на узле wintermute
. Администратор процессов этого узла разрешает остальную часть имени пути (в нашем примере это /home/rk/filename
) и отвечает перенаправляющим сообщением. Это сообщение передается обратно — через qnet
сервера по сетевой среде к qnet
клиента и, наконец, самому клиенту. Поскольку в этом сообщении содержатся ND/PID/CHID нужного сервера, предоставляющего конечный сервис, клиент теперь знает, к кому обращаться (в нашем примере это администратор удаленной файловой системы).
4. Теперь клиент посылает запрос непосредственно нужному серверу. Маршрут следования сообщения здесь идентичен описанному в предыдущем пункте, за исключением того, что на этот раз связь с сервером осуществляется напрямую, а не через администратор процессов.
После того как пройдены этапы 1 и 3, все дальнейшие коммуникации осуществляются аналогично этапу 4. В вышеприведенном примере все сообщения типа
qnet
об узле wintermute
, qnet
должен сначала выяснить, кто такой wintermute. Это может привести к еще одной сетевой транзакции для разрешения имени узла. Приведенный выше рисунок корректен, если предположить, что qnet
заранее знал про узел с именем wintermute
.
Мы еще вернемся к сообщениям, используемым функциями
Особенности обмена сообщениями в сети
Итак, как только соединение установлено, все дальнейшие операции обмена сообщениями осуществляются в соответствии с этапом 4, как указано на рисунке. Это может привести вас к ошибочному представлению, что передача сообщений по сети идентична локальной. К сожалению, это не так. Вот список отличий:
• более длительные задержки;
• функция
• функция
• функции
• функция
Поскольку передача сообщений теперь выполняется в некоторой среде, а не прямым копированием «память-память» под управлением ядра, можно смело ожидать, что затраты времени на передачу сообщения будут существенно выше (100-Мбитный Ethernet в сравнении с 128-битным динамическим ОЗУ с тактированием 100 МГц будет ориентировочно на один или два порядка медленнее). В дополнение к этому также будут сказываться накладные расходы протокола и повторные попытки передачи в сбойных сетях.
Когда вы вызываете функцию qnet
, изображенному выше на рисунке. Поскольку никакого сообщения еще не отправлено, вы не имеете информации о том, доступен ли узел, к которому вы только что подсоединились, или нет. В обычном случае это не проблема, потому что большинство клиентов не будет самостоятельно вызывать