сценарій виконання спеціального пула функції ізолювати пошкодження басейну

Переклади статей Переклади статей
Номер статті: 188831 - Показ продуктів, яких стосується ця стаття.
Розгорнути все | Згорнути все

Підсумки

Пошкодження басейну може викликати багато хто з найбільш Мавпа проблеми з Windows NT. басейн пошкодження виникає, коли рівня ядра компонент пише пам'яті за межі області виділені басейн. Письмовій формі в пам'яті за межі його виділені області, є ймовірність, що інший зона пам'ять, можливо належать іншим компонентом, перезаписані. Таке пошкодження може виникати такі проблеми, як синього екрану в абсолютно не пов'язані райони коду. Компонент режим ядра, читання поза межами виділені можна також викликати проблеми.

Чи це викликано оригінального обладнання Виробники (OEM) драйверів або неполадки у Windows, проблеми пошкодження басейн Деякі з найбільш важко визначити. Як правило, все, що можна побачити в дамп катастрофи аналізу є симптомом проблему фактичного, наприклад до область даних стає пошкоджений і заподіяння проблеми у зовсім інший блок коду. До цих пір це було майже неможливо знайти сегмент коду що збиток пам'яті.

Тепер можна визначити джерело пошкодження басейну в інструкції заподіяння шкоди басейн. Нова утиліта управління пам'яттю тобто іменований спеціальний басейн входить до складу Windows NT 4.0 пакетом оновлень 4 (SP4), Windows 2000, Windows XP, Windows Server 2003, Windows Vista і Windows Server 2008. Утиліта спеціальний басейн визначає компонент режим ядра, який є пошкодження даних басейн, написавши пам'яті за межі його виділені області.

Примітка. Налаштування пам'яті не застосовується до Windows Vista і Windows Server 2008. Однак функція спеціальний басейн застосування для цих продуктів.

Додаткові відомості

Важливо. Цей розділ, спосіб або завдання містять кроки, в яких описано, як змінити реєстр. Проте неправильне внесення змін до реєстру може призвести до серйозних неполадок. Тому переконайтеся, що ви виконуєте зазначені інтерактивні елементи ретельно. Для додаткового захисту створіть архівувати реєстру перед внесенням змін. Тоді ви зможете відновити реєстр у разі виникнення проблеми. Щоб отримати додаткові відомості про архівацію та відновлення реєстру, клацніть номер статті в базі знань Майкрософт:
322756 архівувати та відновлення реєстру Windows


Спеціальна утиліта басейн. виділяє двох сторінок віртуальної пам'яті для кожного розподілу басейн, який запитується через ExAllocatePoolWithTag що відповідає таким критеріям:
  • Розподіл запит повинен бути на розмір менше, ніж у Максимальна виділення, що вміщується на сторінці басейн.
  • Запит має відповідати PoolTag специфікації у в реєстру.
Для виявлення басейн переповнення перша сторінка використовується, щоб містити Розміщення в кінці сторінки. Друга сторінка є гвардії сторінки. Для басейн underrun виявлення, перша сторінка є гвардії сторінки. Потім за сторінки, що містить виділення на початку сторінки.

Переповнення виявлення є ймовірно найбільш використовуваних. Для детекції переповнення на Запитаний розподіл розташовується в кінці першої сторінки шляхом створення резервної копії з Розмір запит на змінення з кінця сторінки. Розмір кластера, округлене до до 8-байтове кордону. Ключ візерунок, розмір і на басейн інформації написано в заголовку, перші вісім байт першої сторінки. Візерунок Це також поширюється по всій сторінці. Тому що розподіл позиціонується на в найближчої межа 8-байтові, може бути як сім ж байти, дотримуючись на виділення. Шаблон також написано ж байт, дотримуючись на виділення.

Друга сторінка є гвардії сторінки. Гвардії сторінки складається з на спеціальній сторінці покажчика (PTE), позначений немає доступу захист. За маркування цієї другої сторінки з захист немає доступу, будь-який код намагається читати або писати за межами кінця перша сторінка відразу ж причини порушення доступу, що призводить до "Stop 0x0000000A" або протокол IMAP про помилку Stop 0x0000001E. Це дозволяє у кого налагодження системи, щоб знайти точні інструкції що викликає пошкодження басейну.

Як резервного копіювання виїзду зловити порушники, що писати за межі виділення, але не за межі сторінки, що ж байт в кінці виділення перевірені протягом запит безкоштовний басейн. (ExFreePoolWithTag). Ж байт в порівнянні з візерунком у в виділення заголовка, щоб визначити, чи що-небудь перезаписані в області ж байт. Якщо перевірка перевіряти не працює, помилка Stop 0x00000001A відбувається.

Ця перевірка не обов'язково знайти точне блок код, який викликає пошкодження басейну. Однак, це може допомогти визначити компонент що викликає пошкодження.

Щоб увімкнути утиліта спеціальний басейн, додати до такі ключі та значення до реєстру:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management


Ім'я значення: PoolTag
тип даних: REG_DWORD
Дані: Маски басейн тег | Розподіл розміру маска | 0
Маска тег басейн є басейн Ідентифікатор тега, який містить маскування символи басейн, в якому ви хочете, щоб покласти в спеціальний басейн. Ця маска слід указати в шістнадцятковому кодуванні у зворотному порядку. Ця маска також можуть містити "?" для маскування один символ або "*" маску тут до кінця тега. Наприклад, щоб контролювати всі басейни Теги користувачів басейн, що починається з "Nt", укажіть "2A744E" (без лапок), який являє собою "* tN".

На Нижче наведено список більше прикладів.
   Pool to monitor   Character representation   Pool tag mask
   ----------------------------------------------------------               
   All pools         "*"                        0x2A
   N??s              "s??N"                     0x733F3F4E
				
Розподіл розміру маска специфікація розміщує всі пула з Указаний розмір в спеціальний басейн. Це також зазначені в шістнадцятковому кодуванні. Наприклад, якщо всі асигнування 32 байтах розташовані в спеціальний басейн, Укажіть 0x20.

Якщо не вказано нульовий (0x0), утиліта спеціальний басейн не ініціалізовано. Крім того, спеціальний басейн утиліта не ініціалізовано якщо значення реєстру PoolTag не визначено у реєстрі.
Ім'я значення: PoolTagOverruns
тип даних: REG_DWORD
Дані: 1 | 0
1 вказує, що басейн розподіл overruns виявлено для в Указаний тег. Розподіл знаходиться в кінці сторінки і охорона Сторінка наступним.

0 означає що басейн розподіл underruns виявлено для в Тег. Розподіл знаходиться на початку сторінки і сторінки Гвардія приходить до сторінки, яка містить виділення.

Загальні приклади сценарій виконання для створення цих двох реєстру буде виглядати наступним чином:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\ Memory Management


Ім'я значення: PoolTag
тип даних: REG_DWORD
Дані: 0x2A

Ім'я значення: PoolTagOverruns
тип даних: REG_DWORD
Дані: 1


Примітка. Для Windows NT 4.0 сервера терміналів необхідно вимкнути KStackPool під Вільний час сценарій виконання спеціального пула. Для цього додайте таке значення реєстру:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management


Ім'я значення: EnableKStackPool
тип даних: REG_DWORD
Дані: 0

1 - KStack басейн завжди включена
2 - KStack басейн ввімкнуто для комп'ютерів, які мають 256 Mб або більше пам'яті (за промовчанням)
Якщо ви не зробите це зміна на термінал Сервер комп'ютерів, які мають 256 Мб або більше пам'яті, може з'явитися "зупинити 0x00000078 (PHASE0_EXCEPTION) "повідомлення про помилки.


Примітка. Спеціальний басейн засіб може не працювати у Windows Server 2003, якщо записів таблиці недостатньо спеціальних сторінок (Pte). Ця проблема зазвичай виникає на одного користувача термінальних серверів, які містять більше 1 ГБ оперативної пам'яті і пам'яті управління налаштування значень комп'ютера, встановіть значення за промовчанням, які мають. Ця проблема не виникає у 64-розрядних версіях Windows Server 2003.

Файл пам'яті дамп аналізу питання може містити такі відомості:
*** Virtual Memory Usage *** 
Physical Memory: 1015660 ( 4062640 Kb) 
Page File: \??\C:\Pagefile1\pagefile.sys 
Current: 4193280Kb Free Space: 4180856Kb 
Minimum: 4193280Kb Maximum: 4193280Kb 
Available Pages: 552680 ( 2210720 Kb) 
ResAvail Pages: 932179 ( 3728716 Kb) 
Locked IO Pages: 347 ( 1388 Kb) 
Free System PTEs: 187166 ( 748664 Kb) 
Free NP PTEs: 32765 ( 131060 Kb) 
Free Special NP: 117228 ( 468912 Kb) 
Modified Pages: 106 ( 424 Kb) 
Modified PF Pages: 98 ( 392 Kb) 
NonPagedPool Usage: 6599 ( 26396 Kb) 
NonPagedPool Max: 65536 ( 262144 Kb) 
PagedPool 0 Usage: 10697 ( 42788 Kb) 
PagedPool 1 Usage: 1240 ( 4960 Kb) 
PagedPool 2 Usage: 1239 ( 4956 Kb) 
PagedPool 3 Usage: 1265 ( 5060 Kb) 
PagedPool 4 Usage: 1231 ( 4924 Kb) 
PagedPool Usage: 15672 ( 62688 Kb) 
PagedPool Maximum: 90112 ( 360448 Kb) 
Shared Commit: 3866 ( 15464 Kb) 
Special Pool: 511 ( 2044 Kb) <-- very small
Shared Process: 5205 ( 20820 Kb) 
PagedPool Commit: 15672 ( 62688 Kb) 
Driver Commit: 2091 ( 8364 Kb) 
Committed pages: 439832 ( 1759328 Kb) 
Commit limit: 2023823 ( 8095292 Kb)

0: kd> dd nt!MmSpecialPoolRejected l8 
8057afe0 00000000 00000000 00b2e59a 00000000 <-- A DWORD value of 3 causes special pool PTE's shortage.
8057aff0 00000000 00000000 00000000 00000000

8057afd8 nt!MiSpecialPoolFirstPte = 0xc022af78
8057afd4 nt!MiSpecialPoolLastPte = 0xc022af78
Ви можете перевірити питання шляхом розмір спеціального пула, що виділяється з аналізу. У цьому випадку питання виникає тому, що такі значення PTE спеціальний басейн дорівнюють:
  • MiSpecialPoolFirstPte
  • MiSpecialPoolLastPte
Ця проблема може також виникати, якщо значення запису реєстру MmSpecialPoolRejected три або більше.

Щоб вирішити цю проблему, настройте значення запису реєстру PagedPoolSize значення, менше, ніж розмір вивантажуваного пула, які дозволено. Наприклад, встановити запис А реєстру PagedPoolSize значення 256 МБ. Якщо ви хочете, щоб налаштувати більшого значення, використайте утиліту монітору продуктивності для визначення комп'ютера вимога щодо більшого розміру вивантажуваного пула.

Ви можете використовувати наступні значення для запису реєстру PagedPoolSize:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
Для Windows Server 2003 без пакета оновлень:

Ім'я значення: PagedPoolSize
тип даних: REG_DWORD
Дані: 10000000
База: шістнадцяткове

Для Windows Server 2003 з пакетом оновлень 1 (SP1) встановлено:

Ім'я значення: PagedPoolSize
тип даних: REG_DWORD
Дані: FFFFFFFF
База: шістнадцяткове

Примітка. Після того, як ви робити будь-які зміни в реєстрі, які описані в цій Стаття, перезавантажте комп’ютер-зразок, щоб викликати зміни набувати чинності.

Якщо Після увімкнення засобу спеціальний басейн, перестає реагувати (зависає), і ви отримаєте протокол IMAP про помилку на синьому екрані під Вільний час запуску, перезавантаження комп’ютер-зразок за допомогою останньої вдалої конфігурації опцію. Увімкнення функції спеціальний басейн не написано до останнього добре відомі Конфігурації запис А у реєстрі після успішного входу в систему.

Властивості

Номер статті: 188831 - Востаннє переглянуто: 19 квітня 2013 р. - Редакція: 0.1
Застосовується до:
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows XP Professional Edition
  • Microsoft Windows Server 2003 Standard Edition
  • Microsoft Windows Server 2003 Enterprise Edition
  • Microsoft Windows Server 2003 Service Pack 2
  • Windows Vista Home Premium
  • Windows Vista Enterprise
  • Windows Vista Ultimate
  • Пакет оновлень 2 для ОС Windows Vista
  • Windows Server 2008 Standard
  • Windows Server 2008 Enterprise
  • Windows Server 2008 Datacenter
  • Windows Server 2008 Service Pack 2
  • Windows 7 Home Premium
  • Windows 7 Enterprise
  • Windows 7 Professional
  • Windows 7 Ultimate
  • Windows 7 Service Pack 1
  • Windows Server 2008 R2 Standard
  • Windows Server 2008 R2 Enterprise
  • Windows Server 2008 R2 Datacenter
  • Windows Server 2008 R2 Service Pack 1
Ключові слова: 
kbenv kbhowto kbqfe kbmt KB188831 KbMtuk
Машинний переклад
УВАГА! Цю статтю переклала програма машинного перекладу Microsoft, а не людина. Корпорація Microsoft пропонує вам як машинні переклади, так і переклади фахівців, щоб Ви мали доступ до всіх статей бази знань рідною мовою. Проте стаття, яку переклав комп’ютер, не завжди бездоганна. Вона може містити лексичні, синтаксичні або граматичні помилки. Так само помиляється іноземець, спілкуючись вашою рідною мовою. Корпорація Microsoft не несе відповідальність за жодні неточності, помилки або шкоду, завдану неправильним перекладом змісту або його використанням з боку користувачів. Крім того, корпорація Microsoft часто оновлює програму машинного перекладу.
Клацніть тут, щоб переглянути цю статтю англійською мовою: 188831

Надіслати відгук

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com