Makale numarası: 188831 - Son Gözden Geçirme: 07 Ekim 2009 Çarşamba - Gözden geçirme: 11.0 Havuzu zarar yalıtmak için özel havuz özelliği nasıl kullanılır
ÖzetHavuzu en evasive sorunların çoğunu zarara neden olur, bellek ayrılmış havuzu alanı dışında bir çekirdek modu bileşeni yazdığında Windows NT. havuzu ile zarar. Bellek sınırı, ayrılmış alanın yazarak, bellek, büyük olasılıkla başka bir bileşen tarafından sahibi, başka bir etki alanının üzerine olduğunu olasıdır. Bu mavi ekranlar gibi sorunları kod tamamen ilgisiz alanları zarar verebilir. Ayrıca, BIR çekirdek modu bileşeni, ayrılmış alanı dışında okuma sorunlara neden olabilir. Özgün donanım üreticileri (OEM) sürücüleri ya da Windows sorunları neden olup olmadığını havuzu zarar sorunları tanımlamak en zor birkaçıdır. Genellikle, tüm bir kilitlenme bilgi dökümü çözümlemesinde, zarar görmüş ve neden tamamen ilgisiz bir kod bloğunu sorunları gibi bir veri alanı olarak gerçek sorun belirtisi olma görülebilir. Şimdi kadar bellek zarar kod kesimi bulmak hemen hemen olanaksız. Kaynak havuzu zarar, şimdi havuzu zarara neden adresindeki yönerge belirlenebilir. Özel havuz adlı yeni BIR bellek yönetimi hizmet, Windows NT 4.0 Service Pack 4 (SP4), Windows 2000, Windows XP, Windows Server 2003, Windows Vista ve Windows Server 2008 ile bulunur. Özel havuz yardımcı programı, ayrılmış alanı dışında bellek yazarak havuzu veri zarar çekirdek modu bileşeni belirtir. Not Bellek ayarlama Windows Vista ve Windows Server 2008 için geçerli değildir. Özel havuz özelliği ancak bu ürünler için uygulanır. Daha fazla bilgiÖnemli Bu bölüm, yöntem veya görev kayıt defterini nasıl söyleyin adımları içerir. Ancak kayıt defterini hatalı olarak değiştirirseniz önemli sorunlar oluşabilir. Bu nedenle, bu adımları dikkatlice uyguladığınızdan emin olun. Ek koruma için, kayıt defterini değiştirmeden önce yedeklemeyi unutmayın. Bir sorun oluşursa kayıt defterini daha sonra geri yükleyebilirsiniz. Kayıt defterini yedekleme ve geri yükleme hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın: 322756
(http://support.microsoft.com/kb/322756/
)
Windows'da kayıt defterini yedekleme ve geri yükleme Özel havuzu yardımcı programını aşağıdaki ölçütlere uyan ExAllocatePoolWithTag istenen her havuz ayırma için iki sanal bellek sayfası ayırır:
Taşma algılama, büyük olasılıkla en kullanılan olur. Taşması algılaması için istenen tahsisat ilk sayfanın sonuna kadar isteği boyutu sayfa sonundan yedekleme tarafından yerleştirilir. Ayırma boyutu için bir 8 bayt sınırının yukarı yuvarlanır. Bir desen anahtar boyutu ve havuzu etiket bilgilerini üstbilgisi ilk sayfanın ilk sekiz bayt konumunda yazılır. Desen, ayrıca sayfa yayılır. Tahsisat en yakın 8 bayt sınırında konumlanacağını için tahsisat aşağıdaki kadar yedi slop bayt olabilir. Desen de tahsisat aşağıdaki slop bayt yazıldı. Ikinci sayfa koruma sayfasıdır. Erişim yok koruması ile işaretlenmiş bir özel sayfa tablosu girdisi (PTE) sayfa koruma oluşur. Erişim yok koruması bu ikinci sayfası işaretleyerek, okumaya veya ilk sayfa sonunu hemen yazmaya çalıştığı herhangi bir kod bir "Dur 0x0000000A" ya da Dur 0x0000001E Hatasına neden olan bir erişim ihlaline neden olur. Bu, birisinin havuzu zarara neden olan tam bir yönerge bulmak için sistem hata ayıklama sağlar. Tahsisat ötesinde, ancak değil sayfanın ötesine yazma violators yakalamak için bir yedekleme denetimi serbest havuza isteği sırasında tahsisat sonunda slop bayt doğrulandığı (ExFreePoolWithTag). Tahsisat başlıktaki her şeyi slop bayt alanına yazılır olup olmadığını belirlemek için desen slop bayt karşılaştırılır. Doğrulama onay çalışmazsa, 0x00000001A Dur hatası oluşuyor. Bu denetim, mutlaka tam havuzu zarara neden olan kod bloğunu bulmaz. Ancak, bunu zararı neden olan bileşeni belirlemek yardımcı olabilir. Özel havuz yardımcı programı'nı etkinleştirmek için <a0></a0>, aşağıdaki anahtarları ve değerleri kayıt defterine ekleyin: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management Değer adı: PoolTag Veri türü: REG_DWORD Veri: havuzu etiketi maskesi | tahsisat boyutu maskesi | 0 Aşağıdaki tabloda daha fazla örnek listeler. Pool to monitor Character representation Pool tag mask ---------------------------------------------------------- All pools "*" 0x2A N??s "s??N" 0x733F3F4E Sıfır (0x0) belirtilmişse, özel havuz yardımcı programı başlatılamadı. Kayıt defterindeki PoolTag kayıt defteri değeri tanımlanırsa, buna ek olarak, özel havuz yardımcı programı başlatılamadı. Değer adı: PoolTagOverruns 1, havuz ayırma taşmalarının belirtilen etiket için algılanır gösterir. Tahsisat, sayfanın sonuna yerleştirilir ve koruma sayfası izler.Veri türü: REG_DWORD Veri: 1 | 0 0, havuz ayırma underruns etiketi algılanır gösterir. Tahsisat, sayfanın başında bulunur ve koruma sayfası tahsisat içeren sayfadan önce gelir. Bu iki kayıt defteri anahtarlarını oluşturmak için ortak kullanım örnekleri aşağıdaki gibi olur: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\
Memory Management Değer adı: PoolTag Veri türü: REG_DWORD Veri: 0x2A Değer adı: PoolTagOverruns Veri türü: REG_DWORD Veri: 1 Not Özel havuz kullandığınızda, Windows NT Terminal Server 4.0, devre dışı KStackPool bırakmanız gerekir. Bunu yapmak için <a0></a0>, aşağıdaki kayıt defteri değerini ekleyin: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management Değer adı: EnableKStackPool Veri türü: REG_DWORD Veri: 0 1 - Her zaman etkin KStack havuzu 2 - 256 MB veya daha fazla belleğe (varsayılan) olan bilgisayarlar için etkin KStack havuzu Not Yetersiz özel sayfa tablosu girdileri (PTE) varsa, Windows Server 2003'te özel havuz özelliği çalışmayabilir. Bu sorun, genellikle 1 GB'DEN fazla RAM içeren ve varsayılan değerlerini ayarlamak bilgisayarın bellek yönetimi ayarlama değerleri olan tek kullanıcı terminal sunucularında oluşur. Bu sorun, Windows Server 2003'ün 64-bit sürümlerinde oluşmaz. Bellek döküm dosyasını analiz sorunun, aşağıdaki bilgileri içerebilir: *** 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
Bu soruna geçici bir çözüm bulmak için <a0></a0>, izin verilen disk belleği olan havuz boyutundan daha küçük bir değere <a1>PagedPoolSize</a1> kayıt defteri girdisinin değerini yapılandırın. Örneğin, bir değer olarak <a0>PagedPoolSize</a0> kayıt defteri girdisini ayarlayın 256 MB. Daha büyük bir değer yapılandırmak istiyorsanız, daha büyük bir disk belleği havuzu boyutu bilgisayarın gereksinimini belirlemek için performans izleyicisi yardımcı programını kullanın. PagedPoolSize kayıt defteri girişi için aşağıdaki değerleri kullanabilirsiniz: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory
Management
Değer adı: PagedPoolSize Veri türü: REG_DWORD Veri: 10000000 Temel: onaltılık Windows Server 2003 Service Pack 1 (SP1): Değer adı: PagedPoolSize Veri türü: REG_DWORD Veri: FFFFFFFF Temel: onaltılık Not Bu makalede açıklanan kayıt defteri değişiklikleri yaptıktan sonra değişikliklerin etkili olması için neden bilgisayarı yeniden başlatın. Özel havuz özelliği etkinleştirildikten sonra bilgisayar durduğunda ve yanıt veren (Bu bağlantı, bir kısmı veya tamamı ingilizce olan içeriğe işaret edebilir.) başlangıç sırasında bir mavi ekranda bir hata iletisi alıyorsunuz, bilinen son iyi yapılandırma seçeneğini kullanarak, bilgisayarı yeniden başlatın. Özel havuz özelliği etkinleştirme son bilinen iyi yapılandırma girişi başarılı bir oturum kadar sonra kayıt defterindeki yazılmaz. Bu makaledeki bilginin uygulandığı durum:
Otomatik TercümeÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir. Makalenin İngilizcesi aşağıdaki gibidir:188831
(http://support.microsoft.com/kb/188831/en-us/
)
| Diğer Kaynaklar Diğer Destek Siteleri
ToplulukHemen Yardım AlMakale çevirileri
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Üste