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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«UNIX: Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сСтСвых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 237

Автор Уильям БтивСнс

УпраТнСния

1. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π° рис. 30.2 Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ процСсс оставляСт присоСдинСнный сокСт ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ, вмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΅Π³ΠΎ, ΠΊΠΎΠ³Π΄Π° созданы всС Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ процСссы?

2. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ сСрвСр ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»Π° 30.9 Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹ΠΉ сокСт Unix вмСсто ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ сокСта Π΄ΠΎΠΌΠ΅Π½Π° Unix. Π§Ρ‚ΠΎ ΠΏΡ€ΠΈ этом измСняСтся?

3. Π—апуститС ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ Ρ‚Π΅ сСрвСры ΠΈΠ· рассмотрСнных Π² этой Π³Π»Π°Π²Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ позволяСт Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ конфигурация вашСй систСмы, ΠΈ сравнитС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ с ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌΠΈ Π² тСкстС.

Π“Π»Π°Π²Π° 31

ΠŸΠΎΡ‚ΠΎΠΊΠΈ (STREAMS)

31.1. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’ этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌ ΠΎΠ±Π·ΠΎΡ€ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² STREAMS ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ для доступа ΠΊ ΠΏΠΎΡ‚ΠΎΠΊΡƒ. Наша Ρ†Π΅Π»ΡŒ β€” ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ сСтСвыС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹Ρ… систСм. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ создаСм простой ΠΊΠ»ΠΈΠ΅Π½Ρ‚ TCP с использованиСм TPI β€” интСрфСйса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСт доступ ΠΊ транспортному ΡƒΡ€ΠΎΠ²Π½ΡŽ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ примСняСтся сокСтами Π² систСмах, основанных Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ…. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ…, Π² Ρ‚ΠΎΠΌ числС ΠΎ написании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для ядСр, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² [98].

ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π•

ВСхнология ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° ДСнисом Π ΠΈΡ‚Ρ‡ΠΈ (Dennis Ritchie) [104] ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ распространСниС с появлСниСм систСмы SVR3 Π² 1986 Π³ΠΎΠ΄Ρƒ. БпСцификация POSIX опрСдСляСт STREAMS ΠΊΠ°ΠΊ Β«Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Π³Ρ€ΡƒΠΏΠΏΡƒΒ», Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ систСма ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠΈ STREAMS, Π½ΠΎ Ссли ΠΎΠ½Π° ΠΈΡ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚, Ρ‚ΠΎ рСализация Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ POSIX. Π›ΡŽΠ±Π°Ρ систСма, производная ΠΎΡ‚ System V, Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠΈ, Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ систСмы 4x.BSD ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚.

ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ²Π°Ρ систСма часто обозначаСтся ΠΊΠ°ΠΊ STREAMS, Π½ΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π½Π΅ являСтся Π°ΠΊΡ€ΠΎΠ½ΠΈΠΌΠΎΠΌ, Ρ‚ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ слово Β«ΠΏΠΎΡ‚ΠΎΠΊΠΈΒ».

НС слСдуСт ΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ Β«ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΡƒΡŽ систСму Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°Β» (streams I/O system), ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ описываСм Π² Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅, ΠΈ «стандартныС ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°Β» (standard I/O streams), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ (threads). Π’Ρ‚ΠΎΡ€ΠΎΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊΠΈΠΌ функциям, ΠΊΠ°ΠΊ fopen, fgets, printf ΠΈ Ρ‚.ΠΏ.).

31.2. ΠžΠ±Π·ΠΎΡ€

ΠŸΠΎΡ‚ΠΎΠΊΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ двустороннСС соСдинСниС ΠΌΠ΅ΠΆΠ΄Ρƒ процСссом ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 31.1. Π₯отя Π½ΠΈΠΆΠ½ΠΈΠΉ Π±Π»ΠΎΠΊ Π½Π° этом рисункС ΠΌΡ‹ ΠΈ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ, Π΅Π³ΠΎ Π½Π΅ слСдуСт Π°ΡΡΠΎΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ устройством, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ псСвдоустройства (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€).

Рис. 31.1. ΠŸΠΎΡ‚ΠΎΠΊ ΠΌΠ΅ΠΆΠ΄Ρƒ процСссом ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ

