[ Pobierz całość w formacie PDF ]
.Aby mo¿na by³o korzystaæ z PVM, nale¿y wykonaæ nastêpuj¹ce czynnoœci:Zdefiniowaæ zmienn¹ œrodowiskow¹ PVM_ROOT, nadaj¹c jej wartoœæ /usr/local/pvm3,Zdefiniowaæ zmienn¹ œrodowiskow¹ PVM_DPATH, nadaj¹c jej wartoœæ$PVM_ROOT/usr/local/pvm3,Dodaæ lokalizacjê plików binarnych PVM do œcie¿ki wyszukiwania programów.Plikite s¹ umieszczone w katalogu $PVM_ROOT/bin,Dodaæ lokalizacje plików podrêcznika systemowego PVM do œcie¿ki wyszukiwaniapodrêcznika systemowego.Oprócz tego, podczas mno¿enia procesów demon PVM szuka plików wykonywalnychu¿ytkownika w podkatalogu pvm3/bin/LINUX umieszczonym w jego katalogumacierzystym.Katalog ten powinien byæ dodany tak¿e do œcie¿ki wyszukiwaniaplików wykonywalnych.Omówienie funkcji biblioteki PVMProgram korzystaj¹cy z biblioteki PVM jest powiêkszony o wywo³ania funkcjibibliotecznych mno¿¹cych procesy i obs³uguj¹cych wymianê komunikatów.W ka¿dymtakim programie jako pierwsza musi byæ wywo³ana funkcja pvm_mytid.Zwraca onadodatni¹ liczbê ca³kowit¹ nazywan¹ identyfikatorem zadania (ang.taskidentifier) albo liczbê ujemn¹ w przypadku wyst¹pienia b³êdu.Wywo³anie to mapostaæ:int pvm_mytid(void)Funkcja pvm_parent zwraca identyfikator zadania procesu rodzicielskiego dlaprocesu wywo³uj¹cego lub wartoœæ ujemn¹ w przypadku wyst¹pienia b³êdu.Wywo³anie to ma postaæ:int pvm_parent(void)Nowe procesy PVM s¹ uruchamiane za pomoc¹ wywo³ania pvm_spawn.Procesy, którenie zostan¹ uruchomione maj¹ identyfikator procesu rodzicielskiego równy 0.Wywo³anie tej funkcji ma nastêpuj¹c¹ postaæ:int pvm_spawn(char *progName, char **argv, int spawnOption,char *where, int ntasks, int *tids)Pierwszym argumentem jest tu nazwa programu, który ma byæ uruchomiony.Jakodrugi jest przekazywany zestaw argumentów wymaganych do pracy tego programu.Trzeci argument okreœla sposób tworzenia procesów i mo¿e przybieraæ nastêpuj¹cewartoœci:OpcjaZnaczeniePvmTaskDefaultKomputer jest wybierany przez PVMPvmTaskHostKomputer jest okreœlony przez u¿ytkownika za pomoc¹ opcji wherePvmTaskArchArchitektura komputera jest okreœlona przez u¿ytkownika za pomoc¹ opcji wherePvmTaskDebugUruchomienie procesu pod kontrol¹ debuggeraPvmTaskTraceGeneracja danych do œledzenia procesuFunkcja pvm_spawn zwraca liczbê utworzonych procesów.Wartoœæ ujemna lubmniejsza ni¿ liczba ¿¹danych procesów oznacza b³¹d.Procesy PVM mo¿na grupowaæ za pomoc¹ funkcji pvm_joingroup.Ma ona nastêpuj¹c¹postaæ:int pvm_joingroup(char *group)Funkcja ta zwraca ca³kowitoliczbowy numer egzemplarza procesu wywo³uj¹cego lubwartoœæ ujemn¹ w przypadku wyst¹pienia b³êdu.Jest ona przeznaczona g³Ã³wnie dosynchronizacji procesów wewn¹trz grupy.Procesy te s¹ synchronizowane w PVM zapomoc¹ funkcji barierowej pvm_barrier.Ma ona nastêpuj¹c¹ postaæ:int pvm_barrier(char *group, int n)Proces nale¿¹cy do grupy o identyfikatorze group, napotkawszy na barierê, niemo¿e jej opuœciæ a¿ do momentu, gdy dotrze do niej wszystkie n procesów.Funkcja ta zwraca kod statusu, który oznacza albo sukces, albo b³¹d.Procesy korzystaj¹ce z PVM wymieniaj¹ ze sob¹ komunikaty.Wysy³ka komunikatuodbywa siê trójetapowo.Najpierw wywo³ywana jest funkcja pvm_initsendoczyszczaj¹ca bufory komunikatów i przygotowuj¹ca komunikat do wysy³ki.Wywo³anie to ma postaæ:int pvm_initsend(int encoding)Funkcja ta ma jeden argument, którym jest schemat kodowania komunikatuokreœlony nastêpuj¹co:Schemat kodowaniaZnaczeniePvmDataDefaultKodowanie XDR dla systemów heterogenicznychPvmDataRawBrak kodowaniaPvmDataInPlaceDane pozostawione na miejscuNastêpnie odbywa siê pakowanie komunikatu, który ma byæ wys³any.PVM zawieraodpowiednie funkcje pakuj¹ce dla ka¿dego z obs³ugiwanych typów danych
[ Pobierz całość w formacie PDF ]