Paginação

 
Esquema de memória que permite a alocação não contigua de memória. A memória física é quebrada em blocos (quadros) e a memória lógica é quebrada em páginas.
 
O endereço gerado pela CPU tem o endereço de página e o deslocamento de página.
 
O endereço de página é um índice que aponta para uma tabela de página. Nesta tabela há o endereço base da memória física, ele é combinado ao deslocamento para encontrar o endereço físico real.
 

Figura - na paginação a memória lógica referencia endereços em uma tabela de páginas que tem apontadores para os dados na memória física.

O aspecto importante da paginação é a separação clara entre a visão da memória do usuário e a memória física real. O programa de usuário enxerga a memória como um espaço físico contínuo, mesmo que na realidade ele esteja disperso em vários pontos da memória. Como o sistema operacional é quem realiza as traduções entre endereços e as alocações de espaço, o programa de usuário está limitado ao uso apenas daqueles endereços de memória reservado a ele, não podendo acessar outras faixas de endereço.
  
 

Figura - fragmentação interna na paginação

A proteção ao acesso de áreas não permitidas da memória a um programa se dá através da implementação do uso de bits de validação. Ocorre que se um determinado programa tentar acessar uma área não permitida é gerada uma exceção (violação de proteção de memória).

 Páginas Compartilhadas
É uma vantagem da paginação a possibilidade de uso do mesmo espaço de memória quando nos referimos a parte de código dos processos. Os casos mais usados em que temos amplo uso deste mecanismo são em aplicações de editores de texto, compiladores, sistemas de janelas, sistemas de banco de dados entre outros, etc. Neste caso usufruímos do acesso a mesma área de código, tendo a área de dados diferente para cada processo. 
  


  Figura - Páginas que compartilham áreas em memória