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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«2.Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ устройство Windows (Π³Π». 5-7)Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 35

Автор ΠœΠ°Ρ€ΠΊ Руссинович

2. ΠŸΠΎΠΊΠ° происходит ΡƒΡ‚Π΅Ρ‡ΠΊΠ° памяти Π² ΠΏΡƒΠ»Π΅, сначала ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ диспСтчСр Π·Π°Π΄Π°Ρ‡ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Performance (БыстродСйствиС). Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ растСт ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Paged Pool (ВыгруТаСмая ΠΏΠ°ΠΌΡΡ‚ΡŒ). To ΠΆΠ΅ самоС ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² ΠΎΠΊΠ½Π΅ System Information ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Process Explorer. (Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Show ΠΈ System Information.)

3. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΊΡƒ ΠΏΡƒΠ»Π°, Π³Π΄Π΅ происходит ΡƒΡ‚Π΅Ρ‡ΠΊΠ°, запуститС Poolmon ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ b, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ числу Π±Π°ΠΉΡ‚ΠΎΠ². Π”Π²Π°ΠΆΠ΄Ρ‹ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ p для отобраТСния Π² Poolmon Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡƒΠ»Π° ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ памяти. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡƒΠ» с ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ Β«LeakΒ» поднимаСтся Π²Π²Π΅Ρ€Ρ… ΠΏΠΎ списку. (Poolmon выдСляСт строки, Π³Π΄Π΅ происходят измСнСния.)

4. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ Stop Leaking, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΈΡΡ‚ΠΎΡ‰ΠΈΡ‚ΡŒ ΠΏΡƒΠ» ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ памяти Π² своСй систСмС.

5. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΈΠ΅ΠΌΡ‹, описанныС Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅, запуститС Strings (Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ с wwwsysinternals.com) для поиска Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°, содСрТащих ΠΌΠ΅Ρ‚ΠΊΡƒ ΠΏΡƒΠ»Π° Β«LeakΒ»:


Strings \windows\system32\drivers\*.sys | findstr Leak


Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π° Ρ„Π°ΠΉΠ» Myfault.sys.


АссоциативныС списки

Windows ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ быстрого выдСлСния памяти β€” ассоциативныС списки (look-aside lists). Π“Π»Π°Π²Π½ΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡƒΠ»ΠΎΠΌ ΠΈ ассоциативным списком Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ· ΠΏΡƒΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈ памяти Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Π° ΠΈΠ· ассоциативного списка β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ фиксированныС. Π₯отя ΠΏΡƒΠ»Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ, ассоциативныС списки Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ быстрСС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ спин-Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΈ Π½Π΅ Π·Π°ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ систСму ΠΏΠΎΠ΄Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ свободной памяти, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠ³ Π±Ρ‹ ΡƒΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒΡΡ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ выдСляСмый Π±Π»ΠΎΠΊ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ExInitializeNPagedLookasideList ΠΈ ExInitializePagedLookasideList (Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² DDK) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ систСмы ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌ устройств ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ассоциативныС списки, Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΡ€Π°Ρ‚Π½Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… структур Π΄Π°Π½Π½Ρ‹Ρ…. Для ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ·Π΄Π΅Ρ€ΠΆΠ΅ΠΊ, связанных с синхронизациСй Π² многопроцСссорных систСмах, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ систСмы, Π² Ρ‚ΠΎΠΌ числС диспСтчСр Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°, диспСтчСр кэша ΠΈ диспСтчСр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ процСссора ассоциативныС списки, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… выдСляСтся ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Π°ΠΌΠ° ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ систСма создаСт для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ процСссора ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Π΅ ассоциативныС списки ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΈ Π½Π΅ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ памяти с Π³Ρ€Π°Π½ΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒΡŽ выдСлСния Π² 256 Π±Π°ΠΉΡ‚ΠΎΠ² ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅.

Если ассоциативный список пуст (ΠΊΠ°ΠΊ это Π±Ρ‹Π²Π°Π΅Ρ‚ сразу послС Π΅Π³ΠΎ создания), систСма Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈΠ· ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡƒΠ»Π°. Ho Ссли Π² спискС ΡƒΠΆΠ΅ присутствуСт освобоТдСнная структура, Ρ‚ΠΎ занимаСмая Сю ΠΏΠ°ΠΌΡΡ‚ΡŒ выдСляСтся ΠΎΡ‡Π΅Π½ΡŒ быстро. (Бписок разрастаСтся ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Π² Π½Π΅Π³ΠΎ структур.) ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ выдСлСния памяти ΠΈΠ· ΠΏΡƒΠ»Π° автоматичСски Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ число освобоТдСнных Π±ΡƒΡ„Π΅Ρ€ΠΎΠ², хранящихся Π² ассоциативном спискС, Π² зависимости ΠΎΡ‚ частоты выдСлСния памяти ΠΈΠ· этого списка Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ систСмы. Π§Π΅ΠΌ Ρ‡Π°Ρ‰Π΅ ΠΎΠ½ΠΈ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈΠ· списка, Ρ‚Π΅ΠΌ большС Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² Π² спискС. Π Π°Π·ΠΌΠ΅Ρ€ ассоциативных списков автоматичСски ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ, Ссли ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ выдСляСтся. (Π­Ρ‚Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° выполняСтся Ρ€Π°Π· Π² сСкунду, ΠΊΠΎΠ³Π΄Π° систСмный ΠΏΠΎΡ‚ΠΎΠΊ диспСтчСра настройки баланса пробуТдаСтся ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ KiAdjustLookasideDepth.)


Π­ΠšΠ‘ΠŸΠ•Π Π˜ΠœΠ•ΠΠ’: просмотр систСмных ассоциативных списков

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ассоциативных списков Π² систСмС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ !lookaside ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° ядра. Π’ΠΎΡ‚ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π²ΠΎΠ΄Π° этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.


Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° Driver Verifier

Driver Verifier прСдставляСт собой ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для поиска ΠΈ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных ошибок Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°Ρ… устройств ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΌ систСмном ΠΊΠΎΠ΄Π΅ Ρ€Π΅ΠΆΠΈΠΌΠ° ядра. Microsoft провСряСт с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Driver Verifier свои Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ ΠΈ всС Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ производитСлями оборудования для тСстирования Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² список Hardware Compatibility List (HCL). Π’Π°ΠΊΠΎΠ΅ тСстированиС Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π² список HCL, с Windows ΠΈ отсутствиС Π² Π½ΠΈΡ… распространСнных ошибок. (БущСствуСт ΠΈ парная ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° Application Verifier, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ качСство ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ°. Однако Π² этой ΠΊΠ½ΠΈΠ³Π΅ ΠΎΠ½Π° Π½Π΅ рассматриваСтся.)

Driver Verifier поддСрТиваСтся нСсколькими систСмными ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ β€” диспСтчСром памяти, диспСтчСром Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ HAL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ для Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ². B этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΏΠΎΡΡΠ½ΡΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² Π½Π° отсутствиС ошибок, связанных с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ (см. Ρ‚Π°ΠΊΠΆΠ΅ Π³Π»Π°Π²Ρƒ 9).


Настройка ΠΈ инициализация Driver Verifier

Для настройки Driver Verifier ΠΈ просмотра статистики запуститС Driver Verifier Manager (ДиспСтчСр ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ²), Ρ„Π°ΠΉΠ» \Windows\System32\Verifier.exe. ПослС запуска появится ΠΎΠΊΠ½ΠΎ с нСсколькими Π²ΠΊΠ»Π°Π΄ΠΊΠ°ΠΌΠΈ. ВСрсия ΠΎΠΊΠ½Π° для Windows 2000 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π½Π° рис. 7–7. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ устройств Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΈ Π·Π°Π΄Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Settings (ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹).

B Windows XP ΠΈ Windows Server 2003 этой ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ΄Π°Π»ΠΈ интСрфСйс Π² стилС мастСра, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 7–8.

Рис. 7–8. Driver Verifier Manager Π² Windows XP ΠΈ Windows Server 2003


Π’ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Driver Verifier, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки этой ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹. Для Π²Ρ‹Π²ΠΎΠ΄Π° списка ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ verifier /?.

Настройки Driver Verifier Manager хранятся Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ рССстра HKLM\SYS-TEM\CurrentControlSet\Control\Session Manager\Memory Management. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ VerifyDriverLevel содСрТит Π±ΠΈΡ‚ΠΎΠ²ΡƒΡŽ маску, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ. ИмСна провСряСмых Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² содСрТатся Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ VerifyDrivers. (Π­Ρ‚ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π² рССстрС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Π²Ρ‹Π±ΠΎΡ€Π° провСряСмых Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² Π² ΠΎΠΊΠ½Π΅ Driver Verifier Manager.) Если Π²Ρ‹ Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚Π΅ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ всСх Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ², VerifyDrivers Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ символ Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΈ. B зависимости ΠΎΡ‚ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° систСмы.

