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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования для UnixΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 65

Автор Π Π΅ΠΉΠΌΠΎΠ½Π΄ Π­Ρ€ΠΈΠΊ Π‘Ρ‚ΠΈΠ²Π΅Π½

7.2.6.5.2. Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Freeciv

Π’ Π³Π»Π°Π²Π΅ 6 ΠΈΠ³Ρ€Π° Freeciv Π±Ρ‹Π»Π° прСдставлСна Π² качСствС ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π΄Π°Π½Π½Ρ‹Ρ…. Однако Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹ΠΌ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΈΠ³Ρ€Ρ‹ с мноТСством участников являСтся Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΡƒΡŽ ΠΈ ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΡƒΡŽ части. Freeciv являСтся Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ распрСдСлСно Π² сСти ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ связь Ρ‡Π΅Ρ€Π΅Π· Π’Π‘Π /1Π -сокСты.

БостояниС Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΉ ΠΈΠ³Ρ€Ρ‹ Freeciv обслуТиваСтся сСрвСрным процСссом, ядром ΠΈΠ³Ρ€Ρ‹. Π˜Π³Ρ€ΠΎΠΊΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ GUI-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ с сСрвСром посрСдством ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°. Вся игровая Π»ΠΎΠ³ΠΈΠΊΠ° обрабатываСтся Π½Π° сСрвСрС. Π”Π΅Ρ‚Π°Π»ΠΈ GUI-интСрфСйса ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ. Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ стили интСрфСйсов.

ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ ΠΈΠ³Ρ€Ρ‹ вСсьма Ρ‚ΠΈΠΏΠΈΡ‡Π½Π° для сСтСвых ΠΈΠ³Ρ€ с мноТСством участников. ΠŸΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π² качСствС транспорта ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» TCP/IP, поэтому ΠΎΠ΄ΠΈΠ½ сСрвСр способСн ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΡƒΠ·Π»Π°Ρ… Π² Internet. Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠ³Ρ€Π°Ρ…, Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… Π½Π° симуляторы Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (особСнно Π±ΠΎΠ΅Π²Ρ‹Π΅ ΠΈΠ³Ρ€Ρ‹ ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π»ΠΈΡ†Π°), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌ Internet (UDP), ΠΈ низкая Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° достигаСтся Π·Π° счСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ нСнадСТности доставки ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π’ Ρ‚Π°ΠΊΠΈΡ… ΠΈΠ³Ρ€Π°Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ дСйствия, поэтому Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² допустимы, Π° Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ„Π°Ρ‚Π°Π»ΡŒΠ½Π°.

7.2.6.6. ΠžΠ±Ρ‰Π°Ρ ΠΏΠ°ΠΌΡΡ‚ΡŒ

Π’ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π΄Π²Π° процСсса, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ для ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π° сокСты, ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ… (ΠΈ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ Internet-соСдинСниСм, "ΠΎΠ³ΠΈΠ±Π°ΡŽΡ‰ΠΈΠΌ" ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ ΠΏΠ»Π°Π½Π΅Ρ‚Ρ‹), общая ΠΏΠ°ΠΌΡΡ‚ΡŒ (shared memory) Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ поставщики ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Π² памяти ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Однако, Ссли процСссы, ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ физичСской памяти, Ρ‚ΠΎ общая ΠΏΠ°ΠΌΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ самым быстрым способом ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ.

ΠžΠ±Ρ‰Π°Ρ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСна Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ API-интСрфСйсами, Π½ΠΎ Π² соврСмСнных Unix-систСмах рСализация ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ зависит ΠΎΡ‚ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Ρ‚Π°Ρ€(2) для отобраТСния Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΎΠ±Ρ‰ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π’ стандартС POSIX опрСдСляСтся срСдство shm_open(3) с API-интСрфСйсом, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ использованиС Ρ„Π°ΠΉΠ»ΠΎΠ² Π² качСствС ΠΎΠ±Ρ‰Π΅ΠΉ памяти. Данная функция, Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, прСдоставляСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ ΡΠ±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ Π½Π° диск Π΄Π°Π½Π½Ρ‹Π΅ псСвдофайла.

Π’Π°ΠΊ ΠΊΠ°ΠΊ доступ ΠΊ ΠΎΠ±Ρ‰Π΅ΠΉ памяти автоматичСски Π½Π΅ сСриализуСтся Π² ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ порядкС, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌ чтСния ΠΈ записи, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с ΠΎΠ±Ρ‰Π΅ΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡƒΡ‚Π΅ΠΌ использования сСмафоров, находящихся Π² совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΌ сСгмСнтС. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΡ€ΠΎΡ†Π΅ΡΡΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (ΠΈΡ… обсуТдСниС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π² ΠΊΠΎΠ½Ρ†Π΅ Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Ρ‹), Π½ΠΎ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ управляСмыми, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎ^ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ становятся Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ.

