Gerenciamento de memória no sistema operacional: contíguo, troca, fragmentação

O que é gerenciamento de memória?

Gestão de Memória é o processo de controlar e coordenar a memória do computador, atribuindo partes conhecidas como blocos a vários programas em execução para otimizar o desempenho geral do sistema.

É a função mais importante de um sistema operacional que gerencia a memória primária. Ajuda os processos a avançar e retroceder entre a memória principal e o disco de execução. Ajuda o sistema operacional a manter o controle de cada local da memória, independentemente de estar alocado para algum processo ou permanecer livre.

Neste tutorial de sistema operacional, você aprenderá:

Por que usar o gerenciamento de memória?

Aqui estão as razões para usar o gerenciamento de memória:

  • Ele permite que você verifique quanta memória precisa ser alocada para processos que decidem qual processador deve obter memória em que momento.
  • Monitora sempre que o estoque é liberado ou não alocado. De acordo com ele irá atualizar o status.
  • Ele aloca o espaço para rotinas de aplicativos.
  • Certifique-se também de que esses aplicativos não interfiram uns com os outros.
  • Ajuda a proteger processos diferentes uns dos outros
  • Ele coloca os programas na memória para que a memória seja utilizada em toda a sua extensão.

Técnicas de gerenciamento de memória

Aqui estão algumas das técnicas de gerenciamento de memória mais importantes:

Alocação Contígua Única

É a técnica de gerenciamento de memória mais fácil. Neste método, todos os tipos de memória do computador, exceto uma pequena parte que é reservada para o sistema operacional, estão disponíveis para um aplicativo. Por exemplo, o sistema operacional MS-DOS aloca memória dessa maneira. Um sistema embarcado também é executado em um único aplicativo.

Alocação particionada

Ele divide a memória primária em várias partições de memória, que são principalmente áreas contíguas da memória. Cada partição armazena todas as informações para uma tarefa ou trabalho específico. Este método consiste em atribuir uma partição a um trabalho quando ele inicia e desalocar quando termina.

Gerenciamento de memória paginada

Este método divide a memória principal do computador em unidades de tamanho fixo conhecidas como quadros de página. Esta unidade de gerenciamento de memória de hardware mapeia páginas em quadros que devem ser alocados em uma base de página.

Gestão de Memória Segmentada

A memória segmentada é o único método de gerenciamento de memória que não fornece ao programa do usuário um espaço de endereço linear e contíguo.

Os segmentos precisam de suporte de hardware na forma de uma tabela de segmentos. Ele contém o endereço físico da seção na memória, tamanho e outros dados, como bits de proteção de acesso e status.

O que é a troca?

A troca é um método no qual o processo deve ser trocado temporariamente da memória principal para o armazenamento de apoio. Posteriormente, ele será trazido de volta à memória para continuar a execução.

O armazenamento de backup é um disco rígido ou algum outro dispositivo de armazenamento secundário que deve ser grande o suficiente para acomodar cópias de todas as imagens da memória para todos os usuários. Também é capaz de oferecer acesso direto a essas imagens da memória.

Benefícios da troca

Aqui estão os principais benefícios / vantagens da troca:

  • Ele oferece um alto grau de multiprogramação.
  • Permite realocação dinâmica. Por exemplo, se a vinculação de endereço em tempo de execução estiver sendo usada, os processos podem ser trocados em locais diferentes. Caso contrário, no caso de vinculações de tempo de compilação e carregamento, os processos devem ser movidos para o mesmo local.
  • Ajuda a obter uma melhor utilização da memória.
  • Mínimo desperdício de tempo de CPU na conclusão para que possa ser facilmente aplicado a um método de agendamento baseado em prioridade para melhorar seu desempenho.

O que é alocação de memória?

A alocação de memória é um processo pelo qual os programas de computador recebem memória ou espaço.

Aqui, a memória principal é dividida em dois tipos de partições

  1. Memória baixa - O sistema operacional reside neste tipo de memória.
  2. Alta memória - Os processos do usuário são mantidos em alta memória.

Alocação de partição

A memória é dividida em diferentes blocos ou partições. Cada processo é alocado de acordo com o requisito. A alocação de partição é um método ideal para evitar a fragmentação interna.

Abaixo estão os vários esquemas de alocação de partição:

  • Primeiro ajuste : Neste tipo de ajuste, a partição é alocada, que é o primeiro bloco suficiente desde o início da memória principal.
  • Melhor ajuste: Ele aloca o processo para a partição que é a primeira partição menor entre as partições livres.
  • Pior ajuste: Ele aloca o processo para o partição, que é a maior partição disponível gratuitamente na memória principal.
  • Próximo ajuste: É basicamente semelhante ao primeiro ajuste, mas este ajuste procura a primeira partição suficiente a partir do último ponto de alocação.

O que é paginação?

Paging é um mecanismo de armazenamento que permite ao SO recuperar processos do armazenamento secundário para a memória principal na forma de páginas. No método Paging, a memória principal é dividida em pequenos blocos de memória física de tamanho fixo, que são chamados de quadros. O tamanho de um quadro deve ser mantido igual ao de uma página para ter o máximo aproveitamento da memória principal e evitar fragmentação externa. A paginação é usada para acesso mais rápido aos dados e é um conceito lógico.

