Alocação de memória contígua

Definição - O que significa Alocação Contígua de Memória?

A alocação de memória contígua é um modelo clássico de alocação de memória. Aqui, um sistema atribui blocos de memória consecutivos (ou seja, blocos de memória com endereços consecutivos) a um processo.

A alocação de memória contígua é um dos métodos de alocação de memória mais antigos. Funciona assim: quando um processo precisa ser executado, a memória é solicitada pelo processo. O tamanho do processo é comparado com a quantidade de memória principal contígua disponível para executar o processo.

Se for encontrada memória contígua suficiente, a memória é alocada e o processo inicia sua execução. Caso contrário, o processo é adicionado a uma fila de processos em espera até que haja memória contígua livre suficiente disponível.

Definirtec explica a alocação de memória contígua

A alocação de memória contígua pode ser implementada em sistemas operacionais com a ajuda de dois registradores, conhecidos como registradores base e limite.

Quando um processo está executando na memória principal, seu registro base contém o endereço inicial do local da memória onde o processo está sendo executado, enquanto a quantidade de bytes consumidos pelo processo é armazenada no registro limite.

Um processo não se refere diretamente ao endereço real de um local de memória correspondente. Em vez disso, ele usa um endereço relativo em relação ao seu registro base. Todos os endereços referidos por um programa são considerados endereços virtuais. A CPU gera o endereço lógico ou virtual, que é convertido em um endereço real com a ajuda da unidade de gerenciamento de memória (MMU).

O registro de endereço de base é usado para tradução de endereço pela MMU. Assim, um endereço físico é calculado da seguinte forma:

Endereço físico = endereço de registro de base + endereço lógico / endereço virtual

O endereço de qualquer local de memória referenciado por um processo é verificado para garantir que não se refira a um endereço de um processo vizinho. Essa segurança de processamento é controlada pelo sistema operacional subjacente.

Benefícios e desvantagens da alocação contígua de memória

Outra maneira de entender a alocação de memória contínua é contrastá-la com seu método oposto: alocação de memória não contígua. Na alocação de memória não contígua, a memória não precisa ser atribuída em blocos contíguos de endereços.

Em contraste com a alocação de memória não contígua, a alocação de memória contígua tem alguns benefícios distintos. Ele tende a ser mais rápido de executar, mais fácil para o sistema operacional manipular e geralmente envolve menos sobrecarga.

No entanto, também existem desvantagens na alocação de memória contígua. Um dos principais é que a memória pode ser desperdiçada dessa forma, se as menores quantidades de memória não forem utilizadas devido à necessidade de blocos de memória contíguos. Além disso, os processos podem esperar mais para execução, porque o bloco contíguo não está prontamente acessível.

Alocação de pilha e pilha

A alocação de memória contígua também é interessante no contexto de várias técnicas de alocação de memória. Por exemplo, os especialistas costumam contrastar dois tipos de alocação de memória conhecidos como "alocação de pilha" e "alocação de pilha".

Na alocação de pilha, a alocação de memória é pré-organizada e implementada durante a compilação, onde a alocação de heap é feita posteriormente no tempo de execução.

É importante observar que a alocação de pilha geralmente assume a forma de alocação de memória contígua, onde a alocação de memória é atribuída em blocos. Por outro lado, na alocação de heap, a alocação de memória contígua é difícil, porque o sistema precisa encontrar, não apenas memória suficiente, mas também memória que está em um bloco contíguo grande o suficiente. Como resultado, a alocação de heap geralmente é uma alocação de memória não contígua.

Os especialistas também falam sobre métodos de alocação de memória estática e dinâmica e como implementá-los usando métodos de alocação de memória contígua ou não contígua.