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

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

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

ΠŸΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ² синхронизации ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ассоциируСтся счСтчик. ΠŸΠΎΡ‚ΠΎΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ sem_wait(), ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈ этом Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Ссли Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ запроса счСтчик ΠΈΠΌΠ΅Π» Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Вызывая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ sem_wait(), ΠΏΠΎΡ‚ΠΎΠΊ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика. Если ΠΏΠΎΡ‚ΠΎΠΊ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ sem_wait() Π² Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° счСтчик Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ, ΠΏΠΎΡ‚ΠΎΠΊ блокируСтся, ΠΏΠΎΠΊΠ° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ sem_post(), увСличивая Ρ‚Π΅ΠΌ самым Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика. Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ с Π±Π°Ρ€ΡŒΠ΅Ρ€ΠΎΠΌ.

сСрвСр, сСрвСрный процСсс (server)

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

сигнал (signal)

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, относящийся ΠΊ Ρ€Π°Π½Π½ΠΈΠΌ UNIX-систСмам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ примСнялся для посылки асинхронного увСдомлСния ΠΎ событиях ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. Π‘ΠΈΠ³Π½Π°Π»Ρ‹ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ отправитСля. ΠŸΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŒ сигнала ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ сам, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π»ΠΈ сигнал синхронным способом, ΠΏΡƒΡ‚Π΅ΠΌ Π΅Π³ΠΎ явного оТидания. Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ с ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠΌ.

синхронный (synchronous)

Π­Ρ‚ΠΎ понятиС примСняСтся для указания Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ данная опСрация синхронизирована ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. НапримСр, Π² процСссС ΠΎΠ±ΠΌΠ΅Π½Π° сообщСниями, ΠΊΠΎΠ³Π΄Π° сСрвСр выполняСт MsgReply() для ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ, говорят, Ρ‡Ρ‚ΠΎ Π΄Π΅Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° синхронно ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π°. Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ «асинхронный».

соСдинСниС (connection)

ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅, говорящСС ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΊ ΠΊΠ°Π½Π°Π»Ρƒ. Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ устанавливаСтся Π»ΠΈΠ±ΠΎ нСпосрСдствСнно ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ (Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ConnectAttach()), Π»ΠΈΠ±ΠΎ Β«Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉΒ» стороной ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° (Π² случаС Π²Ρ‹Π·ΠΎΠ²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ open()). Π’ любом случаС, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ соСдинСния ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π΅Π½ для использования Π² качСствС дСскриптора для всСх ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром.

условная пСрСмСнная (condition variable)

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ синхронизации, примСняСмый для мноТСства ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠ°ΠΊ Β«Ρ‚ΠΎΡ‡ΠΊΠ° встрСчи», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ нСсколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ сигнала (Π½Π΅ ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с понятиСм сигнала Π² UNIX!). ΠŸΡ€ΠΈ поступлСнии сигнала ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

физичСский адрСс (physical address)

АдрСс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выставляСтся ЦП Π½Π° ΡˆΠΈΠ½Ρƒ, ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с подсистСмой памяти. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ QNX/Neutrino Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ адрСсации, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ диспСтчСр памяти Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ адрСса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ, Π² физичСскиС адрСса, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹Π΅ для использования подсистСмой памяти. Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ адрСсациСй ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ.

фрагмСнтация/дСфрагмСнтация сообщСний (scatter/gather)

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