Como o Windows lida com memória de processo ou exaustão de recursos?

0

Outro dia eu estava trabalhando em um PC com Windows 7 de 32 bits, com alguns aplicativos rodando incluindo o Firefox.

Com o tempo, continuei abrindo novas abas no Firefox até que, de repente, a janela do Firefox começou a piscar. A partir desse ponto, a maior parte da GUI do Firefox ficou preta e se recusou a repintar. Depois de tentar fechar cegamente algumas guias, o processo do Firefox travou completamente. Todos os outros aplicativos pareciam continuar funcionando bem.

Estou assumindo (corrija-me se estiver errado) que o processo do Firefox esgotou seu direito de memória virtual de 2 GB ou algum outro recurso. O que me leva às questões principais:

  1. A exaustão de memória / recursos em um processo pode desestabilizar outros processos ou até mesmo o próprio kernel?

  2. Como o Windows moderno lida com esse cenário? Quão robusto é sob estas condições de alta pressão?

Minha preocupação é que, se outros processos ou serviços do kernel forem comprometidos, isso poderia resultar em um sistema corrompido (por exemplo, corrupção de arquivo / disco / registro).

    
por misha256 04.07.2015 / 10:00

1 resposta

1

Como o Windows lida com a memória de processo ou esgotamento de recursos?

Como um programa se comporta sob "condições de estresse" depende de como o programa específico foi escrito (quais privilégios ele possui, contém bugs, etc.) e esse comportamento determinará como o restante do sistema é afetado quando algo " está errado ".

É possível que os dados possam ser perdidos. É possível que o sistema trave com um BSOD ou simplesmente não consiga gravar dados por causa de um erro delayed write failed .

Empurrando os limites do Windows

A série de posts do blog de Mark Russinovich (a partir de Empurrando os limites do Windows : Memória física entra neste tópico com algum detalhe.

Em particular, em Empurrando os limites do Windows: Conjunto paginado e não paginado , ele ilustra o efeito da execução de um programa de teste:

If you want to witness first hand how a system behaves when pool runs low, use the Notmyfault tool. It has options that cause it to leak either nonpaged or paged pool in the increment that you specify. You can change the leak size while it’s leaking if you want to change the rate of the leak and Notmyfault frees all the leaked memory when you exit it

Em um sistema de teste, ele disse sobre os resultados:

On one test system, I eventually saw this error message indicating that data had potentially been lost. I hope you never see this dialog on a real system!

enter image description here

Leitura Adicional

Windows Internals, 6ª edição , de Mark Russinovich, contém muito mais informações sobre como o Windows funciona sob o capô.

    
por 04.07.2015 / 10:31