Os métodos de gerenciamento de memória com alocação dinâmica são os

O termo Memória pode ser definido como uma coleção de dados em um formato específico. É usado para armazenar instruções e dados processados. A memória compreende uma grande array ou grupo de palavras ou bytes, cada um com sua própria localização. O motivo principal de um sistema de computador é executar programas. Esses programas, junto com as informações que acessam, devem estar na memória principal durante a execução. A CPU busca instruções da memória de acordo com o valor do contador do programa. 

Para atingir um grau de multiprogramação e utilização adequada da memória, o gerenciamento da memória é importante. Existem muitos métodos de gerenciamento de memória, refletindo várias abordagens, e a eficácia de cada algoritmo depende da situação. 

Aqui, cobriremos os seguintes tópicos de gerenciamento de memória:                                          

  • O que é a memória principal
  • O que é gerenciamento de memória
  • Por que o gerenciamento de memória é necessário
  • Espaço de endereço lógico e espaço de endereço físico
  • Carregamento estático e dinâmico
  • Vinculação estática e dinâmica
  • Troca
  • Alocação de memória contígua
    • Alocação de memória
      • Primeiro ajuste
      • Melhor ajuste
      • Pior Ajuste
    • Fragmentação
      • Fragmentação Interna
      • Fragmentação Externa
    • Paging

Agora antes, vamos começar o gerenciamento de memória, vamos saber sobre o que é memória principal.

O que é memória principal:

A memória principal é fundamental para a operação de um computador moderno. A memória principal é uma grande variedade de palavras ou bytes, variando em tamanho de centenas de milhares a bilhões. A memória principal é um repositório de informações rapidamente disponíveis compartilhadas pela CPU e dispositivos de E / S. A memória principal é o local onde os programas e as informações são mantidos quando o processador os está utilizando efetivamente. A memória principal está associada ao processador, portanto, mover instruções e informações para dentro e para fora do processador é extremamente rápido. A memória principal também é conhecida como RAM (Random Access Memory). Esta memória é uma memória volátil. A RAM perdeu seus dados quando ocorreu uma interrupção de energia.

Os métodos de gerenciamento de memória com alocação dinâmica são os

Figura 1: Hierarquia de memória

 

O que é gerenciamento de memória:

Em um computador com multiprogramação, o sistema operacional reside em uma parte da memória e o resto é usado por vários processos. A tarefa de subdividir a memória entre diferentes processos é chamada de gerenciamento de memória. O gerenciamento de memória é um método no sistema operacional para gerenciar as operações entre a memória principal e o disco durante a execução do processo. O principal objetivo do gerenciamento de memória é obter uma utilização eficiente da memória.  

Por que o gerenciamento de memória é necessário:

  • Alocar e desalocar memória antes e depois da execução do processo.
  • Para controlar o espaço de memória usado por processos.
  • Para minimizar os problemas de fragmentação.
  • Para a utilização adequada da memória principal.
  • Para manter a integridade dos dados durante a execução do processo.

Agora estamos discutindo o conceito de espaço de endereço lógico e espaço de endereço físico: 

Espaço de endereçamento lógico e físico:

Espaço de endereço lógico: Um endereço gerado pela CPU é conhecido como “Endereço lógico”. Também é conhecido como endereço virtual. O espaço de endereço lógico pode ser definido como o tamanho do processo. Um endereço lógico pode ser alterado.

Espaço de endereço físico: um endereço visto pela unidade de memória (ou seja, aquele carregado no registro de endereço de memória da memória) é comumente conhecido como “Endereço físico”. Um endereço físico também é conhecido como endereço real. O conjunto de todos os endereços físicos correspondentes a esses endereços lógicos é conhecido como espaço de endereço físico. Um endereço físico é calculado por MMU. O mapeamento de tempo de execução de endereços virtuais para físicos é feito por um dispositivo de hardware Memory Management Unit (MMU). O endereço físico sempre permanece constante.

Carregamento estático e dinâmico:

O carregamento de um processo na memória principal é feito por um carregador. Existem dois tipos diferentes de carregamento:

  • Carregamento estático : - No carregamento estático, carregue o programa inteiro em um endereço fixo. Requer mais espaço de memória.
  • Carregamento dinâmico : - Todo o programa e todos os dados de um processo devem estar na memória física para que o processo seja executado. Portanto, o tamanho de um processo é limitado ao tamanho da memória física. Para obter a utilização adequada da memória, o carregamento dinâmico é usado. No carregamento dinâmico, uma rotina não é carregada até que seja chamada. Todas as rotinas residem no disco em um formato de carregamento relocável. Uma das vantagens do carregamento dinâmico é que a rotina não utilizada nunca é carregada. Esse carregamento é útil quando uma grande quantidade de código é necessária para manipulá-lo com eficiência.

 Vinculação estática e dinâmica:

Para realizar uma tarefa de vinculação, um vinculador é usado. Um vinculador é um programa que pega um ou mais arquivos-objeto gerados por um compilador e os combina em um único arquivo executável.

  • Vinculação estática: Na vinculação estática, o vinculador combina todos os módulos de programa necessários em um único programa executável. Portanto, não há dependência de tempo de execução. Alguns sistemas operacionais suportam apenas links estáticos, nos quais as bibliotecas de linguagem do sistema são tratadas como qualquer outro módulo de objeto.
  • Link dinâmico: O conceito básico de link dinâmico é semelhante ao carregamento dinâmico. Na vinculação dinâmica, “Stub” é incluído para cada referência de rotina de biblioteca apropriada. Um esboço é um pequeno trecho de código. Quando o stub é executado, ele verifica se a rotina necessária já está na memória ou não. Se não estiver disponível, o programa carrega a rotina na memória.

Troca:

Quando um processo é executado, ele deve residir na memória. Permuta é um processo de troca de um processo temporariamente para uma memória secundária da memória principal, que é rápido, em comparação com a memória secundária. Uma troca permite que mais processos sejam executados e cabem na memória de uma vez. A parte principal da troca é o tempo de transferência e o tempo total diretamente proporcional à quantidade de memória trocada. A troca também é conhecida como roll-out , roll in, porque se um processo de prioridade mais alta chega e deseja serviço, o gerenciador de memória pode trocar o processo de prioridade mais baixa e, em seguida, carregar e executar o processo de prioridade mais alta. Depois de terminar o trabalho de alta prioridade,o processo de prioridade mais baixa foi trocado de volta na memória e continuou com o processo de execução.  

Os métodos de gerenciamento de memória com alocação dinâmica são os

 Alocação de memória contígua:

A memória principal deve obrigar tanto o sistema operacional quanto os diferentes processos do cliente. Portanto, a alocação de memória torna-se uma tarefa importante no sistema operacional. A memória geralmente é dividida em duas partições: uma para o sistema operacional residente e outra para os processos do usuário. Normalmente, precisamos que vários processos do usuário residam na memória simultaneamente. Portanto, precisamos considerar como alocar a memória disponível para os processos que estão na fila de entrada esperando para serem trazidos para a memória. Na distribuição de memória adjacente, cada processo está contido em um único segmento contíguo de memória.  

Os métodos de gerenciamento de memória com alocação dinâmica são os

Alocação de memória:

Para obter a utilização adequada da memória, a alocação de memória deve ser alocada de maneira eficiente. Um dos métodos mais simples de alocar memória é dividir a memória em várias partições de tamanho fixo e cada partição contém exatamente um processo. Assim, o grau de multiprogramação é obtido pelo número de partições. 

Alocação de múltiplas partições : neste método, um processo é selecionado da fila de entrada e carregado na partição livre. Quando o processo termina, a partição fica disponível para outros processos. 

Alocação de partição fixa: neste método, o sistema operacional mantém uma tabela que indica quais partes da memória estão disponíveis e quais são ocupadas por processos. Inicialmente, toda a memória está disponível para os processos do usuário e é considerada um grande bloco de memória disponível. Esta memória disponível é conhecida como “Furo”. Quando o processo chega e precisa de memória, procuramos um buraco que seja grande o suficiente para armazenar esse processo. Se o requisito for atendido, alocamos memória para processar, caso contrário, manteremos o restante disponível para atender a requests futuras. Durante a alocação de uma memória, às vezes ocorrem problemas de alocação de armazenamento dinâmico, que dizem respeito a como satisfazer uma solicitação de tamanho n de uma lista de buracos livres. Existem algumas soluções para este problema:

Primeiro ajuste: - 

No primeiro ajuste, o primeiro orifício livre disponível atende ao requisito do processo alocado. 

Os métodos de gerenciamento de memória com alocação dinâmica são os

Aqui, neste diagrama, o bloco de memória de 40 KB é o primeiro orifício livre disponível que pode armazenar o processo A (tamanho de 25 KB), porque os primeiros dois blocos não tinham espaço de memória suficiente.

 Melhor ajuste: -

No melhor ajuste, aloque o menor orifício que seja grande o suficiente para processar os requisitos. Para isso, pesquisamos a lista inteira, a menos que a lista seja ordenada por tamanho. 

Os métodos de gerenciamento de memória com alocação dinâmica são os

Aqui neste exemplo, primeiro percorremos a lista completa e descobrimos que o último furo de 25 KB é o furo mais adequado para o Processo A (tamanho 25 KB).

Neste método, a utilização da memória é máxima em comparação com outras técnicas de alocação de memória.

Pior ajuste: - No pior ajuste, aloque o maior furo disponível para processar. Este método produz o maior furo restante. 

Os métodos de gerenciamento de memória com alocação dinâmica são os

Aqui neste exemplo, o Processo A (tamanho 25 KB) é alocado para o maior bloco de memória disponível, que é 60 KB. A utilização ineficiente da memória é um grande problema no pior ajuste.

Fragmentação:

Uma fragmentação é definida como quando o processo é carregado e removido após a execução da memória, ele cria um pequeno buraco livre. Esses buracos não podem ser atribuídos a novos processos porque os buracos não são combinados ou não atendem ao requisito de memória do processo. Para atingir um certo grau de multiprogramação, devemos reduzir o desperdício de memória ou o problema de fragmentação. No sistema operacional, dois tipos de fragmentação:

Fragmentação interna: 

A fragmentação interna ocorre quando os blocos de memória são alocados para o processo mais do que seu tamanho solicitado. Devido a isso, algum espaço não utilizado sobra e cria um problema de fragmentação interna.

 Exemplo: Suponha que haja um particionamento fixo usado para alocação de memória e diferentes tamanhos de bloco de 3 MB, 6 MB e 7 MB de espaço na memória. Agora vem um novo processo p4 de tamanho 2 MB e demanda pelo bloco de memória. Ele obtém um bloco de memória de 3 MB, mas a memória do bloco de 1 MB é um desperdício e não pode ser alocada para outros processos também. Isso é chamado de fragmentação interna.

Fragmentação externa:

Na fragmentação externa, temos um bloco de memória livre, mas não podemos atribuí-lo ao processo porque os blocos não são contíguos.

Exemplo: Suponha (considere o exemplo acima) três processos p1, p2, p3 vêm com tamanhos de 2 MB, 4 MB e 7 MB, respectivamente. Agora eles recebem blocos de memória de 3 MB, 6 MB e 7 MB alocados respectivamente. Depois de alocar o processo, o processo p1 e o processo p2 ficaram com 1 MB e 2 MB. Suponha que um novo processo p4 venha e exija um bloco de memória de 3 MB, que está disponível, mas não podemos atribuí-lo porque o espaço de memória livre não é contíguo. Isso é chamado de fragmentação externa.

Tanto o primeiro como o sistema de melhor ajuste para alocação de memória afetada pela fragmentação externa. Para superar o problema de fragmentação externa, a compactação é usada. Na técnica de compactação, todo o espaço de memória livre se combina e forma um grande bloco. Portanto, este espaço pode ser utilizado por outros processos de forma eficaz.

Outra solução possível para a fragmentação externa é permitir que o espaço de endereço lógico dos processos seja não contíguo, permitindo assim que um processo seja alocado na memória física sempre que esta estiver disponível.

 Paging:

