Qual é o endereço no monitor de processo

0

No Process Monitor, se pegarmos um processo específico, escolha sua propriedade, nas propriedades do evento, a guia do processo mostra o endereço de cada arquivo de biblioteca individual e a que esses endereços se referem? Além disso, os endereços em Stack apontam para a localização da memória virtual ou física?

    
por FunctionBlock 06.04.2018 / 05:30

1 resposta

1

Todos os endereços mostrados são virtuais. Eles são os endereços iniciais das DLLs ou outros arquivos mapeados no espaço de endereço virtual do processo. Os endereços mostrados na guia Stack também são virtuais.

Você pode ver uma divisão semelhante no Process Explorer - habilite a "exibição de DLLs" no painel inferior. E também no VMmap, mas com mais detalhes. O VMmap inclui os endereços de "seções" dentro de cada arquivo executável. Haverá uma seção para código, uma para dados somente leitura, uma para "recursos", etc., além de algumas informações de controle.

Na verdade, é extremamente difícil para um sistema operacional de memória virtual em x86 / x64 usar diretamente, ou seja, fazer referência a um endereço físico. Uma vez que o sistema "fica virtual", isto é, define o bit "Paging enable" em CR0 - o que acontece muito cedo na inicialização - todos os endereços afirmados pelo código em execução (seja kernel ou modo de usuário) são interpretados pela CPU como endereços virtuais, e deve ser traduzido (usando informações das tabelas de páginas) para físico antes de serem apresentados ao controlador de memória.

O código do kernel no sistema operacional, é claro, "gerencia" a memória física (por exemplo, atribuindo-a a processos que precisam dela) e manipula entradas de tabela de páginas e números de página física, mas não pode "referenciar" diretamente 'memória através dos endereços físicos da memória.

    
por 07.04.2018 / 18:13