O que é fragmentação?

Os processos são armazenados e removidos da memória, o que cria espaço de memória livre, que é muito pequeno para ser usado por outros processos.

Depois de algumas vezes, esse processo não consegue alocar aos blocos de memória porque seu tamanho pequeno e os blocos de memória sempre permanecem sem uso é chamado de fragmentação. Este tipo de problema ocorre durante um sistema de alocação de memória dinâmica, quando os blocos livres são muito pequenos, não podendo atender a nenhuma solicitação.

Dois tipos de métodos de fragmentação são:

  1. Fragmentação externa
  2. Fragmentação interna
  • A fragmentação externa pode ser reduzida reorganizando o conteúdo da memória para colocar toda a memória livre em um único bloco.
  • A fragmentação interna pode ser reduzida atribuindo a menor partição, que ainda é boa o suficiente para transportar todo o processo.

O que é segmentação?

O método de segmentação funciona quase de forma semelhante à paginação. A única diferença entre os dois é que os segmentos têm comprimento variável, enquanto, no método de paginação, as páginas sempre têm tamanho fixo.

Um segmento de programa inclui a função principal do programa, estruturas de dados, funções utilitárias, etc. O SO mantém uma tabela de mapa de segmento para todos os processos. Também inclui uma lista de blocos de memória livres junto com seu tamanho, números de segmento e suas localizações de memória na memória principal ou memória virtual.

O que é carregamento dinâmico?

O carregamento dinâmico é uma rotina de um programa que não é carregado até que o programa o chame. Todas as rotinas devem estar contidas no disco em um formato de carregamento relocável. O programa principal será carregado na memória e executado. O carregamento dinâmico também fornece melhor utilização do espaço de memória.

O que é Dynamic Linking?

A vinculação é um método que ajuda o sistema operacional a coletar e mesclar vários módulos de código e dados em um único arquivo executável. O arquivo pode ser carregado na memória e executado. O sistema operacional pode vincular bibliotecas em nível de sistema em um programa que combina as bibliotecas no momento do carregamento. No método de vinculação dinâmica, as bibliotecas são vinculadas no tempo de execução, de modo que o tamanho do código do programa pode permanecer pequeno.

Diferença entre carregamento estático e dinâmico

Carregamento Estático Carregamento Dinâmico
O carregamento estático é usado quando você deseja carregar seu programa estaticamente. Então, no momento da compilação, todo o programa será vinculado e compilado sem a necessidade de nenhum módulo externo ou dependência do programa.Em um programa carregado dinamicamente, as referências serão fornecidas e o carregamento será feito no momento da execução.
No momento do carregamento, todo o programa é carregado na memória e inicia sua execução.As rotinas da biblioteca são carregadas na memória apenas quando são exigidas no programa.

Diferença entre ligação estática e dinâmica

Aqui estão as principais diferenças entre vinculação estática e dinâmica:

Link estático Linking Dinâmico
A vinculação estática é usada para combinar todos os outros módulos exigidos por um programa em um único código executável. Isso ajuda o sistema operacional a evitar qualquer dependência de tempo de execução.Quando a vinculação dinâmica é usada, não é necessário vincular o módulo ou biblioteca real ao programa. Em vez disso, use uma referência ao módulo dinâmico fornecido no momento da compilação e da vinculação.

Resumo:

  • O gerenciamento de memória é o processo de controlar e coordenar a memória do computador, atribuindo partes chamadas de blocos a vários programas em execução para otimizar o desempenho geral do sistema.
  • Ele permite que você verifique quanta memória precisa ser alocada para processos que decidem qual processador deve obter memória em que momento.
  • Na Alocação Contígua Única, todos os tipos de memória do computador, exceto uma pequena parte que é reservada para o sistema operacional, estão disponíveis para um aplicativo
  • O método de alocação particionada divide a memória primária em várias partições de memória, que são principalmente áreas contíguas de memória
  • O método de gerenciamento de memória paginada divide a memória principal do computador em unidades de tamanho fixo conhecidas como quadros de página
  • A memória segmentada é o único método de gerenciamento de memória que não fornece ao programa do usuário um espaço de endereço linear e contíguo.
  • A troca é um método no qual o processo deve ser trocado temporariamente da memória principal para o armazenamento de apoio. Posteriormente, ele será trazido de volta à memória para continuar a execução.
  • A alocação de memória é um processo pelo qual os programas de computador recebem memória ou espaço.
  • Paging é um mecanismo de armazenamento que permite ao SO recuperar processos do armazenamento secundário para a memória principal na forma de páginas.
  • A fragmentação se refere à condição de um disco em que os arquivos são divididos em pedaços espalhados pelo disco.
  • O método de segmentação funciona quase de forma semelhante à paginação. A única diferença entre os dois é que os segmentos têm comprimento variável, enquanto, no método de paginação, as páginas sempre têm tamanho fixo.
  • O carregamento dinâmico é uma rotina de um programa que não é carregado até que o programa o chame.
  • A vinculação é um método que ajuda o sistema operacional a coletar e mesclar vários módulos de código e dados em um único arquivo executável.