Recomendado, 2024

Escolha Do Editor

Diferença entre alocação de memória contígua e não contígua

Memória é uma grande matriz de bytes, onde cada byte tem seu próprio endereço. A alocação de memória pode ser classificada em dois métodos: alocação de memória contígua e alocação de memória não contígua. A principal diferença entre alocação de memória contígua e não-contígua é que a alocação de memória contígua atribui os blocos consecutivos de memória a um processo solicitando memória, enquanto a alocação de memória não - contígua atribui os blocos de memória separados no local diferente no espaço de memória de forma não consecutiva um processo solicitando memória. Discutiremos mais algumas diferenças entre alocação de memória contígua e não contígua com a ajuda do gráfico de comparação mostrado abaixo.

Gráfico de comparação

Bases a comparaçãoAlocação de Memória ContíguaAlocação de Memória Não Contígua
BasicAloca blocos consecutivos de memória para um processo.Aloca blocos separados de memória para um processo.
Despesas geraisA alocação de memória contígua não tem a sobrecarga de conversão de endereços durante a execução de um processo.Alocação de memória não-contígua tem sobrecarga de conversão de endereços durante a execução de um processo.
Taxa de execuçãoUm processo executa o fatser na alocação de memória contíguaUm processo é executado de forma relativamente mais lenta na alocação de memória não contígua.
SoluçãoO espaço de memória deve ser dividido na partição de tamanho fixo e cada partição é alocada para um único processo.Divida o processo em vários blocos e coloque-os em diferentes partes da memória de acordo com a disponibilidade de espaço de memória disponível.
MesaUma tabela é mantida pelo sistema operacional que mantém a lista de partições disponíveis e ocupadas no espaço de memóriaUma tabela deve ser mantida para cada processo que transporta os endereços base de cada bloco que foi adquirido por um processo na memória.

Definição de alocação de memória contígua

O sistema operacional e os processos do usuário devem ser acomodados na memória principal. Portanto, a memória principal é dividida em duas partições: em uma partição, o sistema operacional reside e, em outros, os processos do usuário residem. Em condições usuais, os vários processos do usuário devem residir na memória ao mesmo tempo e, portanto, é importante considerar a alocação de memória para os processos.

A alocação de memória contígua é um dos métodos de alocação de memória. Na alocação de memória contígua, quando um processo solicita a memória, uma única seção contígua de blocos de memória é atribuída ao processo de acordo com seu requisito.

A alocação de memória contígua pode ser obtida dividindo a memória na partição de tamanho fixo e alocando cada partição a um único processo. Mas isso causará o grau de multiprogramação, limitando ao número de partições fixas feitas na memória. A alocação de memória contígua também leva à fragmentação interna . Da mesma forma, se um bloco de memória de tamanho fixo alocado para um processo é um pouco maior que seu requisito, então o espaço de memória à esquerda no bloco é chamado de fragmentação interna. Quando o processo que reside na partição termina, a partição fica disponível para o outro processo.

No esquema de particionamento variável, o sistema operacional mantém uma tabela que indica qual partição da memória está livre e qual ocupa os processos. A alocação de memória contígua fixa a execução de um processo reduzindo as sobrecargas de tradução de endereço.

Definição Alocação de Memória Não Contígua

A alocação de memória não contígua permite que um processo adquira os vários blocos de memória na localização diferente na memória de acordo com seu requisito. A alocação de memória não-contígua também reduz o desperdício de memória causado devido à fragmentação interna e externa. Como utiliza os buracos de memória, criados durante a fragmentação interna e externa.

Paginação e segmentação são as duas maneiras que permitem que o espaço de endereço físico de um processo seja não contíguo. Na alocação de memória não contígua, o processo é dividido em blocos (páginas ou segmentos) que são colocados na área diferente do espaço de memória de acordo com a disponibilidade da memória.

A alocação de memória não-contígua tem a vantagem de reduzir o desperdício de memória, mas aumenta as sobrecargas de tradução de endereços. Como as partes do processo são colocadas em um local diferente na memória, isso atrasa a execução da memória porque o tempo é consumido na conversão de endereços.

Aqui, o sistema operacional precisa manter a tabela para cada processo que contém o endereço base de cada bloco que é adquirido pelo processo no espaço de memória.

Principais diferenças entre alocação de memória contígua e não contígua

  1. A diferença básica entre alocação de memória contígua e não contígua é que alocação contígua aloca um único bloco contíguo de memória ao processo enquanto, a alocação não contígua divide o processo em vários blocos e os coloca no espaço de endereço diferente da memória, ou seja, de uma maneira não contígua .
  2. Na alocação de memória contígua, o processo é armazenado no espaço de memória contíguo; Portanto, não há sobrecarga de tradução de endereços durante a execução. Porém, na alocação de memória não-contígua, há uma sobrecarga de conversão de endereço durante a execução do processo, pois os blocos de processo estão espalhados no espaço da memória.
  3. O processo armazenado na memória contígua é executado mais rapidamente em comparação com o processo armazenado no espaço de memória não contíguo.
  4. A solução para alocação de memória contígua é dividir o espaço da memória na partição de tamanho fixo e alocar uma partição em um único processo. Por outro lado, na alocação de memória não-contígua, um processo é dividido em vários blocos e cada bloco é colocado em diferentes lugares na memória de acordo com a disponibilidade da memória.
  5. Na alocação de memória contígua, o sistema operacional deve manter uma tabela que indica qual partição está disponível para o processo e qual é ocupada pelo processo. Na alocação de memória não-contígua, uma tabela é mantida para cada processo que indica o endereço base de cada bloco do processo colocado no espaço de memória.

Conclusão:

A alocação de memória contígua não cria nenhuma sobrecarga e fixa a velocidade de execução do processo, mas aumenta o desperdício de memória . Por sua vez, a alocação de memória não-contígua cria overheads de conversão de endereços, reduz a velocidade de execução de um processo, mas aumenta a utilização da memória . Portanto, existem prós e contras de ambos os métodos de alocação.

Top