ΠΡΠ±ΠΈΡΠ°Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ Π² ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². B ΡΠ°Π±Π»ΠΈΡΠ΅ 3-10 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΡΡ Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΡΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ².
ΠΠΎΠ³Π΄Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΠ΅ Π΅Π³ΠΎ ΠΏΠΎΡΠΎΠΊΠΈ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²ΡΡ ΠΎΠ΄ΡΡ ΠΈΠ· ΠΆΠ΄ΡΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠΈΡ. 3-26, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ° ΡΠ΄ΡΠ° ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ ΠΈΠ½Π°ΡΠ΅.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΡΠ΅ΠΊΡ Β«ΡΠΎΠ±ΡΡΠΈΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡΒ» β Π² Windows API ΠΎΠ½ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅ΠΌ ΡΠΎ ΡΠ±ΡΠΎΡΠΎΠΌ Π²ΡΡΡΠ½ΡΡ (manual reset event) β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΎ ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ ΡΠΎΠ±ΡΡΠΈΠΈ. ΠΠΎΠ³Π΄Π° ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, Π²ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ, ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΠ΅ Π΅Π³ΠΎ, ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡΡΡ. ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡ ΠΏΠΎΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΆΠ΄Π΅Ρ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²: ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΡΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
B ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠΎΠ±ΡΡΠΈΡ ΠΌΡΡΡΠ΅ΠΊΡ ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²Π»Π°Π΄Π΅Π½ΠΈΡ. ΠΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ΅ΡΡΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π΅Π΄ΠΈΠ½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ Π²Π»Π°Π΄Π΅ΡΡ ΠΌΡΡΡΠ΅ΠΊΡΠΎΠΌ. ΠΡΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΌΡΡΡΠ΅ΠΊΡΠ° ΡΠ΄ΡΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ Π΅Π³ΠΎ Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ². ΠΡΠ±ΡΠ°Π½Π½ΡΠΉ ΡΠ΄ΡΠΎΠΌ ΠΏΠΎΡΠΎΠΊ Π·Π°Ρ Π²Π°ΡΡΠ²Π°Π΅Ρ ΠΌΡΡΡΠ΅ΠΊΡ, Π° ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΠΎΡΡΠ°ΡΡΡΡ Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ.
Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΏΠΎΡΠ²ΠΈΠ²ΡΠΈΠΉΡΡ Π² Windows XP ΠΈ Π½Π°Π·Π²Π°Π½Π½ΡΠΉ ΡΠΎΠ±ΡΡΠΈΠ΅ΠΌ Ρ ΠΊΠ»ΡΡΠΎΠΌ (keyed event), Π·Π°ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΡΠΎΠ±ΠΎΠ³ΠΎ ΡΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΡ. ΠΠ½ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Ρ Π½Π΅Ρ Π²Π°ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅ΠΊΡΠΈΠΉ. ΠΡΠΎ Π½Π΅Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊΡ ΡΠΊΠ°Π·Π°ΡΡ Β«ΠΊΠ»ΡΡΒ» Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ-, Π΄Π°Π½Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΎΠ±ΡΠΆΠ΄Π°ΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ ΡΠΎΠ±ΡΡΠΈΠ΅ Ρ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΊΠ»ΡΡΠΎΠΌ.
Windows-ΠΏΡΠΎΡΠ΅ΡΡΡ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅ΠΊΡΠΈΠΉ β EnterCriticalSection ΠΈ LeaveCriticalSection β Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΊ Π»ΠΈΡΠ½ΡΠΌ ΡΠ΅ΡΡΡΡΠ°ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΡΠ·ΠΎΠ²Ρ ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅ ΠΏΡΡΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ Β«ΠΌΡΡΡΠ΅ΠΊΡΒ», ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π² ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΈΠΈ ΠΎΠ½ΠΈ Π½Π΅ Π·Π°ΡΡΠ°Π²Π»ΡΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΡ Π² ΡΠ΅ΠΆΠΈΠΌ ΡΠ΄ΡΠ°. ΠΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΈΠΈ EnterCriticalSection Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Β«ΡΠΎΠ±ΡΡΠΈΠ΅Β», ΠΈ ΠΏΠΎΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π½ΡΠΆΠ½ΠΎ Π·Π°Ρ Π²Π°ΡΠΈΡΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠ΅ΠΊΡΠΈΡ, ΠΆΠ΄Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΠΎΠΊ, Π²Π»Π°Π΄Π΅ΡΡΠΈΠΉ ΡΡΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠ΅ΠΉ, ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ Π΅Π΅ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ LeaveCriticalSection.
ΠΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Β«ΡΠΎΠ±ΡΡΠΈΠ΅Β» Π΄Π»Ρ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ ΠΈΠ·-Π·Π° Π½Π΅Ρ Π²Π°ΡΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, EnterCriticalSection ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅ Ρ ΠΊΠ»ΡΡΠΎΠΌ β CritSecOutOjMemoryEvent (Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ \Ker-nel ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²). ΠΡΠ»ΠΈ EnterCritica amp;ection Π²ΡΠ½ΡΠΆΠ΄Π΅Π½Π° Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ CritSecOutOjMemoryEvent Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ, ΠΏΠΎΡΠΎΠΊ, ΠΆΠ΄ΡΡΠΈΠΉ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠ΅ΠΊΡΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π°Π΄ΡΠ΅Ρ ΡΡΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ ΠΊΠ°ΠΊ ΠΊΠ»ΡΡ. ΠΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅ΠΊΡΠΈΠΉ Π΄Π°ΠΆΠ΅ Π² ΡΡΠ»ΠΎΠ²ΠΈΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅Ρ Π²Π°ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΡ Π½Π΅ ΡΡΠ°Π²ΠΈΠ»ΠΈ ΡΠ΅Π±Π΅ Π·Π°Π΄Π°ΡΡ ΠΈΡΡΠ΅ΡΠΏΡΠ²Π°ΡΡΠ΅ ΠΎΠΏΠΈΡΠ°ΡΡ Π²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π° Π»ΠΈΡΡ Ρ ΠΎΡΠ΅Π»ΠΈ Π΄Π°ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ± ΠΈΡ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² Windows-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ ΡΠΌ. ΡΠΏΡΠ°Π²ΠΎΡΠ½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Windows ΠΈΠ»ΠΈ ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΠΆΠ΅ΡΡΡΠΈ Π ΠΈΡ ΡΠ΅ΡΠ° Β«Windows Π΄Π»Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΠΎΠ²Β».
Π£ΡΠ΅Ρ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈ ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π±Π°Π·ΠΈΡΡΠ΅ΡΡΡ Π½Π° Π΄Π²ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΡΡΡΠΊΡΡΡΠ°Ρ Π΄Π°Π½Π½ΡΡ : Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°Ρ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ° (dispatcher headers) ΠΈ Π±Π»ΠΎΠΊΠ°Ρ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ (wait blocks). ΠΠ±Π΅ ΡΡΠΈ ΡΡΡΡΠΊΡΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² Ntddk.h, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ DDK. ΠΠ»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΌΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ Π·Π΄Π΅ΡΡ ΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ.
ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΏ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ (Π·Π°Π½ΡΡ/ΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½) ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΆΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° Π΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ Π±Π»ΠΎΠΊΠΎΠ² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ, Π³Π΄Π΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π° Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ° ΡΠ΄ΡΠ° β ΡΠΏΠΈΡΠΎΠΊ Π±Π»ΠΎΠΊΠΎΠ² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ, Π³Π΄Π΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΠ΅ Π΅Π³ΠΎ ΠΏΠΎΡΠΎΠΊΠΈ. ΠΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ Π²Π΅Π΄Π΅ΡΡΡ ΡΠ°ΠΊ, ΡΡΠΎ ΠΏΡΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ° ΡΠ΄ΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΡΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. B Π±Π»ΠΎΠΊΠ΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΈΠΌΠ΅ΡΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ, ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ ΠΈ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π±Π»ΠΎΠΊ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ (Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠΎΠΊ ΠΆΠ΄Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°). ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅Ρ ΡΠΈΠΏ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ (Β«Π»ΡΠ±ΠΎΠΉΒ» ΠΈΠ»ΠΈ Β«Π²ΡΠ΅Β») ΠΈ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠΌ Π² ΡΡΠ½ΠΊΡΠΈΡ WaitForMultipleObjects (ΠΏΠΎΠ·ΠΈΡΠΈΡ 0 β Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠΎΠΊ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ Π»ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ΅ΠΊΡ).
Ha ΡΠΈΡ. 3-27 ΠΏΠΎΠΊΠ°Π·Π°Π½Π° ΡΠ²ΡΠ·Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ° ΡΠ΄ΡΠ° Ρ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ². B Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΡΠΎΠΊ 1 ΠΆΠ΄Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Π, Π° ΠΏΠΎΡΠΎΠΊ 2 β ΠΎΠ±ΡΠ΅ΠΊΡΡ A ΠΈ Π. ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ A ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡΡ, ΠΏΠΎΡΠΎΠΊ 2 Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΡΠ²ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ΄ΡΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡ, ΡΡΠΎ ΠΎΠ½ ΠΆΠ΄Π΅Ρ ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. C Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΏΡΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° B ΡΠ΄ΡΠΎ ΡΡΠ°Π·Ρ ΠΆΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡ ΠΏΠΎΡΠΎΠΊ 1 ΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π½Π΅ ΠΆΠ΄Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
ΠΠΠ‘ΠΠΠ ΠΠΠΠΠ’: ΠΏΡΠΎΡΠΌΠΎΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Π΅ΠΉ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ
Π₯ΠΎΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΠΈΠ»ΠΈΡΡ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΡΠΌΠ΅ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ, Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π»ΠΈ ΠΏΠΎΡΠΎΠΊ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ (ΠΎΡΠΌΠ΅ΡΠ°Ρ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈ ΡΠΈΠΏ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ), ΡΠΏΠΈΡΠΎΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ !process ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ° ΡΠ΄ΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ !process ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΏΠΎΡΠΎΠΊ ΠΆΠ΄Π΅Ρ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ΅-ΡΠΎΠ±ΡΡΠΈΠΈ.
ΠΡΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π½Π°ΠΌ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π°ΡΠ°Π»Π° ΠΈ ΠΊΠΎΠ½ΡΠ° ΡΠΏΠΈΡΠΊΠ° ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ ΠΌΠ΅ΡΡΠΎ (Π½Π° ΠΎΠ΄ΠΈΠ½ Π±Π»ΠΎΠΊ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ). ΠΠΎΠΏΠΈΡ Π±Π»ΠΎΠΊΠ° ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ (ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ 0x8a12a398) Π΄Π°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΡΠ»ΠΈ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡ ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠΎ Π²ΡΠΎΡΡΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ Π² ΠΏΠΎΠ»Π΅ WaitListEntry ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ (ΠΊΠΎΠΌΠ°Π½Π΄Ρ !thread ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΏΠΎΡΠΎΠΊΠ° Π² Π±Π»ΠΎΠΊΠ΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ) Π΄Π»Ρ ΠΏΡΠΎΡ ΠΎΠ΄Π° ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ ΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΆΠ΄ΡΡΠΈΡ Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ.
ΠΡΡΡΡΡΠ΅ ΠΌΡΡΡΠ΅ΠΊΡΡ (fast mutexes), ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΊΠ°ΠΊ ΠΌΡΡΡΠ΅ΠΊΡΡ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΡ Β«ΠΌΡΡΡΠ΅ΠΊΡΒ». ΠΠΎΡΠ΅ΠΌΡ? ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π±ΡΡΡΡΡΠ΅ ΠΌΡΡΡΠ΅ΠΊΡΡ, Ρ ΠΎΡΡ ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½Ρ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ ΡΠΎΠ±ΡΡΠΈΠΉ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ°, Π² ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΈΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΡΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Β«ΡΠΎΠ±ΡΡΠΈΠ΅Β» (ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΏΠΈΠ½-Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΠΎΡΠ½ΠΎΠ²Π°Π½ ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ). ΠΡΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΡΠΊΠΎ ΠΏΡΠΎΡΠ²Π»ΡΡΡΡΡ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Π΅. ΠΡΡΡΡΡΠ΅ ΠΌΡΡΡΠ΅ΠΊΡΡ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΡΠ΄ΡΠ΅ ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°Ρ ΡΡΡΡΠΎΠΉΡΡΠ².
ΠΠ΄Π½Π°ΠΊΠΎ Π±ΡΡΡΡΡΠ΅ ΠΌΡΡΡΠ΅ΠΊΡΡ Π³ΠΎΠ΄ΡΡΡΡ, ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΠ°Π²ΠΊΡ ΠΎΠ±ΡΡΠ½ΡΡ APC ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ΄ΡΠ°. B ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Π·Π°Ρ Π²Π°ΡΠ° Π±ΡΡΡΡΡΡ ΠΌΡΡΡΠ΅ΠΊΡΠΎΠ²: ExAcquireFastMutex ΠΈ ExAcquire-FastMutexUnsafe. ΠΠ΅ΡΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΡ Π²ΡΠ΅Ρ APC, ΠΏΠΎΠ²ΡΡΠ°Ρ IRQL ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π΄ΠΎ ΡΡΠΎΠ²Π½Ρ APC_LEVEL, Π° Π²ΡΠΎΡΠ°Ρ β ΠΎΠΆΠΈΠ΄Π°Π΅Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΏΡΠΈ ΡΠΆΠ΅ ΠΎΡΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ Π΄ΠΎΡΡΠ°Π²ΠΊΠ΅ ΠΎΠ±ΡΡΠ½ΡΡ APC ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ΄ΡΠ° (ΡΠ°ΠΊΠΎΠ΅ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ΠΌ IRQL Π΄ΠΎ ΡΡΠΎΠ²Π½Ρ Β«APCΒ» ΠΈΠ»ΠΈ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ KeEnterCriticalRegiori). ΠΡΡΠ³ΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π±ΡΡΡΡΡΡ ΠΌΡΡΡΠ΅ΠΊΡΠΎΠ² Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΡ Π½Π΅Π»ΡΠ·Ρ Π·Π°Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ Β«ΠΌΡΡΡΠ΅ΠΊΡΒ».
ΠΠ°ΡΠΈΡΠ΅Π½Π½ΡΠ΅ ΠΌΡΡΡΠ΅ΠΊΡΡ (guarded mutexes) β Π½ΠΎΠ²ΡΠ΅ΡΡΠ²ΠΎ Windows Server 2003; ΠΎΠ½ΠΈ ΠΏΠΎΡΡΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Ρ Π±ΡΡΡΡΡΠΌ ΠΌΡΡΡΠ΅ΠΊΡΠ°ΠΌ (Ρ ΠΎΡΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, KGATE). ΠΠ°Ρ Π²Π°ΡΠΈΡΡ Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΠ΅ ΠΌΡΡΡΠ΅ΠΊΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ KeAcquireGuardedMutex, ΠΎΡΠΊΠ»ΡΡΠ°ΡΡΠ΅ΠΉ Π΄ΠΎΡΡΠ°Π²ΠΊΡ Π²ΡΠ΅Ρ APC ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ΄ΡΠ° ΡΠ΅ΡΠ΅Π· KeEnterGuardedRegion, Π° Π½Π΅ KeEnterCritical-Region, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΡΠ½ΡΠ΅ APC ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ΄ΡΠ°. ΠΠ°ΡΠΈΡΠ΅Π½Π½ΡΠ΅ ΠΌΡΡΡΠ΅ΠΊΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Ρ Π²Π½Π΅ ΡΠ΄ΡΠ° ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΎΠΌ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ Π·Π°ΡΠΈΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π²ΡΠΎΠ΄Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΡΠ°Π½ΠΈΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ² ΡΠ°Π·Π΄Π΅Π»ΠΎΠ² ΠΎΠ±ΡΠ΅ΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΏΡΠ»Π° ΠΏΠΎΠ΄ΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ. (ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΡΠΌ. Π³Π»Π°Π²Ρ 7.)
Π Π΅ΡΡΡΡΡ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ (executive resources) β ΡΡΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΠΉ (ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΡΠΉ) ΠΈ ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΈ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ Ρ Π±ΡΡΡΡΡΠΌΠΈ ΠΌΡΡΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΎΠ±ΡΡΠ½ΡΡ APC ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ΄ΡΠ°. ΠΠ½ΠΈ ΠΎΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΈΠΈ. Π Π΅ΡΡΡΡΡ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΡΠΎΠΊΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°Ρ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠΎΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π°Ρ Π²Π°ΡΠΈΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΡΠ΅ΡΡΡΡ Π΄Π»Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ°, ΠΆΠ΄ΡΡ Π½Π° ΡΠ΅ΠΌΠ°ΡΠΎΡΠ΅, ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΌ Ρ ΡΡΠΈΠΌ ΡΠ΅ΡΡΡΡΠΎΠΌ, Π° ΠΏΠΎΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π·Π°Ρ Π²Π°ΡΠΈΡΡ ΡΠ΅ΡΡΡΡ Π΄Π»Ρ ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ°, β Π½Π° ΡΠΎΠ±ΡΡΠΈΠΈ. Π‘Π΅ΠΌΠ°ΡΠΎΡ Ρ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΌ ΡΡΠ΅ΡΡΠΈΠΊΠΎΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ±ΡΠ΄ΠΈΡΡ Π²ΡΠ΅ ΠΆΠ΄ΡΡΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΈΠΌ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅ΡΡΡΡΡ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΡ ΡΠ΅ΠΌΠ°ΡΠΎΡ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅Ρ Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ (ΡΠ΅ΡΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ ΠΏΠΎΡΠΎΠΊΠΎΠΌ, Π·Π°Ρ Π²Π°ΡΠΈΠ²ΡΠΈΠΌ Π΅Π³ΠΎ Π² ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½ΠΎΠ΅ Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅). ΠΠΎΠ³Π΄Π° ΠΏΠΎΡΠΎΠΊΡ Π½ΡΠΆΠ΅Π½ ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ Π·Π°Π½ΡΡΠΎΠΌΡ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ΅ΡΡΡΡΡ, ΠΎΠ½ ΠΆΠ΄Π΅Ρ Π½Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΡΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ Β«ΡΠΎΠ±ΡΡΠΈΠ΅Β», ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΡΠΎΠ±ΡΡΠΈΡ ΠΏΡΠΎΠ±ΡΠΆΠ΄Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ².