Gerenciamento de memória no sistema operacional: contíguo, troca, fragmentação
O que é gerenciamento de memória?
Gerenciamento 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 avançar entre a memória principal e o disco de execução. Ajuda o sistema operacional a controlar cada local de memória, independentemente de estar alocado para algum processo ou permanecer livre.
Por que usar o gerenciamento de memória?
Aqui estão os motivos para usar o gerenciamento de memória:
- Ele permite verificar quanta memória precisa ser alocada para processos que decidem qual processador deve receber memória e em que momento.
- Rastreia sempre que o estoque é liberado ou não alocado. De acordo com isso irá atualizar o status.
- Aloca espaço para rotinas de aplicação.
- Certifique-se também de que esses aplicativos não interfiram entre si.
- Ajuda a proteger diferentes processos 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 técnicas de gerenciamento de memória mais cruciais:
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 reservada para o sistema operacional, ficam 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 de memória. Cada partição armazena todas as informações para uma tarefa ou trabalho específico. Este método consiste em alocar uma partição para um trabalho quando ele inicia e não alocada quando termina.
Gerenciamento de memória paginada
Este método divide a memória principal do computador em unidades de tamanho fixo conhecidas como frames de página. Esta unidade de gerenciamento de memória de hardware mapeia páginas em quadros que devem ser alocados por página.
Gerenciamento de memória segmentado
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 é Trocar?
A troca é um método no qual o processo deve ser trocado temporariamente da memória principal para o armazenamento de apoio. Ele será posteriormente trazido de volta para a 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 de memória para todos os usuários. Também é capaz de oferecer acesso direto a essas imagens de memória.
Benefícios da troca
Aqui estão os principais benefícios/prós da troca:
- Oferece um grau mais alto 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 poderão 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.
- Desperdício mínimo 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
- Memória baixa - Operasistema ting reside neste tipo de memória.
- Memória alta– Os processos do usuário são mantidos em muita memória.
Alocação de partição
A memória é dividida em diferentes blocos ou partições. Cada processo é alocado de acordo com a necessidade. A alocação de partições é 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, é alocada a partição, 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 menor partição 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: É muito semelhante ao primeiro ajuste, mas este ajuste procura a primeira partição suficiente do último ponto de alocação.
O que é paginação?
Paginação é um mecanismo de armazenamento que permite ao sistema operacional 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, chamados de frames. O tamanho de um quadro deve ser mantido igual ao de uma página para aproveitar ao máximo a memória principal e evitar fragmentação externa. Paging é usado 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 livre na memória, que é pequeno demais para ser usado por outros processos.
Depois que, às vezes, os processos não conseguem alocar 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 dinâmica de memória quando os blocos livres são muito pequenos e não conseguem atender nenhuma solicitação.
Dois tipos de métodos de fragmentação são:
- Fragmentação externa
- Fragmentação interna
- A fragmentação externa pode ser reduzida reorganizando o conteúdo da memória para reunir toda a memória livre em um único bloco.
- A fragmentação interna pode ser reduzida atribuindo-se a menor partição, que ainda seja boa o suficiente para realizar 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 são sempre de tamanho fixo.
Um segmento de programa inclui a função principal do programa, estruturas de dados, funções utilitárias, etc. O sistema operacional mantém uma tabela de mapa de segmentos para todos os processos. Também inclui uma lista de blocos de memória livres, juntamente com seu tamanho, números de segmento e locais 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 é carregada até que o programa a 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 proporciona melhor utilização do espaço de memória.
O que é vinculação dinâmica?
Vincular é 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 de 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 em tempo de execução, portanto, 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 de 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 somente quando são necessárias no programa. |
Diferença entre vinculação estática e dinâmica
Aqui estão as principais diferenças entre vinculação estática e dinâmica:
Vinculação estática | Vinculação dinâmica |
---|---|
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 vinculação. |
Resumo
- O gerenciamento de memória é o processo de controlar e coordenar a memória do computador, atribuindo partes chamadas blocos a vários programas em execução para otimizar o desempenho geral do sistema.
- Ele permite verificar quanta memória precisa ser alocada para processos que decidem qual processador deve receber memória e 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 Paged Memory Management divide a memória principal do computador em unidades de tamanho fixo conhecidas como frames 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. Ele será posteriormente trazido de volta para a 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.
- Paginação é um mecanismo de armazenamento que permite ao sistema operacional recuperar processos do armazenamento secundário para a memória principal na forma de páginas.
- Fragmentação refere-se à 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 são sempre de tamanho fixo.
- O carregamento dinâmico é uma rotina de um programa que não é carregada até que o programa a chame.
- Vincular é 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.