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

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

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

Рис.8.1. ЛогичСская структура ΠΈ распрСдСлСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² модСлях Β«ΠΈΠ·Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚Π΅Π»ΡŒ-ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡŒΒ», Ρ€Π°Π²Π½ΠΎΠΏΡ€Π°Π²Π½Ρ‹Ρ… ΡƒΠ·Π»ΠΎΠ², «классной доски» ΠΈ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠ°Π³Π΅Π½Ρ‚Π½ΠΎΠΉ систСмы

Если ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ относятся ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ процСссу, Ρ‚ΠΎ Π² качСствС срСдств ΠΌΠ΅ΠΆΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ Π³ ΠΎ «общСния» ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ использованиС Π³ Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Если ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ процСссам, выполняСмым Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Ρ‚ΠΎ срСдствами ΠΊΠΎΠΌ ΠΌ ΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌ ΠΈ ΠΌ ΠΎΠ³ΡƒΡ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠ°Π½Π°Π»Ρ‹, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ c дисциплиной обслуТивания Β«ΠΏΠ΅Ρ€Π²Ρ‹ ΠΌ ΠΏΡ€ΠΈΡˆΠ΅Π» β€” ΠΏΠ΅Ρ€Π²Ρ‹ ΠΌ обслуТСн», раздСляС ΠΌ Π°Π» ΠΏΠ° ΠΌ ΡΡ‚ΡŒ, Π±ΡƒΡ„Π΅Ρ€Ρ‹ ΠΎΠ± ΠΌ Π΅Π½Π° ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ ΠΌ Π΅Π½Π½Ρ‹Π΅ срСды. Если ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ «прописаны» Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ…, Ρ‚ΠΎ Π² качСствС срСдств связи придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сокСты, Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π»ΡƒΡ€ ΠΈ Π΄Ρ€Ρƒ Π³ ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ срСдств сСтСво Π³ ΠΎ ΠΏΡ€ΠΎ Π³ раммирования. ΠŸΡ€ΠΈ это ΠΌ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ΄Ρƒ ΠΌ Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ Ρ‚ΠΎ ΠΌ, ΠΊΠ°ΠΊ Π±ΡƒΠ»ΡƒΡ‚ ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² распрСдСлСнном ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π½ΠΎ ΠΈ ΠΎ Ρ‚ΠΎΠΌ, посрСдство ΠΌ Ρ‡Π΅ Π³ ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ это ΠΎΠ± Ρ‰ Π΅Π½ΠΈΠ΅. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ- ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ простыС Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΈ довольно слоТныС, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ классы, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. Π’Π°ΠΊΠΈΠ΅ классы часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для связи ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ связь ΠΌΠ΅ΠΆΠ΄Ρƒ распрСдСлСнными ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ простых встроСнных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ int, float ΠΈΠ»ΠΈ double), Π½ΠΎ ΠΈ посрСдством классовых Ρ‚ΠΈΠΏΠΎΠ², ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π±Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π΅ смогут Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρƒ ΠΎΠ΄Π½ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π±Ρ‹Π»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², располоТСнных Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… адрСсных пространствах. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π»ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Β«Π·Π½Π°Ρ‚ΡŒΒ» ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ язык Π‘++ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ срСдства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования, Π² Π½Π΅ΠΌ Π½Π΅ прСдусмотрСно Π½ΠΈΠΊΠ°ΠΊΠΈΡ… встроСнных срСдств ΠΏΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ связи ΠΌΠ΅ΠΆΠ΄Ρƒ распрСдСлСнными ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. Он Π½Π΅ содСрТит Π½ΠΈΠΊΠ°ΠΊΠΈΡ… встроСнных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ формирования ΠΊ Π½ΠΈΠΌ запросов.

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ связи ΠΌΠ΅ΠΆΠ΄Ρƒ распрСдСлСнными ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ряд ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ². Двумя Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ ΠΈΠ· Π½ΠΈΡ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ IIOP (Internet Inter-ORB Protocol β€” ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ сообщСний ΠΌΠ΅ΠΆΠ΄Ρƒ сСтСвыми ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΏΠΎ TCP/IP) ΠΈ RMI (Remote Method Invocation β€” Π²Ρ‹Π·ΠΎΠ² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²). Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, располоТСнныС практичСски Π² любом мСсти сСти. Π’ этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ рассмотрим ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ распрСдСлСнных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с использованиСм упомянутых ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² ΠΈ спСцификации CORBA (Common Object Request BrokerArchitecture). БпСцификация CORBA прСдставляСт собой ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹ΠΉ стандарт для опрСдСлСния ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ, взаимодСйствий ΠΈ связСй ΠΌΠ΅ΠΆΠ΄Ρƒ распрСдСлСнными ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. IIOP ΠΈ GIOP β€” Π΄Π²Π° основных ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ спСцификация CORBA. Π­Ρ‚ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΡΠΎΠ³Π»Π°ΡΡƒΡŽΡ‚ΡΡ с ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ TCP/IP. CORBA β€” самый простой ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΉ способ добавлСния срСдств распрСдСлСнного программирования Π² срСду Π‘++. БрСдства, прСдоставляСмыС спСцификациСй CORBA, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π΄Π²ΡƒΡ… основных ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π² этой ΠΊΠ½ΠΈΠ³Π΅: «классная доска» ΠΈ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠ°Π³Π΅Π½Ρ‚Π½Ρ‹Π΅ систСмы. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ спСцификация CORBA ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования, с Π΅Π΅ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ прилоТСния довольного ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°: ΠΎΡ‚ ΠΌΠΈΠ½ΠΈΠ°Ρ‚ΡŽΡ€Π½Ρ‹Ρ… Π΄ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ…. Π’ этой ΠΊΠ½ΠΈΠ³Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ MICO [14] β€” ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ спСцификации CORBA. MICO-рСализация ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ основныС CORBA-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈ слуТбы. Π‘++ взаимодСйствуСт с MICO посрСдством ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ классов ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ классов. БпСцификация CORBA ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ распрСдСлСнноС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π΅Π³ΠΎ ΡƒΡ€ΠΎΠ²Π½Π΅.