Π’ систСмах, Π³Π΄Π΅ это доступно ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, срСдство ΡƒΡ‡Π΅Ρ‚Π° (scoreboard facility) Web-сСрвСра Apache примСняСт ΠΎΠ±Ρ‰ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ для ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π³Π»Π°Π²Π½Ρ‹ΠΌ процСссом Apache ΠΈ ΠΏΡƒΠ»ΠΎΠΌ распрСдСлСния Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠ±Ρ€Π°Π·ΠΎΠ² Apache, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ½ управляСт. Π’ соврСмСнных рСализациях систСмы X Ρ‚Π°ΠΊΠΆΠ΅ примСняСтся общая ΠΏΠ°ΠΌΡΡ‚ΡŒ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ находятся Π² памяти ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС эта ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° примСняСтся для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΈΠ·Π΄Π΅Ρ€ΠΆΠ΅ΠΊ связи с использованиСм сокСтов. Оба Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° примСнСния ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой срСдство ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, обоснованноС скорСС ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ ΠΈ тСстами, Ρ‡Π΅ΠΌ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ.

Π’Ρ‹Π·ΠΎΠ² Ρ‚Ρ‚Π°Ρ€(2) поддСрТиваСтся Π²ΠΎ всСх соврСмСнных Unix-систСмах, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Linux ΠΈ вСрсии BSD с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. Он описан Π² Π΅Π΄ΠΈΠ½ΠΎΠΉ спСцификации Unix (Single Unix Specification). ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ нСдоступСн Π² Windows, классичСской MacOS ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах.

Π”ΠΎ Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ появилась спСциализированная функция Ρ‚Ρ‚Π°Ρ€(2), ΠΎΠ±Ρ‰ΠΈΠΌ способом сообщСния Π΄Π²ΡƒΡ… процСссов Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Π€Π°ΠΉΠ» Π½Π΅ удалялся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±Ρ‹Π»ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ всС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ дСскрипторы Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°, Π½ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ старыС Unix-систСмы использовали ΠΎΠ±Π½ΡƒΠ»Π΅Π½ΠΈΠ΅ счСтчика ссылок ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ дисковой ΠΊΠΎΠΏΠΈΠΈ Ρ„Π°ΠΉΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ. НСдостатком Π² этом случаС Π±Ρ‹Π»ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ устройством Π±Ρ‹Π»Π° файловая систСма, Π° Π½Π΅ устройство ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΊΠΈ. ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находился удаляСмый Ρ„Π°ΠΉΠ», Π±Ρ‹Π»ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±Ρ‹Π»ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… процСссов ΠΊ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ сСгмСнту ΠΎΠ±Ρ‰Π΅ΠΉ памяти, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ΅ Ρ‚Π°ΠΊΠΈΠΌ способом, Π±Ρ‹Π»ΠΎ Π² Π»ΡƒΡ‡ΡˆΠ΅ΠΌ случаС слоТным.

ПослС появлСния вСрсии 7 ΠΈ раздСлСния Π²Π΅Ρ‚Π²Π΅ΠΉ BSD ΠΈ System V ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΡ мСТпроцСссного взаимодСйствия Π² Unix стала Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² Π΄Π²ΡƒΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… направлСниях. НаправлСниС BSD ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ появлСнию сокСтов. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π²Π΅Ρ‚Π²ΡŒ AT&T Ρ€Π°Π·Π²ΠΈΠ²Π°Π»Π° ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹ (ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ сказано Ρ€Π°Π½Π΅Π΅) ΠΈ IPC-срСдство, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ основанноС Π½Π° Π΄Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… очСрСдях сообщСний Π² ΠΎΠ±Ρ‰Π΅ΠΉ памяти. Π­Ρ‚ΠΎ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ называСтся "System V IPC" ΠΈΠ»ΠΈ "Indian Hill IPC" (срСди профСссионалов ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΉ ΡˆΠΊΠΎΠ»Ρ‹).

