O que acontece quando um programa precisa de mais memória do que o inicialmente atribuído a ele?

1

De esta palestra da Simon Fraser University, o que eu entendo é que cada processo Obtém um espaço de endereço virtual alocado para ele pelo sistema operacional. Aqui está uma questão hipotética baseada nisso. Suponha que, para um programa, o espaço de endereço virtual alocado seja de 100 a 200. Agora a pilha cresce de 200 para baixo e se acumula de 120 para cima. Agora, se o programa exigir mais espaço, o SO alocará o endereço de algo como 400 a 900 e depois copiará os dados do espaço de endereço antigo para o novo?

    
por Foo 05.08.2013 / 04:31

1 resposta

1

A pilha cresce e a pilha cresce, o espaço entre elas é conhecido como 'buraco'. Espaços de endereço geralmente esparsos são usados para manter buracos para crescimento e DLLs. Geralmente, o sistema operacional é bom para alocar inicialmente a quantidade adequada de espaço, mas se eu me lembrar de um sistema de paginação sob demanda, ele teria que fazer uma substituição de página. Como isso depende de qual algoritmo é usado (existem alguns). Isso dará ao programa um quadro maior de memória virtual para trabalhar, portanto, em termos básicos, você está correto.

    
por 05.08.2013 / 16:24