Cursos / Automação Industrial / Sistemas Operacionais / Aula

arrow_back Aula 11 - Gerenciamento de Memória

Quando a memória não é suficiente

Às vezes, a memória não é suficiente para manter todos os processos atualmente ativos, sendo assim, foram desenvolvidos técnicas de gerenciamento de memória RAM com auxílio de uma memória secundária (geralmente, o HD do computador). Vamos, então, apresentar dois esquemas que se utilizam de mais memória do que a RAM disponível: são os esquemas de troca e de memória virtual.

Troca

play_circle_filled
Vídeo 05 - Frangmentação Interna

O esquema de troca tem como objetivo otimizar o gerenciamento de memória e permitir também que vários programas, cujo espaço total de memória requerida seja maior do que o espaço de memória principal disponível, possam ser executados “simultaneamente”. Ele consiste em manter na memória (área de troca) apenas alguns processos, os demais são mantidos no HD. Cada um desses processos é trazido temporariamente do disco para a memória, de forma que possam ser executados e, posteriormente, devolvidos para o disco novamente, de maneira que outros processos possam ter vez. A Figura 5 mostra como esse esquema funciona.

Figura 05 - Gerenciamento de memória por trocas de processos
Gerenciamento de memória por trocas de processos
Fonte: autoria própria.

Nesse esquema, a alocação da memória não segue a ideia de partições fixas, variando seu tamanho de acordo com o processo que for sendo carregado. Dessa forma, estaremos otimizando o uso da memória, mas tornando ainda mais complexo o seu gerenciamento. No início, a área livre fica concentrada em único lote, como ilustrado na partição cor de rosa da Figura 5.

play_circle_filled
Vídeo 06 - Frangmentação Externa

Entretanto, conforme podemos ver no exemplo da Figura 6, com o passar do tempo e a liberação de memória, devido à realização de várias trocas, lacunas vão aparecendo, tornando ineficiente o uso da memória. Isso acontece porque quando as lacunas forem muito pequenas, praticamente não cabe nenhum processo. Então, métodos de compactação da memória podem ser utilizados para juntar os processos presentes e eliminar as lacunas entre processos. Com isso, juntam-se as lacunas, tornando o espaço disponível em uma única área livre de tamanho grande, e que poderia agora ser utilizada. Entretanto, essa ação consome bastante tempo de CPU.

Figura 06 - Problema da fragmentação das áreas livres que vão surgindo
Problema da fragmentação das áreas livres que vão surgindo
Fonte: autoria própria.

Para gerenciar as trocas e quais áreas da memória estão ocupadas ou livres, dois esquemas básicos são utilizados. Veja-os a seguir:

  1. Gerenciamento de memória com mapas de Bits
    play_circle_filled
    Vídeo 07 - Gerência de Espaços Livres

    Pense no mapa de sua cidade. Nele devem estar representadas as áreas ocupadas (urbanas) e áreas livres (terrenos, áreas ambientais e zonas rurais). Se dividirmos a memória em pequenos lotes e criarmos um mapa de ocupação, podemos, com o gasto (ocupação) de uma pequena área da memória, saber quais áreas estão livres e quais estão ocupadas. A Figura 7 representa essa forma de gerenciamento.

    Figura 07 - Mapeamento da memória com mapa de bits
    Mapeamento da memória com mapa de bits
    Fonte: autoria própria.
  2. Gerenciamento de memória com lista encadeada

    Para esse esquema, utiliza-se uma lista de lotes da memória indicando quais estão ocupados com processos e quais são áreas livres. Como a lista é encadeada, cada lote, além das informações sobre sua partição da memória, também aponta para a próxima área (lote). É como se pegássemos um bloco de notas e descrevêssemos cada cômodo de nossa casa em uma das folhas informando quem está no cômodo e realizando qual atividade. Adicionalmente, indica-se com uma seta que aponta para o próximo cômodo, que poderá estar ocupado ou não.

    A Figura 8 descreve melhor a relação da lista encadeada com as partições da memória.

    Figura 08 - Lista encadeada para mapear processos e áreas livres
    Lista encadeada para mapear processos e áreas livres
    Fonte: autoria própria.

    Observando a Figura 8, perceba que no momento em que um processo for finalizado e sua partição for liberada, caso exista uma ou duas partições vizinhas livres, ocorre uma fusão, gerando uma partição livre maior. Como exemplo dessa situação, imagine a finalização do processo P2, o que acarretaria a fusão dos lotes livres L2 e L3, constituindo-se agora num único lote.

Versão 5.3 - Todos os Direitos reservados