Paginação

      Embora partições variáveis seja um mecanismo mais flexível, o desperdício de memória em função da fragmentação externa é um grande problema. Sempre cada programa necessitou para sua execução de uma área contínua de memória. Para que outras técnicas pudessem ser aplicadas, esta regra precisava ser quebrada. A técnica de paginação possibilita exatamente isso.

      O espaço de endereçamento lógico de um processo é dividido em páginas lógicas de tamanho fixo. A memória física é dividida em páginas com tamanho fixo, com tamanho igual ao da página lógica.

      Um programa é carregado página por página, a página lógica do processo ocupa uma página física da memória física, área ocupada não precisa ser contigua, pois a ordem que as paginas lógicas está na memória física não precisa ser a mesma da memória lógica.

      Tabela de páginas é montada durante o processo, sua função é informar para cada pagina lógica sua pagina física correspondente. A tabela transforma o endereço lógico de cada instrução em endereço físico que corresponde.



      Na figura acima mostra o endereço de Y2 na memória lógica que ao passar pela tabela de páginas é transformado no endereço físico correspondente. Para se transformar o endereço lógico em físico acontece o seguinte processo: no exemplo o byte Y2 seu endereço lógico é 001 01, sua página lógica é designada por 001 e eu deslocamento é 01, na tabela de paginas é carregado seu endereço físico que é a pagina 101, com a união se forma o endereço físico final que é 101 01.

      Não existe fragmentação externa, pois cada pagina lógica pode ser carregada em qualquer página física livre. A unidade de alocação é a página , e o tamanho de um processo raramente é igual a um múltiplo do tamanho de página , isso introduz uma fragmentação interna.

      Quando usamos páginas grandes significa que o processo terá menos páginas, tabela de páginas será menor, a leitura de disco será mais eficiente. A utilização de páginas maiores resulta em uma fragmentação maior. O tamanho das páginas é fixado pelo hardware que suporta a gerencia de memória, ou seja, a MMU.

      A gerência de memória deve controlar as áreas livres da memória, ou seja, manter uma lista de páginas físicas livres, uma forma de representar é através de um mapa de bits, onde 0 representa uma página livre e 1 página ocupada.


    Carregar/Remover Página

      O maior problema do gerenciamento de memória não é decidir que página carregar, mas sim, qual página deve ser removida da memória.

   Antes de remover uma página o sistema verifica se a mesma foi alterada (bit de modificação), a página é removida e salva na memória secundária. Quando ela for referenciada novamente o sistema a carrega de volta.


    Estratégias para realocação de páginas

1 – ALEATÓRIA: não utiliza nenhum critério de seleção, todas as páginas possuem a mesma chance;

2 – FIFO: a página que entrar primeiro vai ser a primeira a sair;

3 – LRU: seleciona a página que está a mais tempo sem ser referenciada;


4 – LFU: seleciona a página menos freqüentemente usada.




    Tamanho da página      
      O problema da fragmentação também é encontrado na paginação, mas ocorre apenas na ultima página usada pelo programa. A fragmentação é conseqüência do tamanho da página, páginas pequenas diminuem a fragmentação, mas aumenta o acesso a memória secundária.