Artigo: 188831 - Última revisão: quarta-feira, 7 de Outubro de 2009 - Revisão: 11.0 Como utilizar a funcionalidade de conjunto especial para isolar os danos de agrupamento
SumárioDanos de agrupamento podem causar muitos dos problemas mais evasive com Windows NT. conjunto danos é causado quando escreve um componente de modo kernel para a memória fora da área de agrupamento atribuída. Ao escrever para a memória para além do limite da respectiva área atribuída, é provável que outra área do atribuída memória, possivelmente pertencente a outro componente, seja substituída. Este problema pode causar problemas como ecrãs azuis nas áreas completamente não relacionadas de código. Um componente de modo kernel ler para além da área atribuída também pode causar problemas. Se o for causado por controladores de fabricantes de equipamento original (OEM) ou problemas no Windows, problemas de danos do conjunto são algumas das mais difícil identificar. Normalmente, tudo o que pode ser visto numa análise de informação de falha é o sintoma do problema real, tal como uma área de dados ficar problemas danificados e que num bloco completamente não relacionado de código. Até agora, foi quase impossível localizar o segmento de código danifica a memória. A origem dos danos do conjunto agora pode ser identificada na instrução fazendo com que os danos de agrupamento. Um novo utilitário de gestão de memória que é denominado conjunto especial está incluído no Windows NT 4.0 Service Pack 4 (SP4), Windows 2000, Windows XP, Windows Server 2003, Windows Vista e Windows Server 2008. O utilitário de conjunto especial identifica o componente de modo kernel que é a danificar o conjunto de dados escrevendo à memória fora da respectiva área atribuída. Nota Optimização da memória não se aplica ao Windows Vista e Windows Server 2008. No entanto é aplicada a funcionalidade de conjunto especial para estes produtos. Mais Informação importante Esta secção, método ou tarefa contém passos que indicam como modificar o registo. No entanto, poderão ocorrer problemas graves se modificar o registo de forma incorrecta. Por conseguinte, certifique-se de que segue estes passos cuidadosamente. Criar uma para protecção adicional, cópia de segurança do registo antes de o modificar. Em seguida, pode restaurar o registo se ocorrer um problema. Para obter mais informações sobre como efectuar uma cópia de segurança e restaurar o registo, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base: 322756
(http://support.microsoft.com/kb/322756/
)
Como efectuar uma cópia de segurança e restaurar o registo no Windows O utilitário de conjunto especial atribui duas páginas de memória virtual para cada atribuição de conjunto requisitada através de ExAllocatePoolWithTag que correspondem aos seguintes critérios:
Sobrecarga da detecção é provavelmente o mais utilizado. Para detecção de sobrecarga da atribuição pedida está posicionada no fim da primeira página por cópias o tamanho do pedido do fim da página. O tamanho da atribuição é arredondado por excesso um limite de 8 bytes. Uma chave de padrão, o tamanho e as informações de marca de conjunto são escritas no cabeçalho nos oito primeiros bytes da primeira página. O padrão também é propagado ao longo da página. Uma vez que a atribuição encontra-se sobre o limite mais próximo de 8 bytes, pode existir até sete bytes slop após a atribuição. O padrão é também escrito os bytes slop após a atribuição. A segunda página é a página protecção. A página de protecção é constituída por uma entrada de tabela especial de página (PTE, page table ENTRY) que está marcada com protecção de acesso não. Por marcar esta segunda página com protecção de acesso não, qualquer código tentar ler ou escrever para além do fim da primeira página imediatamente faz com que uma violação de acesso que provoca um erro de Stop 0x0000001E ou de ' Stop 0x0000000A '. Isto permite que alguém o sistema para localizar a instrução exacta que causa danos de conjunto de depuração. Como verificação de cópia de segurança para detectar identificados escrevem para além do fim da atribuição mas não para além do fim da página, os bytes slop no fim da atribuição são validados durante o pedido de conjunto livre (ExFreePoolWithTag). Os bytes slop são comparados com o padrão no cabeçalho da atribuição para determinar se alguma coisa é substituída na área de byte slop. Se a verificação de verificação não funcionar, ocorre um erro Stop 0x00000001A. Esta verificação não encontrará necessariamente bloco de código que causa danos conjunto exacto. No entanto, pode ajudar a identificar o componente que faz com que os danos. Para activar o utilitário de conjunto especial, adicione as seguintes chaves e valores no registo: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management nome do valor : PoolTag tipo de dados : REG_DWORD dados : conjunto de máscara de código | máscara de tamanho de alocação | 0 A tabela seguinte lista mais exemplos. Pool to monitor Character representation Pool tag mask ---------------------------------------------------------- All pools "*" 0x2A N??s "s??N" 0x733F3F4E Se for especificado zero (0 x 0), o utilitário de conjunto especial não está inicializado. Além disso, o utilitário de conjunto especial não está inicializado se o valor de registo PoolTag não estiver definido no registo. nome do valor : PoolTagOverruns 1-indica que excessos de atribuição do conjunto são detectados para o código especificado. A atribuição é localizada na extremidade da página e a página de protecção a seguir.tipo de dados : REG_DWORD dados : 1 | 0 0 indica que são detectadas underruns de alocação de conjunto para a tag. A atribuição está localizada no início da página e a página de protecção é fornecido antes da página que contém a atribuição. Exemplos comuns de utilização para criar estas chaves de dois registo seria da seguinte forma: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\
Memory Management nome do valor : PoolTag tipo de dados : REG_DWORD dados : 0x2A nome do valor : PoolTagOverruns tipo de dados : REG_DWORD dados : 1 Nota Para o Windows NT Terminal Server 4.0, tem de desactivar KStackPool quando utiliza o conjunto especial. Para tal, adicione o seguinte valor de registo: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management nome do valor : EnableKStackPool tipo de dados : REG_DWORD dados : 0 1 - conjunto KStack sempre activado 2 - KStack agrupamento activado para computadores com 256 MB ou mais memória (predefinição) Nota A funcionalidade de conjunto especial poderá não funcionar no Windows Server 2003, se existirem insuficiente especiais tabela entradas (páginas PTE, page table entries). Este problema normalmente ocorre em servidores de terminais único utilizador que contêm mais do que 1 GB de RAM e que tenham os valores de optimização de gestão de memória do computador definido para os valores predefinidos. Este problema não ocorre em versões de 64 bits do Windows Server 2003. Uma análise de ficheiro de informações de estado da memória do problema poderá conter as seguintes informações: *** 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
Para contornar este problema, configure o valor da entrada de registo PagedPoolSize para um valor menor que o tamanho de bloco paginado é permitido. Por exemplo, defina a entrada de registo PagedPoolSize um valor de 256 MB. Se pretender configurar um valor superior, utilize o utilitário de monitor de desempenho para determinar o requisito do computador para um tamanho de bloco paginado. Pode utilizar os seguintes valores para entrada de registo PagedPoolSize: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory
Management
nome do valor : PagedPoolSize tipo de dados : REG_DWORD dados : 10000000 Base: hexadecimal Para o Windows Server 2003 com Service Pack 1 (SP1) instalado: nome do valor : PagedPoolSize tipo de dados : REG_DWORD dados : FFFFFFFF Base: hexadecimal Nota Depois de efectuar as alterações de registo que são descritos neste artigo, reinicie o computador para fazer com que as alterações tenham efeito. Se depois de activar a funcionalidade de conjunto especial, o computador deixa de responder (não reage) e recebe mensagem de erro num ecrã azul durante o arranque, reinicie o computador utilizando a opção Última configuração em condições conhecida. Activar a funcionalidade de conjunto especial não é escrito para a última entrada de configuração em condições conhecida no registo até após um início de sessão com êxito. A informação contida neste artigo aplica-se a:
Tradução automáticaIMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado. Clique aqui para ver a versão em Inglês deste artigo: 188831
(http://support.microsoft.com/kb/188831/en-us/
)
| Outros Recursos Outros Sites de Suporte
ComunidadesObtenha Ajuda AgoraTraduções de Artigos
|






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


Voltar ao topo