terça-feira, 28 de junho de 2011

The Resident Portion: LRUs

image

Quando o servidor precisa trazer uma página do disco para a shared memory, ele deve primeiro localizar um buffer para dentro do qual colocará a página. Todo buffer é mapeado através de diversas listas conectadas de ponteiros conhecidas como filas Least Recently Used (LRU). Os pares de filas LRU têm uma fila livre, a FLRU (LRU Livre) e uma fila modificada, a MLRU (LRU modificada).

Quando o servidor é colocado em modo on-line pela primeira vez, todas as páginas dos buffers (as quais estão vazias), são distribuídas igualmente nas FLRU dos pares de LRU. Esta distribuição é para balancear a associação das páginas do buffer dentre as filas de FLRU de modo que uma fila não gere um gargalo.

Quando uma thread de usuário precisa de um buffer, o servidor seleciona um Least Recently Used buffer randomicamente em uma das filas de FLRU que não estão reservadas por nenhuma outra thread de usuário. Se a página está sendo modificada, o buffer é colocado em um Most Recently Used buffer na fila de MLRU. Se a página foi lida, mas não foi modificada, o buffer é retornado para o Most Recently Used buffer na fila de FLRU.

Nenhum comentário:

Postar um comentário