É possível sugerir ao gerenciador de memória virtual do Windows que troque um processo específico fora da troca?
Normalmente, a situação em que me encontro é usar cerca de 50% da minha RAM para todos os programas normais, sendo um deles um IDE para um destino incorporado, juntamente com o depurador associado.
Então deixo um processo com fome de memória em execução - por exemplo, wireshark ou algo que está acumulando dados durante um fim de semana, tudo é trocado - como deveria. Após a conclusão do grande processo, a maioria dos processos fica em troca.
Em seguida, o sporadic faz uma pausa para trocar o processo novamente, causando problemas com o depurador, provavelmente devido a problemas de tempo nas comunicações entre o IDE e o depurador de hardware. Portanto, o controle do dispositivo de destino pode ser esporádico até que tentativas suficientes retirem os dados de depuração no IDE da troca.
Respostas:
O KerrekSB desenvolveu uma ferramenta especial para esse fim:
/programming//a/2940209/684229
Está disponível no GiTHUB com binários: https://github.com/louisdx/unpage
Durante a execução, você recebe muitos erros "Falha ao ler um byte de 0x .... 000, erro 299 (0 bytes de leitura)", mas isso não é um problema, a ferramenta funciona muito bem.
fonte
After the big process is finished, most processes are left in swap.
. Então, presumivelmente, ele já terminou o "processo de fome de memória".if (meminfo.Protect > 50) { std::cerr << meminfo.Protect << " - " << PAGE_GUARD << std::endl; }
logo antes daReadProcessMemory
linha. PAGE_GUARD é 256 e recebi 260 com as páginas com falha. Portanto, é possível se livrar dos erros. Alguém com algum conhecimento em c ++ e paginação precisa ler o bit PAGE_GUARD.Você pode usar o Process Lasso para dar a um processo uma prioridade da página Memória :
O Process Lasso tem duas versões: gratuita e comercial (US $ 18,95 com avaliação).
fonte