Malloc e paginação

1

Quando um processo do usuário chama malloc (n), há alguma página física alocada para o processo? Eu acredito que não desde malloc aloca do heap. Está correto?

    
por user100503 12.08.2014 / 00:10

1 resposta

3

Para o Linux, acredito que a resposta curta à sua pergunta é "geralmente nenhuma página física é alocada". Isso é chamado de "supercomprometimento de memória " e você pode encontrar toneladas de documentação . As variantes Unix tiveram políticas diferentes sobre a alocação de página física real no momento do malloc. Tradicionalmente, os sistemas baseados em 4BSD não comprometeram demais, o que, em combinação com o programa chill (não é possível encontrar uma referência), foi divertido. chill alocou e reteve a maior quantidade de memória possível. Como o SunOS (baseado em 4.2BSD) sempre alocou páginas físicas para qualquer malloc() , um mero usuário poderia alocar toda a RAM e fazer com que todos os outros paginem indefinidamente.

Para o linux você pode descobrir qual é a política do seu sistema: cat /proc/sys/vm/overcommit_memory deve fornecer um "0", "1" ou "2" com os significados "heuristic overcommit", "always overcommit" e "never overcommit" respectivamente.

    
por 12.08.2014 / 00:35