Uso da memória virtual versus tamanho do conjunto de residentes

1

Quando eu inicio o script php e faço ps aux e tenho um grande número para VSZ , cerca de 450MB. Enquanto RSS - tamanho do conjunto de residentes - é de cerca de 10MB. Na wikipedia, o tamanho do conjunto de residentes é is the portion of a process's memory that is held in RAM . Mas o tamanho da memória virtual inclui memória armazenada em outro lugar, digamos, no sistema de arquivos? Com o que exatamente a memória virtual consiste?

    
por wrong-about-everything 23.05.2013 / 16:35

2 respostas

3

Memória virtual (como o nome indica) é uma abstração sobre a arquitetura de memória física subjacente. Cada processo obtém seu próprio espaço de endereço virtual e, quando os endereços virtuais são acessos, eles são primeiro convertidos em endereços de hardware pela Unidade de Gerenciamento de Memória (MMU). Os dados no espaço de endereço virtual de um processo podem estar na memória principal, no disco, em ambas ou em alguma outra memória externa. No entanto, todas as páginas que não estão na memória principal (MM) são carregadas no MM quando são acessadas por um processo. Assim, os processos não são lidos diretamente do disco, mas alguns ou a maioria de seus recursos podem residir na memória externa a qualquer momento, pois as páginas podem ser trocadas para serem colocadas em lugar dos outros.

    
por 23.05.2013 / 16:43
3

A memória virtual pode ser:

  • na RAM se os dados foram acessados recentemente ou se não houver pressão para liberar RAM
  • na área de troca (partição swap ou arquivo de troca) se tiver sido paginada fora
  • no sistema de arquivos, se os dados corresponderem aos arquivos mapeados na memória (por exemplo: bibliotecas compartilhadas)
  • em nenhum lugar (ou seja, não use nenhum recurso, especialmente em sistemas com super-comprometimento de memória como o Linux) se as páginas alocadas ainda não tiverem sido acessadas

O quarto ponto é frequentemente ignorado.

    
por 23.05.2013 / 17:43