Π’Π΅Ρ€Ρ…Π½ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ System V IPC, ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сообщСний, ΠΏΠΎΡ‡Ρ‚ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π²Ρ‹ΡˆΠ΅Π» ΠΈΠ· употрСблСния. НиТний ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, состоящий ΠΈΠ· ΠΎΠ±Ρ‰Π΅ΠΉ памяти ΠΈ сСмафоров, Π΄ΠΎ сих ΠΏΠΎΡ€ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² условиях, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ с Π²Π·Π°ΠΈΠΌΠ½Ρ‹ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ совмСстноС использованиС Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ процСссами, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΌΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ машинС. Π”Π°Π½Π½Ρ‹Π΅ срСдства ΠΎΠ±Ρ‰Π΅ΠΉ памяти Π² System V Ρ€Π°Π·Π²ΠΈΠ»ΠΈΡΡŒ Π² API с ΠΎΠ±Ρ‰Π΅ΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ стандарта POSIX, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π² Linux, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… вСрсиях BSD, MacOS X ΠΈ Windows, Π½ΠΎ Π½Π΅ Π² классичСской MacOS.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Π°Π½Π½Ρ‹Π΅ срСдства ΠΎΠ±Ρ‰Π΅ΠΉ памяти ΠΈ сСмафоров (shmget(2), semget(2) ΠΈ ΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅), ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΈΠ·Π΄Π΅Ρ€ΠΆΠ΅ΠΊ копирования Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· сСтСвой стСк. Данная Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° интСнсивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… коммСрчСских Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Oracle, DB2, Sybase Ρ€ Informix).

7.3. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… слСдуСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ BSD-сокСты Ρ‡Π΅Ρ€Π΅Π· TCP/IP стали Π΄ΠΎΠΌΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ IPC-ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π² Unix, Π΄ΠΎ сих ΠΏΠΎΡ€ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ΡΡ ΠΎΠΆΠΈΠ²Π»Π΅Π½Π½Ρ‹Π΅ споры ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ способа раздСлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ срСдствами ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ. НСкоторыС ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΅Ρ‰Π΅ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ ΡƒΠΌΠ΅Ρ€Π»ΠΈ, Π° ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм Π·Π°ΠΈΠΌΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ с ΡΠΎΠΌΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ (часто Π² связи с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ GUI-интСрфСйсов). НиТС Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСбСзопасныС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹.

7.3.1. Π£ΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ IPC-ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² Unix

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма Unix (созданная Π² 1969 Π³ΠΎΠ΄Ρƒ) ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Π»Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ TCP/IP (ΠΏΠΎΡΠ²ΠΈΠ²ΡˆΠ΅ΠΌΡƒΡΡ Π² 1980 Π³ΠΎΠ΄Ρƒ) ΠΈ повсСмСстному Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½Π΅Π½ΠΈΡŽ сСтСй ΠΏΠΎΠ·Π΄Π½Π΅Π΅ Π² 90-Ρ… Π³ΠΎΠ΄Π°Ρ… ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Π²Π΅ΠΊΠ°. НСимСнованныС ΠΊΠ°Π½Π°Π»Ρ‹, ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ Π²Ρ‹Π·ΠΎΠ²Ρ‹ с созданиСм ΠΏΠΎΠ΄ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Π±Ρ‹Π»ΠΈ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹ для Unix с Ρ€Π°Π½Π½ΠΈΡ… Π΄Π½Π΅ΠΉ Π΅Π΅ сущСствования, ΠΎΠ΄Π½Π°ΠΊΠΎ история Unix ΠΈΠ·ΠΎΠ±ΠΈΠ»ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΆΠΈΠ²ΡˆΠΈΠΌΠΈ API-интСрфСйсами, связанными с ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌΠΈ IPC-ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΈ сСтСвыми модСлями, начиная со срСдства ΡˆΡ… (), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ появилось Π² вСрсии 6 (1976) ΠΈ Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΎ Π΄ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π° вСрсии 7 (1979).

Π’ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ BSD-сокСты ΠΏΠΎΠ±Π΅Π΄ΠΈΠ»ΠΈ, ΠΊΠΎΠ³Π΄Π° IPC-ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ объСдинился с ΡΠ΅Ρ‚ΡŒΡŽ. Однако это ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС 15 Π»Π΅Ρ‚ исслСдований, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ оставили Π·Π° собой мноТСство ΠΏΠ΅Ρ€Π΅ΠΆΠΈΡ‚ΠΊΠΎΠ². Π—Π½Π°Ρ‚ΡŒ ΠΎ Π½ΠΈΡ… ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Unix-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, вСроятно, найдутся ссылки Π½Π° Π½ΠΈΡ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ всС Π΅Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ эти ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΊΠ½ΠΈΠ³Π΅ "Unix Network Programming" [80].