ΠΠ»Ρ Π·Π°Ρ Π²Π°ΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ² ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ ΡΠ΅Π»ΡΠΉ ΡΡΠ΄ ΡΡΠ½ΠΊΡΠΈΠΉ: ExAcquireResour-ceSharedLite, ExAcquireResourceExclusiveLite, ExAcquireSharedStarveExclusive, ExAcquireWaitForExclusive ΠΈ ExTryToAcquireResourceExclusiveLite. ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Ρ Π² DDK.
ΠΠΠ‘ΠΠΠ ΠΠΠΠΠ’: ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π·Π°Ρ Π²Π°ΡΠ΅Π½Π½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ
ΠΠΎΠΌΠ°Π½Π΄Π° !locks ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ° ΡΠ΄ΡΠ° ΠΈΡΠ΅Ρ Π² ΠΏΡΠ»Π΅ ΠΏΠΎΠ΄ΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°Ρ Π²Π°ΡΠ΅Π½Π½ΡΠ΅ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ΅ΡΡΡΡΡ, Π½ΠΎ ΠΊΠ»ΡΡ β d ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΡΡ Π²ΡΠ΅ ΡΠ΅ΡΡΡΡΡ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠΎΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ ΡΡΠ΅ΡΡΠΈΠΊ ΠΊΠΎΠ½ΠΊΡΡΠΈΡΡΡΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² (contention count), ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌΡΠΉ ΠΈΠ· ΡΡΡΡΠΊΡΡΡΡ ΡΠ΅ΡΡΡΡΠ°, ΡΠΈΠΊΡΠΈΡΡΠ΅Ρ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· ΠΏΠΎΡΠΎΠΊΠΈ ΠΏΡΡΠ°Π»ΠΈΡΡ Π·Π°Ρ Π²Π°ΡΠΈΡΡ Π΄Π°Π½Π½ΡΠΉ ΡΠ΅ΡΡΡΡ ΠΈ Π±ΡΠ»ΠΈ Π²ΡΠ½ΡΠΆΠ΄Π΅Π½Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠ½ ΡΠΆΠ΅ Π·Π°Π½ΡΡ.
ΠΠ»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Π΄Π΅ΡΠ°Π»Π΅ΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠ΅ΡΡΡΡΠ° (Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΊΡΠΎ Π²Π»Π°Π΄Π΅Π΅Ρ ΡΠ΅ΡΡΡΡΠΎΠΌ ΠΈ ΠΊΡΠΎ ΠΆΠ΄Π΅Ρ Π΅Π³ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ) ΡΠΊΠ°ΠΆΠΈΡΠ΅ ΠΊΠ»ΡΡ β v ΠΈ Π°Π΄ΡΠ΅Ρ ΡΠ΅ΡΡΡΡΠ°:
lkdβΊ!locks β v 0x805439a0
ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Ρ Π·Π°ΡΠ°Π»ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ (push locks), Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΏΠΎΡΠ²ΠΈΠ²ΡΠΈΠ΅ΡΡ Π² Windows XP, ΡΠ²Π»ΡΡΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΈΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠΌ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ Β«ΡΠΎΠ±ΡΡΠΈΠ΅Β» (Π² Windows Server 2003 ΡΠ°ΠΊΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π±Π°Π·ΠΈΡΡΡΡΡΡ Π½Π° Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΡΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ KGATE) ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π±ΡΡΡΡΡΠΌ ΠΌΡΡΡΠ΅ΠΊΡΠ°ΠΌ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΆΠ΄Π°ΡΡ ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΈΠΈ. Π’Π°ΠΊΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Π½Π°Π΄ Π±ΡΡΡΡΡΠΌΠΈ ΠΌΡΡΡΠ΅ΠΊΡΠ°ΠΌΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π² ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΌ, ΡΠ°ΠΊ ΠΈ Π² ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. ΠΠ½ΠΈ Π½Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΈ Π½Π΅ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΡΡΡΡ ΡΠ΄ΡΠΎΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Ρ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΌΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π° ΡΠΈΠΏΠ° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ Ρ Π·Π°ΡΠ°Π»ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ: ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΈ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΠΊΡΡΠ° (cache aware). ΠΠ΅ΡΠ²ΡΠΉ ΡΠΈΠΏ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π² ΠΏΠ°ΠΌΡΡΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΌ, ΡΡΠΎ ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ (4 Π±Π°ΠΉΡΠ° Π² 32-ΡΠ°Π·ΡΡΠ΄Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΠΈ 8 Π±Π°ΠΉΡΠΎΠ² Π² 64-ΡΠ°Π·ΡΡΠ΄Π½ΡΡ ). ΠΠΎΠ³Π΄Π° ΠΏΠΎΡΠΎΠΊ Π·Π°Ρ Π²Π°ΡΡΠ²Π°Π΅Ρ ΠΎΠ±ΡΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Ρ Π·Π°ΡΠ°Π»ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΠΊΠΎΠ΄ ΡΡΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ Π΅Π΅ ΠΊΠ°ΠΊ Π·Π°Π½ΡΡΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½Π°. ΠΡΠ»ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π·Π°Ρ Π²Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠΎΠΊΡ Π½ΡΠΆΠ½ΠΎ Π·Π°Ρ Π²Π°ΡΠΈΡΡ Π΅Π΅ ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½ΠΎ, Π° ΠΎΠ½Π° ΡΠΆΠ΅ Π·Π°Ρ Π²Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ°, Π΅Π΅ ΠΊΠΎΠ΄ ΡΠΎΠ·Π΄Π°Π΅Ρ Π² ΡΡΠ΅ΠΊΠ΅ ΠΏΠΎΡΠΎΠΊΠ° Π±Π»ΠΎΠΊ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Β«ΡΠΎΠ±ΡΡΠΈΠ΅Β» Π² ΡΡΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π² ΡΠΏΠΈΡΠΎΠΊ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ, ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΎΠΉ. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΡΡΡ, Π΅Π΅ ΠΊΠΎΠ΄ ΠΏΡΠΎΠ±ΡΠΆΠ΄Π°Π΅Ρ ΠΆΠ΄ΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ (Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ²ΠΎΠΉ ΠΈΠΌΠ΅Π΅ΡΡΡ), ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Ρ ΡΠΎΠ±ΡΡΠΈΠ΅ Π² Π±Π»ΠΎΠΊΠ΅ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°.
ΠΡΠΎΡΠΎΠΉ ΡΠΈΠΏ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ±ΡΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Ρ Π·Π°ΡΠ°Π»ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΅Π΅ Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΎΠΉ Ρ Π·Π°ΡΠ°Π»ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅ΠΉ ΠΊΡΡ. ΠΠΎΠ³Π΄Π° ΠΏΠΎΡΠΎΠΊΡ Π½ΡΠΆΠ½ΠΎ Π·Π°Ρ Π²Π°ΡΠΈΡΡ ΡΠ°ΠΊΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ, ΠΎΠ½ ΠΏΡΠΎΡΡΠΎ Π·Π°Ρ Π²Π°ΡΡΠ²Π°Π΅Ρ ΠΎΠ±ΡΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Π΄ΠΎΡΡΡΠΏΠ°.
ΠΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅, Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π² Π·Π°ΡΠΈΡΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ² Π·Π°ΡΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΎΠΌ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ Π·Π°ΡΠΈΡΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ AWE.
ΠΠ·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° (deadlock) β ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠ°Ρ, ΠΊΠΎΠ³Π΄Π° Π΄Π²Π° ΠΏΠΎΡΠΎΠΊΠ° ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ΅ΡΡΡΡΡ, Π½ΡΠΆΠ½ΡΠ΅ Π΄ΡΡΠ³ΠΎΠΌΡ, ΠΈ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ Π½Π΅ ΠΎΡΠ΄Π°Π΅Ρ ΠΈΡ . Π’Π°ΠΊΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ Π·Π°Π²ΠΈΡΠ°Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°. Π£ΡΠΈΠ»ΠΈΡΠ° Driver Verifier, ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌΠ°Ρ Π² Π³Π»Π°Π²Π°Ρ 7 ΠΈ 9, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π½Π° ΡΠΏΠΈΠ½-Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°Ρ , Π±ΡΡΡΡΡΡ ΠΈ ΠΎΠ±ΡΡΠ½ΡΡ ΠΌΡΡΡΠ΅ΠΊΡΠ°Ρ . O ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Driver Verifier Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° Π·Π°Π²ΠΈΡΠ°Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ, ΡΠΌ. Π³Π»Π°Π²Ρ 14.
ΠΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Windows ΡΠΎΠ·Π΄Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ System, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌΠΈ ΡΠ°Π±ΠΎΡΠΈΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ (system worker threads). ΠΠ½ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ ΠΏΠΎΡΡΡΠ΅Π½ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ². Bo ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΏΠΎΡΠΎΠΊΠΈ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ Π½Π° ΡΡΠΎΠ²Π½Π΅ Β«DPC/dispatchΒ», Π½ΡΠΆΠ΄Π°ΡΡΡΡ Π² Π²ΡΠ·ΠΎΠ²Π΅ ΡΠ°ΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠΌ IRQL. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, DPC-ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΉ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° ΠΏΡΠΈ IRQL ΡΡΠΎΠ²Π½Ρ Β«DPC/dispatchΒ» (DPC ΠΌΠΎΠΆΠ΅Ρ ΡΠ·ΡΡΠΏΠΈΡΠΎΠ²Π°ΡΡ Π»ΡΠ±ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅), Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΠΏΡΠ»Ρ ΠΏΠΎΠ΄ΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΈΠ»ΠΈ ΠΆΠ΄Π°ΡΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ° Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Ρ ΠΏΠΎΡΠΎΠΊΠΎΠΌ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ DPC-ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ½ΠΈΠ·ΠΈΡΡ IRQL, ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠ²ΠΎΡ Π·Π°Π΄Π°ΡΡ ΠΏΠΎΡΠΎΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΅Π΅ ΠΏΡΠΈ IRQL Π½ΠΈΠΆΠ΅ ΡΡΠΎΠ²Π½Ρ Β«DPC/dispatchΒ».
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΡΠ°ΠΉΠ²Π΅ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ² ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ Β«passiveΒ», Π½ΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠ°ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈ ΡΡΠ΅Π·ΠΌΠ΅ΡΠ½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° ΠΏΠ°ΠΌΡΡΡ ΠΈΠ·-Π·Π° Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ². ΠΡΠ°ΠΉΠ²Π΅Ρ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΡΠ΅ΡΠ²ΠΈΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΠ°Π±ΠΎΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΠ΅ΡΠ΅Π· ΡΡΠ½ΠΊΡΠΈΡ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ExQueueWorkItem ΠΈΠ»ΠΈ IoQueueWorkItem. ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ (work item) Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌΠΈ ΡΠ°Π±ΠΎΡΠΈΠΌΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» Β«ΠΠΎΡΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°Β» Π³Π»Π°Π²Ρ 9).
Π Π°Π±ΠΎΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠΉ ΠΏΠΎΡΠΎΠΊΠΎΠΌ ΡΡΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°. ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ Π½Π° ΡΡΠΎΠ²Π½Π΅ Β«passiveΒ».
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, DPC-ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΆΠ΄Π°ΡΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ°, ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π² Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ΅, ΠΆΠ΄ΡΡΠ΅ΠΌ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ°, ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ. Ha ΠΊΠ°ΠΊΠΎΠΌ-ΡΠΎ ΡΡΠ°ΠΏΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΠΈΠ· ΡΠ²ΠΎΠ΅ΠΉ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΡΠ°Π±ΠΎΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°. ΠΠΎΡΠ»Π΅ Π΅Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, Π½Π΅Ρ Π»ΠΈ Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°ΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅. ΠΡΠ»ΠΈ Π½Π΅Ρ, ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΡΡΡ, ΠΏΠΎΠΊΠ° Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ Π½ΠΎΠ²ΡΠΉ ΡΠ°Π±ΠΎΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ. ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ DPC-ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈ Π½Π΅ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡΡΡ Π² Ρ ΠΎΠ΄Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΅Π΅ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ ΡΠ°Π±ΠΎΡΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ. (B ΠΎΠ΄Π½ΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π²ΡΠ΅Π³Π΄Π° Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ Π΄ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΅Π΅ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π° ΡΡΠΎΠ²Π½Π΅ IRQL Β«DPC/dispatchΒ» ΠΏΠΎΡΠΎΠΊΠΈ Π½Π΅ ΠΏΠ»Π°Π½ΠΈΡΡΡΡΡΡ.)
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΡΠΈ ΡΠΈΠΏΠ° ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΠ°Π±ΠΎΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²:
β’ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ (delayed worker threads) β Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ 12, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π½Π΅ΠΊΡΠΈΡΠΈΡΠ½ΡΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ°Π±ΠΎΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ Π²ΡΠ³ΡΡΠ·ΠΊΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΡΠ΅ΠΊΠ° Π² ΡΡΡΠ°Π½ΠΈΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» Π½Π° Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²;
β’ ΠΊΡΠΈΡΠΈΡΠ½ΡΠ΅ (critical worker threads) β Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ 13, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΊΡΠΈΡΠΈΡΠ½ΡΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ°Π±ΠΎΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ. B Windows Server ΠΈΡ ΡΡΠ΅ΠΊ Π²ΡΠ΅Π³Π΄Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ;
β’ Π³ΠΈΠΏΠ΅ΡΠΊΡΠΈΡΠΈΡΠ½ΡΠΉ (hypercritical worker thread) β Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ Ρ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ 15. ΠΠ³ΠΎ ΡΡΠ΅ΠΊ ΡΠΎΠΆΠ΅ Π²ΡΠ΅Π³Π΄Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΈΡΠΏΠ΅ΡΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π³ΠΈΠΏΠ΅ΡΠΊΡΠΈΡΠΈΡΠ½ΡΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ°Π±ΠΎΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡΠ΅ΠΉ Π·Π°Π²Π΅ΡΡΠ΅Π½Π½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ.
Π§ΠΈΡΠ»ΠΎ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΈ ΠΊΡΠΈΡΠΈΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΠ°Π±ΠΎΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ExpWorkerInitialization, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΡΠ°Π½Π½ΠΈΡ ΡΡΠ°Π΄ΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π·Π°Π³ΡΡΠ·ΠΊΠΈ, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΎΠ±ΡΠ΅ΠΌΠ° ΠΏΠ°ΠΌΡΡΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ. B ΡΠ°Π±Π»ΠΈΡΠ΅ 3-11 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ ExpInitializeWorker ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎ 16 ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΈ 16 ΠΊΡΠΈΡΠΈΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΠ°Π±ΠΎΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ². ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ AdditionalDelayedWorkerThreads ΠΈ AdditionalCri-ticalWorkerThreads Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΡΠ΅Π΅ΡΡΡΠ° HKLM\SYSTEM\CurrentControlSet\Cont-rol\ Session Manager\Executive.
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΡΠ°ΡΠ°Π΅ΡΡΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΡΠ»ΠΎ ΠΊΡΠΈΡΠΈΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΠ°Π±ΠΎΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΎΠΉ. ΠΠ°ΠΆΠ΄ΡΡ ΡΠ΅ΠΊΡΠ½Π΄Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ExpWorkerThreadBalanceManager ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, Π½Π°Π΄ΠΎ Π»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΡΠΈΡΠΈΡΠ½ΡΠΉ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ. ΠΡΡΠ°ΡΠΈ, ΠΊΡΠΈΡΠΈΡΠ½ΡΠΉ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ExpWorkerTbread-BalanceManager, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ (dynamic worker thread). ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ.
β’ ΠΡΠ΅ΡΠ΅Π΄Ρ ΠΊΡΠΈΡΠΈΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΏΡΡΡΠΎΠΉ.
β’ Π§ΠΈΡΠ»ΠΎ Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΡΡ ΠΊΡΠΈΡΠΈΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² (Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ ΡΠ°Π±ΠΎΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ»ΠΈ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ° ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ) Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² Π² ΡΠΈΡΡΠ΅ΠΌΠ΅.
β’ B ΡΠΈΡΡΠ΅ΠΌΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΌΠ΅Π½Π΅Π΅ 16 Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ°Π±ΠΎΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ².
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ Π·Π°Π²Π΅ΡΡΠ°ΡΡΡΡ ΡΠ΅ΡΠ΅Π· 10 ΠΌΠΈΠ½ΡΡ ΠΏΡΠ΅Π±ΡΠ²Π°Π½ΠΈΡ Π² Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ. B Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ°Π±ΠΎΡΠ΅ΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄ΠΎ 16 ΡΠ°ΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ².