[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

RE: Mapa de bits???



Daniel Cukier writes:
 > Eu não consegui entender direito onde eu devo usar o mapa de bits:
 > 
 > 1 - Para saber quais páginas no heap file estão desocupadas?
 > 2 - Para saber se há espaço disponível numa página?
 > 3 - Para saber quais slots estão desocupados numa pagina?

Para saber quais páginas de um Database estão livres (não alocadas a
nehum heap file).

O uso de um mapa de bits não é obrigatório. Você tem duas alternativas
básicas:
 a) manter um mapa de bits, no qual cada bit corresponde a um bloco do
    Database, ou
 b) manter uma lista ligada de blocos livres.

A vantagem do mapa de bits é que fica fácil localizar e alocar
seqüências de blocos livres contíguos e com isso evitar fragmentação do
Database. A vantagem da lista ligada de blocos livres é a facilidade de
implementação. 

 > E ainda: como implementar essa mapa de bits? Eu tenho que fazer um vetor
 > de booleans? Ou de inteiros?

Tanto o mapa de bits como a lista ligada de blocos livres são estruturas
residentes em disco. O mapa de bits não é um vetor de booleans na
memória. É uma seqüência de bytes em disco (dentro de um Database), cada
byte representando o estado (livre/alocado) de oito blocos do Database
(um bloco por bit).

Sugestão: Só escolha o mapa de bits se você achar que o prazo do EP está
folgado. A lista ligada de blocos livres dá muito menos trabalho!

Reverbel