Π“ΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠ° (stream head) состоит ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ядра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ прилоТСния ΠΊ дСскриптору ΠΏΠΎΡ‚ΠΎΠΊΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ read, putmsg, ioctl ΠΈ Ρ‚.ΠΏ.).

ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ‚ динамичСски Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (processing modules) ΠΌΠ΅ΠΆΠ΄Ρƒ Π³ΠΎΠ»ΠΎΠ²Π½Ρ‹ΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ. Π’Π°ΠΊΠΎΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ осущСствляСт Π½Π΅ΠΊΠΈΠΉ Ρ‚ΠΈΠΏ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ сообщСний, проходящих Π² ΠΎΠ΄Π½Ρƒ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΡƒΡŽ сторону ΠΏΠΎ ΠΏΠΎΡ‚ΠΎΠΊΡƒ. Π­Ρ‚ΠΎΡ‚ процСсс ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° рис. 31.2.

Рис. 31.2. ΠŸΠΎΡ‚ΠΎΠΊ с ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

Π’ ΠΏΠΎΡ‚ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΎ любоС количСство ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Под словом Β«ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒΒ» (push) Π² Π΄Π°Π½Π½ΠΎΠΌ случаС понимаСтся, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ вставляСтся сразу послС (Π½Π° рисункС β€” Π½ΠΈΠΆΠ΅) Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ модуля.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ псСвдодрайвСра называСтся ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€ΠΎΠΌ (multiplexor). Он ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… источников. Основанная Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ… рСализация Π½Π°Π±ΠΎΡ€Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² TCP/IP, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² SVR4, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΈΠ΄, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π½Π° рис. 31.3.

Рис. 31.3. Π£ΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΉ Π²ΠΈΠ΄ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π°Π±ΠΎΡ€Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² TCP/IP, основанной Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ…

β–  ΠŸΡ€ΠΈ создании сокСта Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ сокСтов Π² ΠΏΠΎΡ‚ΠΎΠΊ помСщаСтся ΠΌΠΎΠ΄ΡƒΠ»ΡŒ sockmod. ИмСнно комбинация Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ сокСтов ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ модуля обСспСчиваСт API сокСтов для процСсса.

β–  ΠŸΡ€ΠΈ создании Ρ‚ΠΎΡ‡ΠΊΠΈ доступа XTI Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ XTI Π² ΠΏΠΎΡ‚ΠΎΠΊ помСщаСтся ΠΌΠΎΠ΄ΡƒΠ»ΡŒ timod. ИмСнно комбинация Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ XTI ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ модуля обСспСчиваСт API XTI для процСсса.

ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π•

Π­Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΡ… мСст, Π³Π΄Π΅ ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± XTI. ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ этой ΠΊΠ½ΠΈΠ³ΠΈ описывало интСрфСйс XTI ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ, Π½ΠΎ ΠΎΠ½ ΡƒΠΆΠ΅ Π²Ρ‹ΡˆΠ΅Π» ΠΈΠ· ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ употрСблСния, ΠΈ Π΄Π°ΠΆΠ΅ спСцификация POSIX большС Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π΅Π³ΠΎ, поэтому ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΡΡ‚Π°Π²ΡˆΠΈΠ΅ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ Π³Π»Π°Π²Ρ‹ ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ. На рис. 31.3 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ рСализуСтся интСрфСйс XTI. Π’ этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ ΠΊΡ€Π°Ρ‚ΠΊΠΎ расскаТСм ΠΎ Π½Π΅ΠΌ, Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π²Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² подробности, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ для использования XTI Π² настоящСС врСмя практичСски Π½Π΅Ρ‚.

β–  Π”ля использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ read ΠΈΠ»ΠΈ write Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ доступа XTI трСбуСтся ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΏΠΎΡ‚ΠΎΠΊ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ tirdwr. Π­Ρ‚ΠΎ осущСствляСтся процСссом, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΌ TCP, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π° рис. 31.3 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΌ слСва. ВСроятно, этот процСсс Ρ‚Π΅ΠΌ самым отказался ΠΎΡ‚ использования XTI, поэтому ΠΌΡ‹ ΡƒΠ±Ρ€Π°Π»ΠΈ надпись Β«Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° XTIΒ» ΠΈΠ· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠ°.

β–  Π€ΠΎΡ€ΠΌΠ°Ρ‚ сСтСвых сообщСний, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… ΠΏΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌ Π²Π²Π΅Ρ€Ρ… ΠΈ Π²Π½ΠΈΠ·, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ интСрфСйсы Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… сСрвисов. ΠœΡ‹ описываСм Ρ‚Ρ€ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ распространСнных. TPI (Transport Provider Interface β€” интСрфСйс поставщика транспортных слуТб) [126] опрСдСляСт интСрфСйс, прСдоставляСмый поставщиком услуг транспортного уровня (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, TCP ΠΈΠ»ΠΈ UDP). NPI (Network Provider Interface β€” интСрфСйс поставщика сСтСвого уровня) [125] опрСдСляСт интСрфСйс, прСдоставляСмый поставщиком услуг сСтСвого уровня (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, IP). DLPI (Data Link Provider Interface) β€” это интСрфСйс поставщика канального уровня [124]. Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ источник ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ TPI ΠΈ DLPI, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ исходныС ΠΊΠΎΠ΄Ρ‹ Π½Π° языкС Π‘, β€” это [98].

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊΠ° β€” Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, всС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ β€” содСрТат ΠΏΠΎ мСньшСй ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄Π½Ρƒ ΠΏΠ°Ρ€Ρƒ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ: ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° запись ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 31.4.

Рис. 31.4. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊΠ° содСрТит ΠΏΠΎ мСньшСй ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄Π½Ρƒ ΠΏΠ°Ρ€Ρƒ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ

Π’ΠΈΠΏΡ‹ сообщСний

ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹Π΅ сообщСния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ классифицированы ΠΊΠ°ΠΊ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ высокий ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ (high priority), входящиС Π² полосу ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° (priority band) ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ (normal). БущСствуСт 256 полос ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° со значСниями ΠΌΠ΅ΠΆΠ΄Ρƒ 0 ΠΈ 255, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ сообщСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ полосС 0. ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ сообщСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ постановкС сообщСния Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, Ρ‚Π°ΠΊ ΠΈ для управлСния ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ (flow control). По соглашСнию, Π½Π° сообщСния с высоким ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ Π½Π΅ влияСт.

На рис. 31.5 ΠΏΠΎΠΊΠ°Π·Π°Π½ порядок слСдования сообщСний Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.

Рис. 31.5. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ слСдования ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹Ρ… сообщСний Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² зависимости ΠΎΡ‚ ΠΈΡ… ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°

Π₯отя ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹Π΅ систСмы ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ 256 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… полос ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°, Π² сСтСвых ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°Ρ… ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ полоса 1 для срочных (внСполосных) Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ полоса 0 для ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π•

ВнСполосныС Π΄Π°Π½Π½Ρ‹Π΅ TCP Π² TPI Π½Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ истинныС срочныС Π΄Π°Π½Π½Ρ‹Π΅. Π’ самом Π΄Π΅Π»Π΅, Π² TCP полоса 0 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ для ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΈ для внСполосных Π΄Π°Π½Π½Ρ‹Ρ…. Полоса 1 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ срочных Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π΅Ρ… ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°Ρ…, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… срочныС Π΄Π°Π½Π½Ρ‹Π΅ (Π° Π½Π΅ просто срочный ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΊΠ°ΠΊ Π² TCP) ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π’ Π΄Π°Π½Π½ΠΎΠΌ контСкстС слСдуСт Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π½Π΅ΡΡ‚ΠΈΡΡŒ ΠΊ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρƒ Β«ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉΒ» (normal). Π’ систСмах SVR, ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… SVR4, Π½Π΅ Π±Ρ‹Π»ΠΎ полос ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°, Π° сообщСния дСлились Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹Π΅ (priority messages). Π’ SVR4 Π±Ρ‹Π»ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ‹ полосы ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ввСдСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ getpmsg ΠΈ putpmsg, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ вскорС опишСм. ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹Π΅ сообщСния Π±Ρ‹Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Ρ‹ Π² сообщСния с высоким ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ, ΠΈ встал вопрос, ΠΊΠ°ΠΊ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ сообщСния, относящиСся ΠΊ полосам ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° ΠΎΡ‚ 1 Π΄ΠΎ 255. НаиболСС распространСнной являСтся тСрминология [98], согласно ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ всС сообщСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ сообщСниями с высоким ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ сообщСниями ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π½Π° ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ согласно своим полосам ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°. Π’Π΅Ρ€ΠΌΠΈΠ½ Β«ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ сообщСниС» Π² любом случаС Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡŽ ΠΈΠ· полосы ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° 0.

Π₯отя ΠΏΠΎΠΊΠ° ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ сообщСниях с высоким ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ ΠΈ ΠΎΠ± ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… сообщСниях, сущСствуСт ΠΎΠΊΠΎΠ»ΠΎ 12 Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… сообщСний ΠΈ ΠΎΠΊΠΎΠ»ΠΎ 18 Ρ‚ΠΈΠΏΠΎΠ² сообщСний с высоким ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ getmsg ΠΈ putmsg, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ опишСм Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅, Π½Π°ΠΌ интСрСсны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° сообщСний: M_DATA, M_PROTO ΠΈ M_PCPROTO (PC ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«priority controlΒ», Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅, ΠΈ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ сообщСния с высоким ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ). Π’ Ρ‚Π°Π±Π». 31.1 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ эти Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ° сообщСний Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ функциями write ΠΈ putmsg.