Ha Ρ€Π°Π½Π½ΠΈΡ… этапах Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ диспСтчСр памяти считываСт ΠΈΠ· рССстра значСния этих ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², опрСдСляя, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ слСдуСт Π²Π΅Ρ€ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Driver Verifier Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹. (Если Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° происходит Π² бСзопасном Ρ€Π΅ΠΆΠΈΠΌΠ΅, всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Driver Verifier ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ.) Π”Π°Π»Π΅Π΅, Ссли для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²Ρ‹Π±Ρ€Π°Π½ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€, ядро сравниваСт имя ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ², ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Если ΠΈΠΌΠ΅Π½Π° ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚, ядро Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ MiApplyDriverVerifer, которая замСняСт всС ссылки Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ядра ссылками Π½Π° эквивалСнтныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Driver Verifier. Π’Π°ΠΊ, ExAllocatePool замСняСтся Π½Π° VerifierAllocatePool. Π”Ρ€Π°ΠΉΠ²Π΅Ρ€ подсистСмы управлСния ΠΎΠΊΠ½Π°ΠΌΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ Π·Π°ΠΌΠ΅Π½Ρ‹ для использования эквивалСнтных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Driver Verifier.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ², относящиСся ΠΊ использованию памяти: Special Pool, Pool Tracking, Force IRQL Checking ΠΈ Low Resources Simulation.


Special Pool (ΠžΡΠΎΠ±Ρ‹ΠΉ ΠΏΡƒΠ»)

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

ΠŸΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Special Pool Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡƒΠ»ΠΎΠ² Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ Π² памяти ядра Ρ€Π΅Π³ΠΈΠΎΠ½ для Driver Verifier, ΠΈ послСдний пСрСнаправляСт запросы провСряСмого Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π½Π° Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти Π² особый ΠΏΡƒΠ», Π° Π½Π΅ Π² стандартныС ΠΏΡƒΠ»Ρ‹. ΠŸΡ€ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ памяти ΠΈΠ· особого ΠΏΡƒΠ»Π° Driver Verifier округляСт Ρ€Π°Π·ΠΌΠ΅Ρ€ выдСляСмого Π±Π»ΠΎΠΊΠ° Π΄ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ страницы. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Driver Verifier ΠΎΠΊΡ€ΡƒΠΆΠ°Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ страницами, ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ записи ΠΈΠ»ΠΈ чтСния Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ этого Π±Π»ΠΎΠΊΠ° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π° Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ страницу, ΠΈ диспСтчСр памяти сообщаСт ΠΎ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠΈ доступа Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ядра.

Ha рис. 7–9 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π±Π»ΠΎΠΊΠ°, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Driver Verifier Π² особом ΠΏΡƒΠ»Π΅ для провСряСмого Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° устройства.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Driver Verifier распознаСт ошибки, связанныС с ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°ΠΌΠΈ обращСния Π·Π° Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° (overrun errors). Он Π΄Π΅Π»Π°Π΅Ρ‚ это, помСщая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ Π±ΡƒΡ„Π΅Ρ€ Π² ΠΊΠΎΠ½Π΅Ρ† Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ страницы ΠΈ заполняя Π΅Π΅ Π½Π°Ρ‡Π°Π»ΠΎ случайными значСниями. Π₯отя Driver Verifier Manager Π½Π΅ прСдусматриваСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΄Π΅Ρ‚Π΅ΠΊΡ†ΠΈΠΈ ошибок, связанных с ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°ΠΌΠΈ обращСния Π·Π° ниТнюю Π³Ρ€Π°Π½ΠΈΡ†Ρƒ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° (underrun errors), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² Ρ€Π°Π·Π΄Π΅Π» рССстра HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\MemoryManagement ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ PoolTagOverruns Ρ‚ΠΈΠΏΠ° DWORD ΠΈ присвоив Π΅ΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ O (ΠΈΠ»ΠΈ запустив ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ Gflags ΠΈ установив Ρ„Π»Π°ΠΆΠΎΠΊ Verify Start вмСсто установлСнного ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Verify End). Π’ΠΎΠ³Π΄Π° Driver Verifier Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π±ΡƒΡ„Π΅Ρ€ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π½Π΅ Π² ΠΊΠΎΠ½Ρ†Π΅, Π° Π² Π½Π°Ρ‡Π°Π»Π΅ страницы.

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Driver Verifier ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ ошибки Ρ‚ΠΈΠΏΠ° Β«overrunΒ», Π΄ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ стСпСни обСспСчиваСт ΠΈ распознаваниС ошибок Ρ‚ΠΈΠΏΠ° Β«underrunΒ». Когда Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ освобоТдаСт Π±ΡƒΡ„Π΅Ρ€ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ Π² Driver Verifier, послСдний Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ содСрТимоС памяти, ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Π±ΡƒΡ„Π΅Ρ€Ρƒ, Π½Π΅ измСнилось. ИноС ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ обратился ΠΊ памяти, располоТСнной Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° Π±ΡƒΡ„Π΅Ρ€Π°, ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ записал Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ этого Π±ΡƒΡ„Π΅Ρ€Π°.