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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² QNX/Neutrino 2. Руководство ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² QNX Realtime PlatformΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 86

Автор Π ΠΎΠ± ΠšΡ‘Ρ€Ρ‚Π΅Π½

ΠŸΡ€ΠΈ диспСтчСризации FIFO (First In β€” First Out) ΠΏΠΎΡ‚ΠΎΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ процСссор Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΏΠΎΡ‚ΠΎΠΊ с Π±ΠΎΠ»Π΅Π΅ высоким ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅Ρ‚ Π² состояниС готовности, ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ° ΠΏΠΎΡ‚ΠΎΠΊ Π΄ΠΎΠ±Ρ€ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ Π½Π΅ освободит процСссор. Если Π½Π΅ сущСствуСт ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² с Π±ΠΎΠ»Π΅Π΅ высокими ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°ΠΌΠΈ, ΠΈ ΠΏΠΎΡ‚ΠΎΠΊ Π΄ΠΎΠ±Ρ€ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ Π½Π΅ освобоТдаСт процСссор, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π²Π΅Ρ‡Π½ΠΎ. Π‘ΠΎΠΏΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ с ΠΊΠ°Ρ€ΡƒΡΠ΅Π»ΡŒΠ½ΠΎΠΉ диспСтчСризациСй.

ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ отправитСля (receive ID)

Когда сСрвСр ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ сообщСниС ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сСрвСра MsgReceive() ΠΈΠ»ΠΈ MsgReceivev() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ отправитСля (часто сокращСнно Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Β«rcvidΒ»). Π­Ρ‚ΠΎΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ rcvid Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ ΠΊΠ°ΠΊ дСскриптор, позволяя сСрвСру ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ ΠΎΡ‚Π²Π΅Ρ‚ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Ρ‚Π°ΠΌ самым Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π² Π΅Π³ΠΎ. ПослС использования rcvid для ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ, ΠΎΠ½ пСрСстаСт ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для всСх Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ MsgDeliverEvent().

ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ соСдинСния (connection ID, сокр. CID)

ДСскриптор, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ConnectAttach() (Π½Π° клиСнтской сторонС) ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для всСх ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ соСдинСния Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ дСскриптору Ρ„Π°ΠΉΠ»Π° Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ языка Π‘ΠΈ β€” ΠΈΠ½Ρ‹ΠΌΠΈ словами, ΠΊΠΎΠ³Π΄Π° функция open() Π² QNX/Neutrino Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ дСскриптор Ρ„Π°ΠΉΠ»Π°, Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ возвращаСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ соСдинСния.

иСрархичСский ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΎΠ±ΠΌΠ΅Π½Π° (send hierarchy)

ΠŸΡ€ΠΈΠ½ΡΡ‚Π°Ρ Π² QNX/Neutrino концСпция, Π² силу ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ отправляСмыС сообщСния ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ, Π° ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° сообщСния β€” Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ. Основной Ρ†Π΅Π»ΡŒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ иСрархичСского ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° ΠΎΠ±ΠΌΠ΅Π½Π° являСтся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ состояния Π²Π·Π°ΠΈΠΌΠ½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ рСализуСтся Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ ΠΈ сСрвСрам Β«ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈΒ» ΠΈ обСспСчСния Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сообщСния ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π»ΠΈΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π±ΠΎΠ»Π΅Π΅ высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ. Π­Ρ‚ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ситуации Π²Π·Π°ΠΈΠΌΠ½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° Π΄Π²Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΏΠΎΡΡ‹Π»Π°ΡŽΡ‚ сообщСния Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ такая ситуация Π½Π°Ρ€ΡƒΡˆΠΈΠ»Π° Π±Ρ‹ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ β€” ΠΏΠΎΡ‚ΠΎΠΊ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ сообщСния Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ, Ссли Ρ‚ΠΎΡ‚ находится Π½Π° Π½ΠΈΠΆΠ½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ.

ΠΈΠΌΠΏΡƒΠ»ΡŒΡ (pulse)

ΠΠ΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ сообщСниС, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠΎΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌΡƒ ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΡŽ. Π­Ρ‚ΠΎ сообщСниС являСтся Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ для отправитСля; ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŒ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ стандартных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями (MsgReceive() ΠΈ MsgReceivev()) ΠΈΠ»ΠΈ ΠΆΠ΅, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΆΠ΄Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ°, Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ MsgReceivePulse(). Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ сообщСний ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎΡΡ‹Π»Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΊ сСрвСру, ΠΈΠΌΠΏΡƒΠ»ΡŒΡΡ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠ°Ρ‚ΡŒ иСрархичСский ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΎΠ±ΠΌΠ΅Π½Π° (это Π²Ρ‹Π·Π²Π°Π»ΠΎ Π±Ρ‹ Π²Π·Π°ΠΈΠΌΠ½ΡƒΡŽ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ). Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ с сигналом.

исходящий Π²Ρ‹Π·ΠΎΠ² ядра (kernel callout)

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма QNX/Neutrino ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ настроСна для функционирования Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… срСдствах Π±Π΅Π· нСобходимости Π² Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ Π½Π° исходный ΠΊΠΎΠ΄. Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ исходящих Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ядра. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ исходящих Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ядра позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² систСму свой ΠΊΠΎΠ΄, Β«Π·Π½Π°ΡŽΡ‰ΠΈΠΉΒ» ΠΎ спСцификС оборудования β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ прСрывания ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠ΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, ΠΈΠ»ΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Π½Π° Ρ€Π΅Π³ΡƒΠ»ΡΡ€Π½ΡƒΡŽ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ, ΠΈ Ρ‚.ΠΏ. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΎ Π² ΠΊΠ½ΠΈΠ³Π΅ Β«Building Embedded SystemsΒ» (Β«ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ встраиваСмых систСм»).

ΠΊΠ°Π½Π°Π» (channel)

Абстрактный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сСрвСр ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ сообщСния. Π­Ρ‚ΠΎ Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ сообщСниС сСрвСру. ΠŸΡ€ΠΈ создании ΠΊΠ°Π½Π°Π»Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ChannelCreate() возвращаСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠ°Π½Π°Π»Π° (Β«channel IDΒ», сокращСнно Β«chidΒ») β€” Ρ‚ΠΎΡ‚ самый ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠ°Π½Π°Π»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ назначаСтся администратором рСсурса ΠΊΠ°ΠΆΠ΄ΠΎΠΉ объявляСмой ΠΈΠΌ Ρ‚ΠΎΡ‡ΠΊΠ΅ монтирования.

ΠΊΠ°Ρ€ΡƒΡΠ΅Π»ΡŒΠ½Π°Ρ диспСтчСризация (round robin (RR) scheduling)

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

ΠΊΠ»ΠΈΠ΅Π½Ρ‚ (client)

АрхитСктура ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями Π² QNX/Neutrino ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚- ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΡƒΡŽ структуру. ΠšΠ»ΠΈΠ΅Π½Ρ‚ являСтся Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ услугу Ρƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ сСрвСра. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ услуги, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ со стандартными Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌΠΈ дСскрипторами (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, lseek()). Π­Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ синхронными Π² Ρ‚ΠΎΠΌ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ², сдСланный ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ, Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° запроса сСрвСром. Π›ΡŽΠ±ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ, ΠΈ сСрвСром.

мутСкс (mutex, ΠΎΡ‚ mutual exclusion β€” Β«Π²Π·Π°ΠΈΠΌΠ½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅Β»)

ΠžΠ±ΡŠΠ΅ΠΊΡ‚, примСняСмый для упорядочСния ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ доступа ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΊ рСсурсу β€” Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊ рСсурсу, опрСдСляСмому мутСксом, Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΠΌΠ΅Π» доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ. НапримСр, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ мутСкс всякий Ρ€Π°Π· ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π²Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊ Π½Π΅ΠΉ доступ, Ρ‚Π°ΠΌ самым прСдотвращая Π³ΠΎΠ½ΠΊΠΈ. Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅ «атомарная опСрация».