Бинхронизация взаимодСйствия Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

Для синхронизации доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈ рСсурсам со стороны Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ процСссам, Π½ΠΎ располоТСнных Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΡŒΡŽΡ‚Π΅ΠΊΡΡ‹ ΠΈ сСмафоры, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ процСсс, хотя ΠΈ ΠΎΡ‚Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ…, всС ΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ доступ ΠΊ систСмной памяти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Π­Ρ‚Ρƒ ΡΠΈΡΡ‚Π΅ΠΌΠ½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ памяти, раздСляСмой ΠΌΠ΅ΠΆΠ΄Ρƒ процСссами. Но Ссли процСссы распрСдСлСны ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌΠΈ, Ρ‚ΠΎ слСдуСт ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΎΠ±Ρ‰Π΅ΠΉ памяти, ΠΈ поэтому схСмы синхронизации Π² этом случаС Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. Бинхронизация доступа (Π² зависимости ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ WBM-ΠΌΠΎΠ΄Π΅Π»ΠΈ) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ интСнсивного взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ распрСдСлСнными ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠΌ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ синхронизации с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… возмоТностСй спСцификации CORBA.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π² распрСдСлСнной срСдС

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

Доступ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… адрСсных пространств

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΎΠ΄Π½Ρƒ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия (видимости), ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΠ»ΡƒΡ‡Π°Π» доступ Π΄Ρ€ΡƒΠ³ ΠΊ Π΄Ρ€ΡƒΠ³Ρƒ ΠΏΠΎ ΠΈΠΌΠ΅Π½Π°ΠΌ, псСвдонимам ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² случаС, Ссли Β«Π²ΠΈΠ΄ΠΈΠΌΠΎΒ» Π΅Π³ΠΎ имя ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π½Π΅Π³ΠΎ. Π’ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² опрСдСляСтся ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ дСйствия. Π‘++ Ρ€Π°Π°Π»ΠΈΡ‡Π°Π΅Ρ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ основ-ныхуровня областСй дСйствия:

β€’ Π±Π»ΠΎΠΊΠ°;

β€’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ;

β€’ Ρ„Π°ΠΉΠ»Π°;

β€’ класса.

ВспомнитС, Ρ‡Ρ‚ΠΎ Π±Π»ΠΎΠΊ Π² Π‘++ опрСдСляСтся Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹ΠΌΠΈ скобками {}, поэтому присваиваниС значСния Y ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ X Π² листингС 8.1 нСдопустимо, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ пСрСмСнная Y Π²ΠΈΠ΄ΠΈΠΌΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ°. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ main() нСизвСстно имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Y Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Π±Π»ΠΎΠΊΠ°, ΠΊΠΎΠ½Π΅Ρ† ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉΡΡ Ρ„ΠΈΠ³ΡƒΡ€Π½ΠΎΠΉ скобкой.

// Листинг 8.1. ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ области дСйствия Π±Π»ΠΎΠΊΠ°

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

int X; int Z; {

int Y;

Z = Y; // Π’ΠΏΠΎΠ»Π½Π΅ ΠΏΡ€Π°Π²ΠΎΠΌΠΎΡ‡Π½ΠΎΠ΅ присваиваниС.

//.. .