Paging é um esquema de gerenciamento de memória que elimina a necessidade de alocação contígua de memória física. Este esquema permite que o espaço de endereço físico de um processo seja não contíguo.

  • Endereço lógico ou endereço virtual (representado em bits): um endereço gerado pela CPU
  • Espaço de endereço lógico ou espaço de endereço virtual (representado em palavras ou bytes): O conjunto de todos os endereços lógicos gerados por um programa
  • Endereço físico (representado em bits): um endereço realmente disponível em uma unidade de memória
  • Espaço de endereço físico (representado em palavras ou bytes): O conjunto de todos os endereços físicos correspondentes aos endereços lógicos

Exemplo:

  • Se Endereço Lógico = 31 bits, então Espaço de Endereço Lógico = 2 31 palavras = 2 palavras G (1 G = 2 30 )
  • Se Espaço de Endereço Lógico = 128 M palavras = 2 7 * 2 20 palavras, então Endereço Lógico = log 2 2 27 = 27 bits
  • Se Endereço Físico = 22 bits, então Espaço de Endereço Físico = 2 22 palavras = 4 M palavras (1 M = 2 20 )
  • Se Espaço de Endereço Físico = 16 M palavras = 2 4 * 2 20 palavras, então Endereço Físico = log 2 2 24 = 24 bits

O mapeamento do endereço virtual para o físico é feito pela unidade de gerenciamento de memória (MMU), que é um dispositivo de hardware e esse mapeamento é conhecido como técnica de paging.

  • O Espaço de Endereço Físico é conceitualmente dividido em vários blocos de tamanho fixo, chamados quadros .
  • O Espaço de Endereço Lógico também é dividido em blocos de tamanho fixo, chamados de páginas .
  • Tamanho da página = Tamanho do quadro

Vamos considerar um exemplo:

  • Endereço Físico = 12 bits, então Espaço de Endereço Físico = 4 K palavras
  • Endereço lógico = 13 bits, então Espaço de endereço lógico = 8 K palavras
  • Tamanho da página = tamanho do quadro = 1 K palavras (suposição)

Os métodos de gerenciamento de memória com alocação dinâmica são os

O endereço gerado pela CPU é dividido em

  • Número da página (p): Número de bits necessários para representar as páginas no espaço de endereço lógico ou número da página
  • Deslocamento de página (d): Número de bits necessários para representar uma palavra específica em uma página ou tamanho de página do Espaço de Endereço Lógico ou número de palavra de uma página ou deslocamento de página.

O endereço físico é dividido em

  • Número do quadro (f): Número de bits necessários para representar o quadro do Espaço de Endereço Físico ou quadro de número do Quadro
  • Deslocamento de quadro (d): Número de bits necessários para representar uma palavra específica em um quadro ou tamanho de quadro do Espaço de Endereço Físico ou número de palavra de um quadro ou deslocamento de quadro.

A implementação de hardware da tabela de página pode ser feita usando registradores dedicados. Mas o uso de registro para a tabela de páginas é satisfatório apenas se a tabela de páginas for pequena. Se a tabela de páginas contiver um grande número de entradas, podemos usar o TLB (buffer de look-side de tradução), um cache de hardware especial, pequeno e de consulta rápida.

Quais são os métodos de gerenciamento de memória com alocação dinâmica?

Resposta verificada por especialistas. Os métodos de gerenciamento de memória com alocação dinâmica são mencionados na: Alternativa b) Mapa de bits e listas encadeadas.

Quais são principais métodos de alocação de memória?

A alocação estática ocorre quando são declaradas variáveis globais ou estáticas; geralmente alocadas em Data. A alocação automática ocorre quando são declaradas variáveis locais e parâmetros de funções. O espaço para a alocação dessas variáveis é reservado quando a função é invocada, e liberado quando a função termina.

Qual a diferença entre alocação de memória estática e dinâmica?

Na alocação estática, o espaço de memória é definido durante o processo de compilação, já na alocação dinâmica o espaço de memória e reservado durante a execução do programa.

O que é o gerenciamento de memória?

Gerenciamento de Memória (Gerenciamento de Memória) O gerenciador de memória implementa memória virtual, fornece um conjunto principal de serviços, como arquivos mapeados de memória, memória copiada na gravação, suporte à memória grande e suporte subjacente para o gerenciador de cache.