Técnicas de alocação de memória | Mapeamento de endereços virtuais para endereços físicos
Pré-requisito: Requisitos do Sistema de Gerenciamento de Memória , Endereço Lógico e Físico
Técnicas de alocação de memória:
Para armazenar os dados e gerenciar os processos, precisamos de uma memória de grande porte e, ao mesmo tempo, precisamos acessar os dados o mais rápido possível. Mas se aumentarmos o tamanho da memória, o tempo de acesso também aumentará e, como sabemos, a CPU sempre gera endereços para a memória secundária, ou seja, endereços lógicos. Mas queremos acessar a memória principal, então precisamos da tradução de endereços de endereços lógicos em endereços físicos.
A memória principal interage com os processos do usuário e com o sistema operacional. Portanto, precisamos usar a memória principal com eficiência. A memória principal é dividida em regiões de memória não sobrepostas chamadas de partições.
A memória principal pode ser amplamente alocada de duas maneiras -
A alocação de memória contígua pode ser categorizada de duas maneiras:
Diferentes métodos de alocação de partição são usados em alocações de memória contígua -
A alocação de memória não contígua pode ser categorizada de várias maneiras:
MMU (Memory Management Unit):
O mapeamento de tempo de execução entre o endereço virtual e o endereço físico é feito por um dispositivo de hardware conhecido como MMU.
No gerenciamento de memória, o sistema operacional tratará dos processos e moverá os processos entre o disco e a memória para execução. Ele mantém um registro da memória disponível e usada.
Esquema MMU:
CPU------- MMU------Memory
Relocação dinâmica usando um registro de realocação.
- A CPU gerará um endereço lógico para, por exemplo: 346
- A MMU irá gerar um registro de realocação (registro de base) para, por exemplo: 14000
- Na memória, o endereço físico está localizado, por exemplo: (346 + 14000 = 14346)
O valor no registro de relocação é adicionado a cada endereço gerado por um processo do usuário no momento em que o endereço é enviado para a memória. O programa do usuário nunca vê os endereços físicos reais. O programa pode criar um ponteiro para a localização 346, armazená-lo na memória, manipulá-lo e compará-lo com outros endereços - todos como o número 346.
O programa do usuário gera apenas endereços lógicos. No entanto, esses endereços lógicos devem ser mapeados para endereços físicos antes de serem usados.
Ligação de endereço: a ligação de
endereço é o processo de mapeamento de um espaço de endereço para outro espaço de endereço. O endereço lógico é um endereço gerado pela CPU durante a execução, enquanto o endereço físico se refere à localização na unidade de memória (aquela que é carregada na memória). O endereço lógico é traduzido pela MMU ou unidade de tradução de endereços em particular. A saída desse processo é o endereço físico apropriado ou a localização do código / dados na RAM.
Uma vinculação de endereço pode ser feita de três maneiras diferentes:
Tempo de compilação -
se você souber que durante o tempo de compilação, onde o processo residirá na memória, um endereço absoluto será gerado. ou seja, o endereço físico é incorporado ao executável do programa durante a compilação. Carregar o executável como um processo na memória é muito rápido. Mas se o espaço de endereço gerado estiver ocupado por outros processos, o programa trava e é necessário recompilar o programa para alterar o espaço de endereço.
Tempo de carregamento -
Se não for conhecido no momento da compilação onde o processo residirá, um endereço relocável será gerado. O carregador traduz o endereço realocável em um endereço absoluto. O endereço básico do processo na memória principal é adicionado a todos os endereços lógicos pelo carregador para gerar um endereço absoluto. Nesse caso, se o endereço base do processo mudar, precisamos recarregar o processo novamente.
Tempo de execução -
As instruções estão na memória e sendo processadas pela CPU. Memória adicional pode ser alocada e / ou desalocada neste momento. Isso é usado se um processo pode ser movido de uma memória para outra durante a execução (vinculação dinâmica que é feita durante o carregamento ou tempo de execução). por exemplo - Compactação.
Mapeamento de endereços virtuais para endereços físicos:
No mapeamento de alocação de memória contígua de endereços virtuais para endereços físicos não é uma tarefa difícil, porque se pegarmos um processo da memória secundária e copiá-lo para a memória principal, os endereços serão armazenados de forma contígua , então, se soubermos o endereço base do processo, podemos descobrir os próximos endereços.
A Unidade de Gerenciamento de Memória é uma combinação de 2 registros -
- Registro de base (registro de realocação)
- Limite de registro.
Base Register - contém o endereço físico inicial do processo.
Registro de Limite - menciona o limite relativo ao endereço base na região ocupada pelo processo.
O endereço lógico gerado pela CPU é primeiro verificado pelo registro de limite. Se o valor do endereço lógico gerado for menor que o valor do registro de limite, o endereço base armazenado no registro de relocação é adicionado ao endereço lógico para obter o endereço físico do local da memória.
Se o valor do endereço lógico for maior do que o registro de limite, a CPU fará um trap para o sistema operacional, e o sistema operacional encerrará o programa fornecendo um erro fatal.
Na alocação de memória não contígua, os processos podem ser alocados em qualquer lugar no espaço disponível. A tradução de endereços em alocação de memória não contígua é difícil.
Existem várias técnicas utilizadas para tradução de endereços na alocação de memória não contíguo como paginação , Multitlevel paginação , paginação invertido , segmentação , paginação segmentada . Diferentes estruturas de dados e suporte de hardware como TLB são necessários nessas técnicas.
Aprenda todos os conceitos do GATE CS com aulas gratuitas ao vivo em nosso canal do youtube.
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva