2009-03-31

Makefiles

Tenho estado a trabalhar para outras cadeiras e não tenho tido muito tempo para acabar o gestor de memória. Como já tinha este post sobre Makefiles em draft há uns tempos aqui fica...


Já vimos anteriormente alguns usos de um Makefile e também como criar um de forma simples.

Também já mostrei um Makefile com macros e regras automáticas. Na altura não expliquei nada mas prometi que o fazia num post futuro. Vou fazer isso neste post.

2009-03-21

Gestor de memória, parte III

No segundo exercício é pedida uma versão melhorada do gestor de memória do primeiro exercício. São pedidas duas coisas: fusão de blocos livres e optimização das procuras.

2009-03-13

Gestor de memória, parte II

Agora que já temos uma ideia do que temos de fazer podemos começar a escrever o nosso gestor de memória.

Makefile

Vamos dividir o trabalho em três modulos:

  1. mymalloc.o: um módulo com as funções mymalloc e myfree
  2. dict.o: para testar vamos usar uma versão modificada do código do primeiro guião, usando mymalloc e myfree no lugar de malloc e free
  3. prog.o: um módulo com a função main, exactamente igual à do primeiro guião

Gestor de memória, parte I

A Heap

Quando um programa está em memória, há dois segmentos de memória que podem crescer: a heap e a stack.

A stack cresce quando se chamam funções e diminui quando estas retornam. A heap cresce quando alocamos memória dinamicamente.

Quando alocamos memória geralmente fazemo-lo por blocos, dependendo do tamanho das nossas estruturas de dados. Para isto usamos as funções malloc e free.

2009-03-07

Apontadores, parte II

O segundo exercício pode ser facilmente resolvido à custa do primeiro, assim:

void put2(Node** dict, int key, char* val)
{
*dict = put1(*dict, key, val);
}

void del2(Node** dict, int key)
{
*dict = del1(*dict, key);
}

// A função get é exactamente igual
char* get2(Node* dict, int key)
{
return get1(dict, key);
}

Mas vamos fazer as coisas sem "máfias".

Apontadores, parte I

Vou resolver passo a passo o exercício 1 do primeiro guião das aulas teórico-práticas de SO (UM, LEI, 2008-2009).