O gerenciamento de memória é um componente crítico dos sistemas operacionais, garantindo o uso eficiente da RAM e o desempenho ideal do sistema. Diferentes estratégias são empregadas para alocar, organizar e liberar recursos de memória com base nas necessidades do sistema e nas características da carga de trabalho.

A fazer uma chamada nas janelas

O Microsoft Windows usa um sistema de paging para gerenciar a memória. Ele divide a memória física em blocos de tamanho fixo chamados páginas. Quando os aplicativos requerem memória, o SO aloca páginas e mapas de endereços virtuais para endereços físicos. Esta abordagem permite ao Windows lidar eficientemente com grandes aplicativos e multitarefas trocando páginas entre RAM e armazenamento de disco, conhecido como o arquivo de página.

Segmentação em Linux

Linux emprega segmentação como parte de seu gerenciamento de memória. Ele divide memória em segmentos como códigos, dados e segmentos de pilha. Cada processo tem seus próprios descritores de segmento, permitindo proteção e isolamento. Linux também usa paging dentro de segmentos para otimizar o uso de memória e facilitar o gerenciamento de memória virtual.

Memória Virtual no macOS

O macOS utiliza o gerenciamento de memória virtual que combina técnicas de paginação e troca de mensagens. Permite que aplicações usem mais memória do que fisicamente disponíveis transferindo dados temporariamente para o disco. O macOS gerencia este processo sem problemas, fornecendo um grande espaço de endereços e impedindo que aplicações desmoronem devido à falta de memória.

Estratégias de Alocação de Memória

  • Primeiro ajuste: Aloca o primeiro bloco de memória suficientemente grande para o pedido.
  • Melhor ajuste: Encontra o menor bloco disponível que se encaixa no pedido.
  • Sistema de buddy: Divide a memória em partições que são potências de dois, fundindo e dividindo conforme necessário.
  • Alocação de Slab: Usado para alocação de memória para objetos do mesmo tamanho, comum no gerenciamento de memória do kernel.