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 -

  1. Alocação de memória contígua
  2. Alocação de memória não contígua 

A alocação de memória contígua pode ser categorizada de duas maneiras:

  1. Esquema de partição fixa
  2. Esquema de partição variável.

Diferentes métodos de alocação de partição são usados ​​em alocações de memória contígua -

  1. Primeiro ajuste
  2. Melhor ajuste 
  3. Pior Ajuste
  4. Próximo ajuste

A alocação de memória não contígua pode ser categorizada de várias maneiras:

  1. Paging
  2. Paginação multinível
  3. Paginação invertida
  4. Segmentação
  5. Paginação segmentada

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 
Esquema MMU

Relocação dinâmica usando um registro de realocação.

  1. A CPU gerará um endereço lógico para, por exemplo: 346
  2. A MMU irá gerar um registro de realocação (registro de base) para, por exemplo: 14000
  3. 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 - 

  1. Registro de base (registro de realocação) 
  2. 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.