Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

nkzao

com Buffer Pool em C

Recommended Posts

Ae galera tenho um trabalho a fazer e queria pedir uma ajudinha a vcs pois não sei nem por onde começar a fazer este trabalho,

esperava que vcs me desse uma luz de como fazer, por onde começar, onde pesquisar sobre!

tenho que fazer o seguinte:

 

O trabalho consiste na implementação simulada de um gerenciador de buffer pool. O buffer

pool deverá ser constituído de 100 buffers, sendo cada um deles capaz de armazenar 1 único setor

de disco em memória principal. O gerenciamento do buffer pool deverá ser implementado na forma

de uma lista duplamente encadeada segundo a política LRU de substituição de buffers. Ademais,

uma tabela hash de 10 posições deverá agilizar a pesquisa de um setor na lista duplamente

encadeada. Essa tabela hash deverá tratar colisões pelo uso de uma lista de encadeamento simples.

 

Uma vez que ocorra a modificação de um setor de disco presente no buffer pool, o mesmo deverá

ser gravado em disco apenas quando: ( a ) for substituído do buffer pool; ou ( b ) quando ocorrer um

shutdown no sistema. Setores não modificados serão descartados em ambos os casos.

 

Por se tratar de um trabalho de simulação, a memória secundária à qual se fará acessos

também deverá ser simulada. As requisições de setores do disco, denotadas pelo endereço do setor

buscado, o número de bytes a serem transferidos e a operação que se pretende realizar, deverão ser

geradas randômicamente e de forma ininterrupta. As operações a serem consideradas são: “r” para

apenas leitura, “w” para apenas escrita e “r/w”para leitura e escrita. A cada nova requisição de

acesso a disco, primeiramente o buffer pool será pesquisado para saber se o setor buscado já se

encontra em memória principal. As situacões em que o setor não se encontrar em nenhum dos

buffers resultaram em acessos a disco. Acesso a setores que estiverem presentes no buffer pool

resultaram na atualização da posição do buffer que o contém dentro da lista duplamente encadeada

segundo a política LRU e modificação do tipo de operação que se deseja realizar (se for o caso). Os

nós da lista duplamente encadeada e da tabela hash deverão armazenar as informações de

endereçamento do setor e uma flag que indica se houve ou não modificação no mesmo.

 

O simulador deverá apresentar de forma atualizada em sua interface as requisições de acesso

a disco (endereço do setor inicial, número de bytes, e operação), o estado e elementos constituintes

da lista LRU e da tabela hash, além de sinalizar por meio de mensagens os acessos a disco,

identificando a razão pela qual o cada um foi necessário. A apresentação de dados estatísticos que

indiquem o número e o tempo de acesso economizado pelo uso do buffer pool também é necessária.

 

Os dados de tempo economizado podem ser obtidos calculando-se o tempo de acesso para cada vez

em que um setor for encontrado no buffer pool e o tempo de acesso para cada operação

efetivamente realizada em disco. O encerramento do programa de simulação deve ser encarado

como um shutdown do sistema: a lista LRU será esvaziada buffer a buffer de modo que buffers que

contenham setores modificados serão gravados em disco e os outros descartados.

 

Dados:

 

Número de buffers no buffer pool: 100

Número de setores por buffer: 1

Número de posições da tabela hash: 10

Número de bytes por setor: 1 B

Número de setores por trilha: 10

Número de trilhas por cilíndro: 10

Número de cilíndros: 10

Tempo médio de seek: 10 milésimos de segundo

Velocidade do Disco: 4500 RPM

Tempo de acesso a um setor na memória primária: 71,7 milhonésimos de segundo

 

Quanto a linguagem de Programação

O trabalho deverá ser implementado em C

 

Obrigado a qm ajudar!

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.