Sistemas operacionais/Gerência de memória: diferenças entre revisões

[edição verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
m Foram revertidas as edições de 201.72.240.114 (disc) para a última revisão de Marcos Antônio Nunes de Moura
Linha 17:
== Modelo de memória de processos ==
 
Para que um programa seja executado ele precisa ser transformado

em processo(s), assim é necessário alocar o descritor de processos, '''alocar espaço na memória''' para o '''código''' (área conhecida como TEXT, onde se localiza o programa principal, as funções e as bibliotecas estáticas), os '''dados''' (Data, área onde as variáveis são alocadas - globais, locais estáticas, buffers internos)e a '''pilha''' (que possui o HEAP, área onde se localiza as variáveis dinâmicas, e o STACK, endereços de retorno de chamadas e parâmetros de funções).
 
A atribuição de endereço físico para as áreas de código e áreas de dados pode ser feita de três formas: em tempo de compilação, em tempo de carga e em tempo de execução. Em tempo de compilação o programador já faz a conversão de endereço lógico em endereço físico, pois ele tem conhecimento de qual área da memória ira utilizar. Em tempo de carga o código precisa ser relocável de forma que todas as referências a memória sejam corrigidas para que o endereço de carga corresponda (carregador relocador), em outras palavras no momento da carga o programa executável é interpretado e os endereços corrigidos, dispensando a MMU. Em tempo de execução tem-se o código absoluto e é realizada uma relocação dinâmica usando a MMU, não sendo necessário corrigir os endereços no momento da carga do programa em memória.