next up previous contents
Next: Обмен данными Up: Программирование с помощью DIPC Previous: Введение   Contents

Удаленное выполнение программ

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

Для того, чтобы IPC имела смысл, должны выполняться более одного процесса, использующего ее механизмы. При обычной IPC, эти процессы могут быть созданы с помощью системного вызова fork(). За ним должен следовать вызов exec(). В рамках DIPC использовать fork() для создания удаленного процесса нельзя, потому что он создает локальный процесс. Можно ``вручную'' запустить процессы удаленно, т.е. после того, как главная программа подготовила механизмы DIPC (разделяемая память, очереди сообщений или наборы семафоров), она ожидает соответствующее состояние, например, семафоров. После этого другой пользователь может запускать программы с консоли удаленной машины. Теперь эти программы должны использовать предварительные договоренности о семафорах, чтобы информировать главный процесс о своей готовности. Далее пользователь должен уделить внимание тому, чтобы не запускать удаленные программы слишком быстро - из-за возможной неготовности разделяемых структур. Программы-примеры из каталога examples/message работают именно в таком стиле.

Можно также использовать программы, подобные rsh для осуществления задействования удаленных программ. В данном случае главный процесс подготавливает все необходимое и затем раздваивает некий вспомогательный процесс для исполнения скрипта на Shell. Скрипт использует команды rsh для удаленного исполнения программ. Программы-примеры реализации данного метода располагаются в каталоге examples/image. Применение rsh для таких целей имеет определенное достоинство: после того, как вы разработали свою программу, можете просто отредактировать упомянутый скрипт - с целью указания в нем изменений, связанных с компьютерами, на которых вы хотели бы запускать свои программы - без необходимости перекомпиляции вашей программы и других действий. Аналогично перечень удаленных машин могут задать пользователи - без необходимости наличия доступа к исходным текстам вашей программы, - что может оказаться важным преимуществом коммерческих программ.

Еще одно замечание по поводу rsh: если он исполняется очень часто, то inetd может ``выключить'' соответствующий сервис. Вы можете прибегать к редактированию файла /etc/inetd.conf для регулирования подобного поведения.



2004-06-22