Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈ распрСдСлСнноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π‘++Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 65

Автор Π₯ьюз ΠšΠ°ΠΌΠ΅Ρ€ΠΎΠ½

int main(int argc, char *argv[]) {

int Taskl[20]; int Task2[50]; int Task3[30]; //...

pvm_spawn (Β«pvm_generic_combinationΒ», NULL, 1,

Β«hostlΒ»,20,Taskl); pvm_spawn (Β«generate_plansΒ», argv, 0, "", 50, Task2) ; pvm_spawn(Β«agent_filtersΒ»,argv++,l, Β«host 3Β»,30,&Task3) ; //.. .

}

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π°, прСдставлСнного Π² листингС 6.7, создаСтся 100 Π·Π°Π΄Π°Ρ‡. ΠŸΠ΅Ρ€Π²Ρ‹Π΅ 20 Π·Π°Π΄Π°Ρ‡ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ сочСтания. Π‘Π»Π΅Π»ΡƒΡŽΡ‰ΠΈΠ΅ 50 ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ создания сочСтаний Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ ΠΏΠ»Π°Π½Ρ‹ Π½Π° ΠΈΡ… основС. ПослСдниС 30 Π·Π°Π΄Π°Ρ‡ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ самыС ΡƒΠ΄Π°Ρ‡Π½Ρ‹Π΅ ΠΏΠ»Π°Π½Ρ‹ ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° ΠΏΠ»Π°Π½ΠΎΠ², сгСнСрированного ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈ ΠΌ ΠΈ 50 Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ. Π£ΠΆΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ это ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС позволяСт ΠΎΡ‰ΡƒΡ‚ΠΈΡ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ MPMD ΠΎΡ‚ ΠΌΠΎΠ΄Π΅Π»ΠΈ SPMD, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ всС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ pvm_spawn (), Π±Ρ‹Π»ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹. Π—Π΄Π΅ΡΡŒ ΠΆΠ΅ Π·Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π½Π°Π·Π½Π°Ρ‡Π°Π΅ΠΌΡƒΡŽ PVM-Π·Π°Π΄Π°Ρ‡Π° ΠΌ, Β«ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚Β» ΠΏΡ€ΠΎΠ³Ρ€Π° ΠΌΠΌ Ρ‹ pvm_generic_combination, generate_plans ΠΈ agent_filters. ВсС эти Π·Π°Π΄Π°Ρ‡ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с собствСнны ΠΌ ΠΈ Π½Π°Π±ΠΎΡ€Π° ΠΌ ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, нСс ΠΌ отря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΈ Π½Π°Π±ΠΎΡ€Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎ ΠΌ прСобразования Π΄Ρ€Ρƒ Π³ ΠΈΡ…. ΠŸΡ€ΠΎ Π³ Ρ€Π° ΠΌΠΌ Π° pvm_generic_combination ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ свой Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π½Π°Π±ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° generate_plans. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° generate_plans, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π½Π°Π±ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° agent_filters. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ эти Π·Π°Π΄Π°Ρ‡ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ сообщСниями. Π­Ρ‚ΠΈ сообщСния ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π²Ρ…ΠΎΠ΄Π½ΡƒΡŽ ΠΈΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, которая пСрСдаСтся ΠΌΠ΅ΠΆΠ΄Ρƒ процСсса ΠΌ ΠΈ. НСобходи ΠΌ ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² листингС 6.7 функция pvm_spawn () ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для размСщСния 20 Π·Π°Π΄Π°Ρ‡ pvm_generic_combination Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ hostl. Π—Π°Π΄Π°Ρ‡Π° generate_plans Π±Ρ‹Π»Π° Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π° Π½Π° 50 бСзымянных процСссорах, Π½ΠΎ каТдая ΠΈΠ· этих 50 Π·Π°Π΄Π°Ρ‡ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° ΠΏΡ€ΠΈ это ΠΌ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π°Ρ€Π³Ρƒ ΠΌ Π΅Π½Ρ‚ ΠΊΠΎ ΠΌ Π°Π½Π΄Π½ΠΎΠΉ строки с ΠΏΠΎ ΠΌ ΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° argv. Π—Π°Π΄Π°Ρ‡ΠΈ agent_filters Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π»ΠΈ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎ ΠΌ ΠΏΡŒΡŽΡ‚Π΅Ρ€ (с ΠΈΠΌΠ΅Π½Π΅ΠΌ host 3), ΠΈ каТдая Π·Π°Π΄Π°Ρ‡Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки посрСдством ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° argv. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” лишь Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ гибкости ΠΈ ΠΌΠΎ Ρ‰ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ PVM. НСкоторыС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ MPMD с использованиСм срСды PVM ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π½Π° рис. 6.5.

ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€Π΅ΠΈΠΌΡƒ Ρ‰ Сствами ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚ Π½ Ρ‹Ρ… рСсурсов ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² ΠΈΠ»ΠΈ ΠΆΠ΅ Β«ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒΡΡ Π½Π° ΡΡƒΠ΄ΡŒΠ±ΡƒΒ» Π² Π²ΠΈΠ΄Π΅ Β«Π·Π°ΠΊΠ°Π·Π°Β» ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… бСзымянных ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ². ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Ρ€Π°Π°Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ Π·Π°Π΄Π°Ρ‡Π°ΠΌ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. На рис. 6.5 ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ А прСдставляСт собой ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ с массовым ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠΎΠΌ (МП-ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€), Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π’ осна Ρ‰ Π΅Π½ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ количСством спСциализированных матСматичСских процСссоров. Π’Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ PVM-срСда Π² Π΄Π°Π½Π½ΠΎΠΌ случаС состоит ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ², ΠΊΠ°ΠΊ PowerPCs, Spares, Crays ΠΈ Ρ‚.Π΄. Π’ ΠΎΠ΄Π½ΠΈΡ… случалх ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… возмоТностях ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² Π² PVM-срСдС, Π° Π² Π΄Ρ€Ρƒ Π³ ΠΈΡ… трСбуСтся ΠΈΠ½ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ pvm_spawn () позволяСт Π‘++-программисту Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΠ³Π΄Π° это Π½Π΅ Π²Π°ΠΆΠ½ΠΎ. Но Ссли Π²Π°ΠΌ извСстно, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ осна Ρ‰ Π΅Π½ спСциализированными срСдствами, Ρ‚ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽ Ρ‰ ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ pvm_spawn ().