ΠΎΠ±ΠΌΠ΅Π½ сообщСниями (message-passing)

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма QNX/Neutrino ΠΈΠΌΠ΅Π΅Ρ‚ Π² своСй основС модСль ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ всС сСрвисы ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ синхронно, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ сообщСния ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΊ сСрвСру ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ. ΠšΠ»ΠΈΠ΅Π½Ρ‚ посылаСт сообщСниС сСрвСру ΠΈ блокируСтся. Π‘Π΅Ρ€Π²Π΅Ρ€ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ сообщСниС ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, выполняСт ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ запроса ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π½Π° сообщСниС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, разблокируя Π΅Π³ΠΎ.

ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ прСрывания (interrupt service routine)

ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ядро ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ (Π² ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅) Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ прСрывания. Π­Ρ‚Π° ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π°Π²Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ управлСния ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ скорСС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΅Π΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Π²Ρ‹ΡˆΠ΅, Ρ‡Π΅ΠΌ Ρƒ любого ΠΏΠΎΡ‚ΠΎΠΊΠ° Π² систСмС. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ Π² QNX/ Neutrino ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ структуру Ρ‚ΠΈΠΏΠ° struct sigevent, которая ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΎΠ΅ событиС, Ссли Π½ΡƒΠΆΠ½ΠΎ, слСдуСт ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° сообщСниС (reply to Π° message)

Π‘Π΅Ρ€Π²Π΅Ρ€ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π½Π° сообщСниС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΅Π³ΠΎ запроса.

ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ (relative timer)

Π’Π°ΠΉΠΌΠ΅Ρ€ с ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠΌ истСчСния, опрСдСляСмым ΠΊΠ°ΠΊ смСщСниС ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«Ρ‡Π΅Ρ€Π΅Π· 5 ΠΌΠΈΠ½ΡƒΡ‚Β». Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ с Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΌ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ΠΎΠΌ.

ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ сообщСниС (send a message)

ΠŸΠΎΡ‚ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ сообщСния Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΏΠΎΡ‚ΠΎΠΊΡƒ. Для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сообщСния примСняСтся сСмСйство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ MsgSend*(); ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‰ΠΈΠΉ сообщСниС ΠΏΠΎΡ‚ΠΎΠΊ блокируСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ Π½Π° это сообщСниС (см. Β«ΠΎΠ±ΠΌΠ΅Π½ сообщСниями»). ΠŸΠΎΡ‚ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ сообщСниС, считаСтся ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ.

пСриодичСский Ρ‚Π°ΠΉΠΌΠ΅Ρ€ (periodic timer, repetitive timer)

ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ ΠΈΠ»ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚Π°ΠΉΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ послС истСчСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ отсчСта автоматичСски пСрСзагруТаСтся, ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ Π΄ΠΎ явной ΠΎΡ‚ΠΌΠ΅Π½Ρ‹. ПолСзСн для ΠΏΡ€ΠΈΠ΅ΠΌΠ° рСгулярных ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ.

ΠΏΠΎΡ‚ΠΎΠΊ управлСния, Β«Π½ΠΈΡ‚ΡŒΒ» (thread)

ΠžΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΉ диспСтчСризуСмый ΠΏΠΎΡ‚ΠΎΠΊ управлСния. РСализация ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² обСспСчиваСтся нСпосрСдствСнно ядром Neutrino ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ POSIX pthread*(). ΠŸΠΎΡ‚ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ синхронизирован с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ (Ссли Ρ‚Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ) ΠΏΡƒΡ‚Π΅ΠΌ примСнСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² синхронизации, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ мутСксы, условныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, сСмафоры ΠΈ Ρ‚.Π΄. ΠŸΠΎΡ‚ΠΎΠΊΠΈ ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°ΡŽΡ‚ΡΡ диспСтчСризации ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ FIFO ΠΈΠ»ΠΈ RR (ΠΊΠ°Ρ€ΡƒΡΠ΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°).

ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ сообщСниС (receive a message)

ΠŸΠΎΡ‚ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ сообщСниС, Π²Ρ‹Π·Π²Π°Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ MsgReceive() ΠΈΠ»ΠΈ MsgReceivev(). Если сообщСний Π½Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΊ заблокируСтся Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ сообщСния (см. Β«ΠΎΠ±ΠΌΠ΅Π½ сообщСниями»). ΠŸΠΎΡ‚ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ сообщСниС, считаСтся сСрвСром.

процСсс (process)

НСдиспСтчСризируСмый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ Π²ΠΌΠ΅Ρ‰Π°ΡŽΡ‰ΠΈΠΉ Π² сСбя ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².

Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (unblock)

Π Π°Π½Π΅Π΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½, ΠΊΠΎΠ³Π΄Π° условиС, Π½Π° основС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ½ Π±Ρ‹Π» Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½, Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€Π΅Π½ΠΎ. НапримСр, ΠΏΠΎΡ‚ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ сообщСния. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅ΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ послано сообщСниС, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½.