Neste artigo, entenderemos detalhadamente o gerenciamento de memória.
O que você quer dizer com gerenciamento de memória?
A memória é a parte importante do computador usada para armazenar os dados. Seu gerenciamento é fundamental para o sistema computacional porque a quantidade de memória principal disponível em um sistema computacional é muito limitada. A qualquer momento, muitos processos competem por isso. Além disso, para aumentar o desempenho, vários processos são executados simultaneamente. Para isso devemos manter vários processos na memória principal, por isso é ainda mais importante gerenciá-los de forma eficaz.
Papel do gerenciamento de memória
A seguir estão as funções importantes do gerenciamento de memória em um sistema de computador:
- O gerenciador de memória é usado para monitorar o status dos locais de memória, estejam eles livres ou alocados. Ele aborda a memória primária fornecendo abstrações para que o software perceba que uma grande memória está alocada para ele.
- O gerenciador de memória permite que computadores com uma pequena quantidade de memória principal executem programas maiores que o tamanho ou a quantidade de memória disponível. Ele faz isso movendo informações entre a memória primária e a memória secundária usando o conceito de troca.
- O gerenciador de memória é responsável por proteger a memória alocada para cada processo contra corrupção de outro processo. Se isso não for garantido, o sistema poderá apresentar um comportamento imprevisível.
- Os gerenciadores de memória devem permitir o compartilhamento de espaço de memória entre processos. Assim, dois programas podem residir no mesmo local de memória, embora em momentos diferentes.
Técnicas de gerenciamento de memória:
As técnicas de gerenciamento de memória podem ser classificadas nas seguintes categorias principais:
- Esquemas de gerenciamento de memória contígua
- Esquemas de gerenciamento de memória não contígua
Esquemas de gerenciamento de memória contígua:
Num esquema de gerenciamento de memória contígua, cada programa ocupa um único bloco contíguo de locais de armazenamento, ou seja, um conjunto de locais de memória com endereços consecutivos.
Esquemas únicos de gerenciamento de memória contígua:
O esquema de gerenciamento de memória contíguo único é o esquema de gerenciamento de memória mais simples usado na primeira geração de sistemas de computador. Neste esquema, a memória principal é dividida em duas áreas ou partições contíguas. Os sistemas operacionais residem permanentemente em uma partição, geralmente na memória inferior, e o processo do usuário é carregado na outra partição.
Vantagens de esquemas únicos de gerenciamento de memória contígua:
- Simples de implementar.
- Fácil de gerenciar e projetar.
- Em um esquema de gerenciamento de memória contíguo único, uma vez que um processo é carregado, ele recebe o tempo total do processador e nenhum outro processador o interromperá.
Desvantagens dos esquemas únicos de gerenciamento de memória contígua:
- Desperdício de espaço de memória devido à memória não utilizada, pois é improvável que o processo use todo o espaço de memória disponível.
- A CPU permanece ociosa, aguardando que o disco carregue a imagem binária na memória principal.
- Ele não pode ser executado se o programa for muito grande para caber em todo o espaço disponível na memória principal.
- Não suporta multiprogramação, ou seja, não pode lidar com vários programas simultaneamente.
Particionamento múltiplo:
O esquema único de gerenciamento de memória contígua é ineficiente, pois limita os computadores a executar apenas um programa por vez, resultando em desperdício de espaço de memória e tempo de CPU. O problema do uso ineficiente da CPU pode ser superado usando multiprogramação que permite que mais de um programa seja executado simultaneamente. Para alternar entre dois processos, os sistemas operacionais precisam carregar ambos os processos na memória principal. O sistema operacional precisa dividir a memória principal disponível em várias partes para carregar vários processos na memória principal. Assim, vários processos podem residir na memória principal simultaneamente.
Os esquemas de particionamento múltiplo podem ser de dois tipos:
tutoriais java
- Particionamento Fixo
- Particionamento Dinâmico
Particionamento Fixo
A memória principal é dividida em diversas partições de tamanho fixo em um esquema de gerenciamento de memória de partição fixa ou particionamento estático. Essas partições podem ser do mesmo tamanho ou de tamanhos diferentes. Cada partição pode conter um único processo. O número de partições determina o grau de multiprogramação, ou seja, o número máximo de processos na memória. Essas partições são feitas no momento da geração do sistema e permanecem fixas depois disso.
Vantagens dos esquemas de gerenciamento de memória de particionamento fixo:
- Simples de implementar.
- Fácil de gerenciar e projetar.
Desvantagens dos esquemas de gerenciamento de memória de particionamento fixo:
- Este esquema sofre de fragmentação interna.
- O número de partições é especificado no momento da geração do sistema.
Particionamento Dinâmico
O particionamento dinâmico foi projetado para superar os problemas de um esquema de particionamento fixo. Em um esquema de particionamento dinâmico, cada processo ocupa apenas a quantidade de memória necessária quando carregado para processamento. Os processos solicitados recebem memória até que toda a memória física se esgote ou o espaço restante seja insuficiente para conter o processo solicitante. Neste esquema as partições utilizadas são de tamanho variável, e o número de partições não é definido no momento da geração do sistema.
Vantagens dos esquemas de gerenciamento de memória de particionamento dinâmico:
- Simples de implementar.
- Fácil de gerenciar e projetar.
Desvantagens dos esquemas de gerenciamento de memória de particionamento dinâmico:
- Este esquema também sofre de fragmentação interna.
- O número de partições é especificado no momento da segmentação do sistema.
Esquemas de gerenciamento de memória não contígua:
Num esquema de gerenciamento de memória não contíguo, o programa é dividido em diferentes blocos e carregado em diferentes porções da memória que não precisam necessariamente ser adjacentes umas às outras. Este esquema pode ser classificado dependendo do tamanho dos blocos e se os blocos residem ou não na memória principal.
O que é paginação?
A paginação é uma técnica que elimina os requisitos de alocação contígua de memória principal. Neste, a memória principal é dividida em blocos de memória física de tamanho fixo chamados frames. O tamanho de um quadro deve ser mantido igual ao de uma página para maximizar a memória principal e evitar fragmentação externa.
Vantagens da paginação:
- As páginas reduzem a fragmentação externa.
- Simples de implementar.
- Memória eficiente.
- Devido ao tamanho igual dos quadros, a troca torna-se muito fácil.
- É usado para acesso mais rápido aos dados.
O que é segmentação?
A segmentação é uma técnica que elimina os requisitos de alocação contígua de memória principal. Neste, a memória principal é dividida em blocos de memória física de tamanho variável chamados segmentos. Baseia-se na forma como o programador segue para estruturar seus programas. Com a alocação de memória segmentada, cada tarefa é dividida em vários segmentos de tamanhos diferentes, um para cada módulo. Funções, sub-rotinas, pilha, array, etc., são exemplos de tais módulos.