Рис. 6.5. НСко Ρ‚ ΠΎΡ€Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½ Ρ‚ Ρ‹ ΠΌΠΎΠ΄Π΅Π»ΠΈ MPMD дос Ρ‚ ΡƒΠΏΠ½Ρ‹ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ благодаря использованию срСды PVM

Β§ 6.1. ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ сочСтаний

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΌ Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ Π½Π°Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌ ΠΌ истов (Π² количСствС восьми Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ) ΠΈΠ· 24 ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΎΠ². Бколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎ ΠΌ Π°Π½Π΄ ΠΈΠ· восьми программистов ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ· этого числа ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΎΠ²? Один ΠΈΠ· Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ слСдуСт ΠΈΠ· основного Π·Π°ΠΊΠΎΠ½Π° ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ‚ΠΎΡ€ΠΈΠΊΠΈ, Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ су Ρ‰ СствуС Ρ‚ 735 471 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄, состоя Ρ‰ ΠΈΡ… ΠΈΠ· восьми программистов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Ρ‹ ΠΈΠ· 24 ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΎΠ². ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ C(n,r) читаСтся ΠΊΠ°ΠΊ сочСтаниС ΠΈΠ· n элСмСнтов ΠΏΠΎ Π³(ΠΈ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ количСство ΠΊΠΎ ΠΌ Π±ΠΈΠ½Π°Ρ†ΠΈΠΉ ΠΈΠ· n элС ΠΌ Π΅Π½Ρ‚ΠΎΠ² ΠΏΠΎ r). Π‘ΠΎΡ‡Π΅Ρ‚Π°Π½ΠΈΠ΅ C(n,r) вычисляСтся ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅:

6.3. Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ…Π° Π½ ΠΈΠ·ΠΌΡ‹ PVM 233

n\

r\(n-r)\

Если Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΌ Π½ оТСство, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ прСдставляСт сочСтания, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ {a,b,C}, Ρ‚ΠΎ считаСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ совпадаСт с мноТСством {b,a,c} ΠΈΠ»ΠΈ {c,b,a}. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, нас интСрСсуСт Π½Π΅ порядок Ρ‡Π»Π΅Π½ΠΎΠ² Π² этом мноТСствС, Π° сами Ρ‡Π»Π΅Π½Ρ‹. МногиС ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠœΡ…ΠœΠ«, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Ρ‰ ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ поиска, эвристичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ срСдства искусствСнного ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚Π°, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Π΅ мноТСства сочСтаний ΠΈ ΠΈΡ… Π±Π»ΠΈΠ·ΠΊΠΈΡ… родствСнников пСрСстановок.

Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ PVM

Π‘Ρ€Π΅Π΄Π° PVM состоит ΠΈΠ· Π΄Π²ΡƒΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²: PVM-Π΄Π΅ΠΌΠΎΠ½Π° (pvmd) ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ pvmd. Один PVM-Π΄Π΅ΠΌΠΎΠ½ pvmd выполняСтся Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС. Π­Ρ‚ΠΎΡ‚ Π΄Π΅ΠΌΠΎΠ½ слуТит Π² качСствС ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° сооб Ρ‰ Π΅Π½ΠΈΠΉ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π΄Π΅ΠΌΠΎΠ½ pvmd управляСт списком PVM-Π·Π°Π΄Π°Ρ‡ Π½Π° своСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. Π”Π΅ΠΌΠΎΠ½ управляСт процСссами, выполняСт ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΎΡ‚ΠΊΠ°Π·ΠΎΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π΄Π΅ΠΌΠΎΠ½ запускаСтся Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ запускаСт Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π΅ΠΌΠΎΠ½Ρ‹. Волько исходный Π΄Π΅ΠΌΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π΅ΠΌΠΎΠ½Ρ‹. И Ρ‚ΠΎΠ»ΡŒΠΊΠΎ исходный Π΄Π΅ΠΌΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ бСзусловно ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π΄Π΅ΠΌΠΎΠ½.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pvmd состоит ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠΉ PVM-Π·Π°Π΄Π°Ρ‡Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ. Π­Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ PVM-Π·Π°Π΄Π°Ρ‡Π΅ ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒΡΡ со своим Π΄Π΅ΠΌΠΎΠ½ΠΎΠΌ pvmd. Π‘Π°Π·ΠΎΠ²Π°Π» Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° PVM-срСды ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° рис. 6.6.

Π Π£ΠœΡ‚Ρ€Π΅Π΄Π° состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… PVM-Π·Π°Π΄Π°Ρ‡. КаТдал Π·Π°Π΄Π°Ρ‡Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сооб Ρ‰ Π΅Π½ΠΈΠΉ, Π½ΠΎ Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π±ΡƒΡ„Π΅Ρ€ (ΠΎΠ½ называСтся Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ Π±ΡƒΡ„Π΅Ρ€ΠΎΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСний). КаТдая Π·Π°Π΄Π°Ρ‡Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Π±ΡƒΡ„Π΅Ρ€ ΠΏΡ€ΠΈΠ΅ΠΌΠ° сооб Ρ‰ Π΅Π½ΠΈΠΉ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ (см. рис. 6.6) Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ PVM-Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ выполняСтся с использованиСм Π’Π‘Π -сокСтов. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ pvm_send () Π΄Π΅Π»Π°ΡŽΡ‚ доступ ΠΊ сокСтам ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌ. ΠŸΡ€ΠΎΡ‚Ρ€Π°ΠΌΠΌΠΈΡΡ‚ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ доступа ΠΊ функциям Π’Π‘Π Ρ‡ΡŽΠΊΠ΅Ρ‚ΠΎΠ² Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. На рис. 6.6 Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ взаимодСйствиС PVM-Π·Π°Π΄Π°Ρ‡ со своими Π΄Π΅ΠΌΠΎΠ½Π°ΠΌΠΈ pvmd с ΠΏΠΎΠΌΠΎ Ρ‰ ью TCP-сокСтов ΠΈ взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ самими Π΄Π΅ΠΌΠΎΠ½Π°ΠΌΠΈ с ΠΏΠΎΠΌΠΎ Ρ‰ ью UDP-сокСтов. И снова-Ρ‚Π°ΠΊΠΈ, ΠΎΠ±Ρ€Π° Ρ‰ Сния ΠΊ сокСтам Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ посрСдством PVM-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠŸΡ€ΠΎΠ³Ρ€Π° ΠΌΠΌ ист Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ сокСтов Π½Π° Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅. PVM-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² этой ΠΊΠ½ΠΈΠ³Π΅, дСлятся Π½Π° Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ:

β€’Β ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ процСссами;

β€’Β ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° сооб Ρ‰ Π΅Π½ΠΈΠΉ ΠΈ ΠΈΡ… ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ°;

‒ распаковка сооб Ρ‰ Π΅Π½ΠΈΠΉ ΠΈ ΠΈΡ… ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅;

β€’Β ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΡƒΡ„Π΅Ρ€ΠΎΠΌ сооб Ρ‰ Π΅Π½ΠΈΠΉ.

НСсмотря Π½Π° су Ρ‰ СствованиС Π΄Ρ€Ρƒ Π³ ΠΈΡ… ΠΊΠ°Ρ‚Π΅ Π³ ΠΎΡ€ΠΈΠΉ Π Π£ΠœΡ‡^ΡƒΠ½ΠΊΡ†ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ½Ρ„ΠΎΡ€ ΠΌ Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΈ сСрвисныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π³Ρ€ΡƒΠΏΠΏΠΎΠ²ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ), Ρ€Π΅ΠΊΠΎ ΠΌ Π΅Π½Π»ΡƒΠ΅ ΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сооб Ρ‰ Π΅Π½ΠΈΠΉ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ управлСния процСссами. Π”Ρ€Ρƒ Π³ ΠΈΠ΅ ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΡƒΠ»ΡƒΡ‚ расс ΠΌ ΠΎΡ‚Ρ€Π΅Π½Ρ‹ Π² контСкстС ΠΏΡ€ΠΎΠ³Ρ€Π° ΠΌΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ.

Рис. 6.6. Базовая Π°Ρ€Ρ…ΠΈ Ρ‚ Π΅ΠΊ Ρ‚ ΡƒΡ€Π° PVM-срСды

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ управлСния процСссами

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° PVM содСрТит ΡˆΠ΅ΡΡ‚ΡŒ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ ΠΌ Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Ѐункция pvm_spawn () ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания Π½ΠΎΠ²Ρ‹Ρ… PVM-Π·Π°Π΄Π°Ρ‡. ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌ ΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ количСство создаваС ΠΌ Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, ΠΌ Ссто ΠΈΡ… создания ΠΈ Π°Ρ€Π³Ρƒ ΠΌ Π΅Π½Ρ‚Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ ΠΌ Ρ‹Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅, Π½Π°ΠΏΡ€ΠΈ ΠΌ Π΅Ρ€: