Please enable JavaScript.
Coggle requires JavaScript to display documents.
Uso da memória - Coggle Diagram
Uso da memória
Alocação de variáveis
Alocação automática
Por default, as variáveis definidas dentro de uma função (variáveis locais e parâmetros) são alocadas de forma automática na pilha de execução do programa (seção STACK).
Alocação dinâmica
Na alocação dinâmica de memória, o processo requisita explicitamente blocos de memória para armazenar dados, os utiliza e depois os libera, quando não forem mais necessários (ou quando o programa encerrar).
Alocação estática
Na alocação estática, o espaço necessário para a variável é definido durante a compilação do programa. O espaço correspondente em memória RAM é reservado no início da execução do processo e mantido até o encerramento deste
-
A memória de um processo
Cada processo é implementado pelo sistema operacional como uma “cápsula” de memória isolada dos demais processos, ou seja, uma área de memória exclusiva que só o próprio processo e o núcleo do sistema podem acessar
DATA
esta seção contém as variáveis estáticas inicializadas, ou seja, variáveis que estão definidas do início ao fim da execução do processo e cujo valor inicial é declarado no código-fonte do programa.
BSS
historicamente chamada de Block Started by Symbol, esta seção contém as variáveis estáticas não-inicializadas.
TEXT
contém o código binário a ser executado pelo processo, gerado durante a compilação e a ligação com as bibliotecas e armazenado no arquivo executável.
HEAP
esta seção é usada para armazenar variáveis alocadas dinamicamente, usando operadores como malloc(), new() e similares.
STACK
esta seção é usada para manter a pilha de execução do processo, ou seja, a estrutura responsável por gerenciar o fluxo de execução nas chamadas de função e também para armazenar os parâmetros, variáveis locais e o valor de retorno das funções.
Atribuição de endereços
Ao escrever um programa usando uma linguagem de programação, como C, C++ ou Java, o programador usa nomes para referenciar entidades abstratas como variáveis, funções, parâmetros e valores de retorno.
Na ligação
na fase de compilação, o compilador traduz o código fonte em código binário, mas não define os endereços das variáveis e funções, gerando como saída um arquivo objeto
Na carga
também é possível definir os endereços de variáveis e de funções durante a carga do código em memória para o lançamento de um novo processo.
Na compilação
ao traduzir o código-fonte, o compilador escolhe as posições das variáveis na memória.
Na execução
os endereços emitidos pelo processador durante a execução do processo são analisados e convertidos nos endereços efetivos a serem acessados na memória real.
-