next up previous contents index
Next: Detalhes na utilização do Up: Detalhes na utilização do Previous: Detalhes da versão simples

Detalhes da versão intermediária

Como esta versão gerencia blocos livres e alocados de memória, é possível devolver o tamanho de um bloco para ser reutilizado pelo sistema. Assim como na versão simples, a versão intermediária possui um vetor de tamanho fixo para os blocos alocados, mas conta também com um vetor contendo os blocos livres.

Inicialmente, o sistema possui um único bloco livre, cujo tamanho é equivalente a toda memória disponível. Quando o usuário solicita um bloco, a função bnnk_malloc() procura o primeiro bloco dispon 'ivel com tamanho igual ou maior que o tamanho solicitado. Então este bloco é fracionado, caso seja maior, e o tamanho solicitado é retirado da memória disponível.

Quando o bloco é liberado, a função bnnk_free() verifica se o s blocos imediatamente anterior ou posterior estão livres e, em caso afirmativo, ele faz a junção desses blocos, criando um espaço livre maior.



rafael@safecore.net