Please enable JavaScript.
Coggle requires JavaScript to display documents.
Capítulo 16, Alocação de Memória - Coggle Diagram
-
Alocação de Memória
Alocadores de Memória
Alocador de Memória Física: organiza a memória física do computador, definindo as áreas que podem ser alocadas pelo núcleo e processos e as áreas reservadas.
Alocador de espaço de núcleo: O alocador de núcleo obtém áreas de memória do alocador físico e as utiliza para alocar essas estruturas para o núcleo.
-
Alocador de espaço de usuário: um processo pode solicitar blocos de memória para armazenar estruturas de dados dinâmicas, através de operações como malloc e free.
-
Alocação Básica
Problema Básico
Manter uma grande área de memória RAM e atender um fluxo de requisições de alocação e liberação de partes dessa área para o SO ou aplicações.
Fragmentação
Fragmentação Externa: Muito prejudicial, porque limita a capacidade de alocação de memória do sistema, fragmenta a memória livre, fora das áreas alocadas.
-
-
O alocador Slab
-
O alocador Slab usa uma estratégia baseada no caching de objetos. É definido um cache para cada tipo de objeto usado pelo núcleo.
Cada cache é então dividido em slabs que contêm objetos daquele tipo, portanto todos com o mesmo tamanho.
Um slab pode estar cheio, quando
todos os seus objetos estão em uso, vazio, quando todos os seus objetos estão livres, ou parcial.
Funcionamento:
Alocação:
Quando um novo objeto de núcleo é requisitado, o alocador analisa o cache daquele tipo de objeto e entrega um objeto livre de um slab parcial; caso não hajam slabs parciais, entrega um objeto livre de um slab
vazio.
Caso não existam slabs vazios, o alocador pede mais páginas de RAM ao alocador de memória física para criar um novo slab, inicializar seus objetos e marcá-los como livres.
Liberação:
Quando um objeto é liberado, ele é marcado como livre; caso todos os objetos de um slab fiquem livres, este é marcado como vazio.
Caso o sistema precise liberar memória para outros usos, o alocador pode descartar os slabs vazios, liberando suas áreas junto ao alocador de memória física.
-