Gerencia de memoria
• Em disco, programas estão no formato binário.
• Deve ser alocado espaço para carga e execução.
• Processos que estão na espera para carga ficam em
“fila de entrada”.
• Os processos podem ser alocados em qualquer parte da memória física. Não necessariamente iniciando na posição 0.
• Para ser carregado, o programa é passado por etapas a fim de montar um esquema de carregamento ou de alocação. Mapeamento de endereços
No programa-fonte, se faz referência simbólica aos endereços (instruções, nomes, estruturas).
A função do compilador é associar tais símbolos a endereços “relocáveis”.
Endereço relocável (referências de apontamento). Ex: reserve X bytes a partir deste “ponto” para uma instrução Y.
O carregador (linkeditor) irá associar os endereços relocáveis a referências absolutas.
Estas fases então servem para criarem-se tais associações. Mapeamento de endereços
Relocação dinâmica
Tempo de compilação
Tempo de carregamento
Outros
Módulo
Objeto
Código
-fonte
Compilador ou assembler Módulo
Objeto
Ligador
Tempo de execução
Módulo
Carregáve
l
Bibilioteca dinâmica Carregador
Imagem em
Memória do
Programa binário
Biblioteca s Mapeamento de endereços
Relocação dinâmica
A associação de endereçamentos pode ocorrer em qualquer etapa da vida de um programa:
◦ Na compilação: Se é conhecimento o endereçamento nesta fase, então um código absoluto é gerado. Referência fixa de posição de memória. Ex: arquivos .COM do ms-dos.
◦ Na carga: é gerado então um código relocável durante a compilação. A associação de endereço ocorrerá durante a carga do programa. Ex: formato objeto - runtime.
◦ Na execução: A alocação é efetuada durante a execução. O processo pode ser movido entre segmentos.
Endereço lógico x físico
•
Endereço lógico: gerado pela CPU.
•
Endereço físico: visto pelo registrador de endereços da memória.
•
Espaço de endereçamento