A memória no espaço do usuário é sempre baixa a alta

0

Quero dizer que, se for verdade, são usados os primeiros endereços inferiores e, em seguida, incrementa-se o endereço para acessar um endereço mais alto. Pode ser em ordem inversa?

    
por mrigendra 23.04.2014 / 08:38

1 resposta

1

Você não especificou um contexto exato. Mas isso pode ser respondido para os casos mais comuns (por exemplo, x86):

  • Algum espaço de endereço inicial é reservado para proteção contra acesso à memória na desreferência de ponteiro NULL.
  • Em seguida, a memória é alocada de acordo com as especificações do início do processo e pode ser mesclada entre o carregador de tempo de execução, seus dados, o principal binário, seus dados etc. - tudo isso é geralmente alocado com incrementos nas etapas de tamanho de página da VM. >
  • Em seguida, uma área grande é usada para colocar bibliotecas dinâmicas, alocação de heap baseada em página etc. - novamente, incrementada para alocação. Mas, se o programa for multithreaded, ele alocará pilhas de encadeamentos que são confirmadas em ordem reversa (para a maioria dos processadores, incluindo x86).
  • Em seguida, uma alocação sequencial baseada em sbrk pode ser usada para o heap.
  • Em seguida, a pilha de encadeamentos principal é colocada. As alocações são provavelmente confirmadas em ordem inversa (veja acima).
  • Em seguida, a área do kernel é colocada; a única coisa que um aplicativo deve saber é que ele não acessará essa área sem permissão explícita.

Assim, você provavelmente verá alocações nas duas direções em praticamente todos os programas.

Isso pode ser diferente em outras arquiteturas.

    
por 23.04.2014 / 08:57

Tags