Escolar Documentos
Profissional Documentos
Cultura Documentos
4.
Colocar no final do arquivo e criar um ponteiro a partir do espao do registro original para a extenso do registro, ou Poderia reescrever todo o registro no final do arquivo, deixando um buraco na posio do registro original. Na 1a, o trabalho de processar o registro esquisito e mais lento do que era originalmente. Na 2a, o arquivo desperdia espao.
3
Uma vez que a atualizao de um registro pode ser vista como uma eliminao seguida de uma adio, vamos focar na questo da eliminao de um registro. Depois que um registro eliminado, desejamos poder reutilizar aquele espao!!!
10
Se topo(PED) < 0, ento a pilha est vazia (-1 representa um ponteiro nulo).
Quando um registro eliminado, ele marcado como eliminado e inserido na PED (ou seja, ter um ponteiro para o registro eliminado antes dele). O espao do registro est na mesma posio que antes, mas logicamente foi inserido na PED.
Implementa, no arquivo, uma lista encadeada dos registros eliminados.
11
2 Luiz . . .
3 *-1
4 Paula . . .
5 *3
6 Rui . . .
Recuperando Espao em Disco: Eliminando e Reutilizando (Reg. Tam. Var.) Para dar suporte a reutilizao de registros atravs de uma lista de espao disponvel (LED), ns precisamos de: Uma maneira interligar os registros eliminados na LED (ou seja, um lugar para colocar os apontadores). Um algoritmo para incluir na LED novos registros eliminados. Um algoritmo para achar e remover da LED os espaos disponveis quando se vai reutiliz-los.
13
Registro eliminado:
<tamanho registro> * <ponteiro> ........ onde: * indica que o registro est livre (foi eliminado logicamente).
<ponteiro> binrio e aponta para o primeiro byte do prximo registro livre. ........ o espao restante do registro livre.
14
Se tal espao existe, ento ele removido da LED e reusado. Seno o reg-novo colocado no fim do arquivo.
Essa estratgia pode levar a uma alta fragmentao interna dos registros. Fragmentao interna a perda de espao
ao nvel de cada registro (ocorre por que o espao do registro no totalmente utilizado). 16
Exemplo
Remoo de um registro da LED para armazenar um novo registro que requer 55 bytes de espao.
Tamanho 47 Tamanho 38 Tamanho 72 Tamanho 68 -1 Tamanho 68 -1 Tamanho 72
17
Tamanho 47
Tamanho 38
Alternativas:
permitir que os campos possam variar
provoca perdas no final do registro. provoca perdas ao nvel de campo.
Nos casos de eliminao de registro e reuso de espaos disponveis por registros menores do que os originais:
volta o problema da fragmentao interna.
19
Topo da LED: 43
40 Ames|John|123 Maple|Stillwater|OK|74075|64 *| -1............. ..............................................45 Brown|Martha|62 5 Kimbark|Des Moines|IA|50311|
Aps a ocupao do espao do 2o registro por um novo registro menor que o anterior.
Topo da LED: -1
Fragmentao Interna20
Topo da LED: 43
40 Ames|John|123 Maple|Stillwater|OK|74075|8 *| -1...25 Lee|Ed|R t 2|Ada|OK|74820|26 Ham|Al|28 Elm|Ada|OK|70332|45 Brown|Martha|6 22 25 Kimbark|Des Moines|IA|50311|
2. 3.
Tentar minimizar a fragmentao antes que ela ocorra, adotando uma das seguintes estratgias de reuso:
primeiro ajuste. melhor ajuste. pior ajuste.
23
essa sobra pode ser pequena demais e no ser reusvel por nenhum outro registro. Obs: Aqui o espao encontrado na LED o menor espao possvel disponvel para o novo registro.
26
Desvantagem
Os primeiros elementos da LED, de to pequenos, podem no ser aproveitveis:
aumentando o tamanho/tempo da busca at se encontrar o espao adequado. requerendo um tempo significativo.
27
Se o espao perdido por fragmentao interna (ou seja, esto sobrando muitos espaos dentro dos registros):
a escolha recai sobre uma das estratgias:
primeiro ajuste. melhor ajuste.
Se a perda por fragmentao externa (ou seja, esto sobrando muitos espaos que no utilizveis)
ento considere a estratgia do pior ajuste.
30
Prxima Aula
Recuperao rpida de arquivos
Ordenao por Chaves - Keysorting