• управление буфером сооб щ ений.
Несмотря на су щ ествование дру г их кате г орий РУМч^ункций (например, инфор м ационные и сервисные функции или функции групповой обработки), реко м енлуе м обратить внимание на функции обработки сооб щ ений и функции управления процессами. Дру г ие же функции булут расс м отрены в контексте програ мм, в которых они используются.
Рис.6.6. Базовая архи т ек т ура PVM-среды
Функции управления процессами
Библиотека PVM содержит шесть часто используе м ых функций.
Функция pvm_spawn () используется для создания новых PVM-задач. При вызове этой функции м ожно указать количество создавае м ых задач, м есто их создания и аргу м енты, передавае м ые каждой задаче, напри м ер:
pvm_spawn(«agent_filters'\argv++,l,«host 3»,30,&Task3);
6.3. Базовые меха н измы PVM 235
Сикопсис
# inc lude "pvm3 . h»
int pvm_spawn(char *task, char **argv, int flag,
char *location,int ntask,int *taskids); int pvmJcill(int taskid); int pvm_exit(void) ;
intpvn_addhosts(char **hosts,int nhosts,int *status); int pvm_delhosts(char **hosts,int nhosts,int *status); int pvm_halt(void) ;
Параметр taskсодержит имя программы, которую должна выполнить функция pvm_spawn(). Поскольку про г рамма, которая запускается посредством функции pvm_spawn(), является автоно м ной, ей мо г ут потребоваться аргументы командной строки. Поэтомудля их передачи используется пара м етр argv.Параметр locationпозволяет указать, на каком компьютере должна быть выполнена задача. Пара м етр taskidsсодержит либо идентификаторы порождае м ых задач, либо коды состояния, представляю щ ие любые ситуации сбоя, которые м огут возникнуть во вре м я порождения процесса. Параметр ntasksопределяет, сколько экзе м п л яров задачи требуется создать. Функция pvm_kill()испо л ьзуется д л я анну л ирования задачи, указанной спо м о щ ью параметра taskid.С помо щ ью этой функции можно ан н у л ировать л юбую задачу, определенную пользователем в среде PVM, за иск л ючением вызываю щ ей. Эта функция отправляет си г нал SIGTERMPVM-задаче, по д лежа щ ей уничтожению. Функция pvm_exit() используетс я д л я выхо д а вызываю щ ей задачи из сре д ы PVM. Несмотр я на возможность выво д а за д ачи из сре д ы PVM, процесс, которому прина д лежит эта за д ача, может про д олжать выполнение. Слелует иметь в виду, что задача, выполн я ю щ ал вызовы РУМ^>ункций, может выполн я ть и д ру г ую работу, которая не св я зана со средой PVM. Функцию pvm_exit() должна вызывать Любая задача, которая больше не имеет отношения к специфике PVM-обработки. Функция pvm_addhosts() позволяет динамически вносить допол н ительные компьютеры в среду PVM. Обычно при вызове функции pvm_addhosts() передается список имен добавляемых компьютеров, например: int Status[3] ;
char *Hosts[ ] = {«porthos», «dartagnan»,«athos»}; pvm_addhosts («porthose», l,&Status) ;
//.. .
pvm_addhosts (Hosts, 3 , Status) ;
Параметр Hostsобычно содержит имена компьютеров (одно или несколько), перечисленных в файле .rhostsили .xpvm_hosts.Пара м етр nhostсодержит количество компьютеров, подлежа щ их добавлению в среду PVM, а пара м етр status— значение, равное значению пара м етра nhostsпри успешно м выполнении функции pvm_addhosts ().Ec*m при ее вызове не удалось добавить ни одно г о ко м пьютера, значение, возвра щ ае м ое функцией, будет м еньше числа 1.Если выполнение этой функции было лишь частично успешным, значение, возвра щ аемое функцией, будет равно количеству реально добавленных компьютеров. Функция pvm_delhosts() позволяет дина м ически извлечь из среды PVM один или несколько заданных ко м пьютеров. Пара м етр hostsсодержит их список, а параметр nhosts— количество выводимых компьютеров, например: pvm _delhosts («dartagnan», 1) ;
При выполнении этой функции компьютер с именем dartagnan будет извлечен из среды PVM. Функции pvm_addhosts () и pvm_delhosts () можно вызывать во время выполнения приложения. Это позволяет программисту динамически изменять размеры среды PVM. Любая PVM-задача, выполняемал на компьютере, который удаляется из PVM-среды, будет аннулирована. Демоны, выполняю щ иеся на удаляемых компьютерах (pvmd), будут остановлены. В случае возникновения аварийной ситуации на каком-либо компьютере PVM-среда автоматически удалит е г о. Значения, возвра щ аемые функцией pvm_delhosts, совпадают со значениями, возвра щ аемыми функцией pvm_addhosts (). Функция pvm_halt () прекра щ ает работу всей системы PVM. При этом все задачи и демоны (pvmd) останавливаются.
Читать дальше