Estudo de caso do gerenciamento de memória virtual

2

Precisa entender o conceito de memória virtual.

Quando um processo solicitando mapeamento de 2 GB na memória virutal no ambiente Linux de 4 GB (1 GB de Kernel: 3 GB de espaço de usuário), quando outro processo já contém o mapeamento de 2 GB.

Como o mapeamento da pilha, do heap e dos segmentos de dados vai acontecer? Não consigo encontrar nenhum exemplo para o meu entendimento. O livro de texto menciona apenas separadamente para cada mapeamento, mas não uma abordagem prática.

    
por Madara 16.06.2015 / 08:41

1 resposta

1

Vamos supor que temos 3 GiB de espaço de endereço virtual disponíveis e que os mapeamentos de texto, pilha, heap e memória anterior de um processo juntos ocupem apenas uma pequena quantidade de espaço de endereço (muito menos que 1 GiB). Então, se esse processo solicitar um mapeamento de tamanho de 2 GB, não haverá problema, pois há muito espaço para acomodar esse mapeamento.

(Na verdade, haveria um pequeno caso em que isso não é verdade: se os mapeamentos existentes do processo estivessem fragmentados e espalhados pelo espaço de endereço e não houvesse um intervalo de endereços de 2GB contíguos disponíveis. Mas isso é improvável).

Quais mapeamentos estão ou não estão presentes em um espaço de endereço de processo diferente? não tem nada a ver com isso.

    
por 16.06.2015 / 10:44