O tamanho da página é sempre igual ao tamanho do quadro?

9

Estou aprendendo sobre paginação. Meu livro diz que os endereços lógicos gerados pela CPU estão no formato |p|d|(número da página, deslocamento da página) e os endereços físicos estão no formato |f|d|(número do quadro, deslocamento do quadro). Também é mencionado especificamente que, dou seja, o deslocamento é copiado diretamente para gerar o endereço físico a partir dos endereços lógicos.

Agora, o senso comum diz que, se o deslocamento for copiado diretamente, o tamanho da página terá que ser igual ao tamanho do quadro (caso contrário, as compensações não corresponderiam). Mas, infelizmente, meu livro não diz nada sobre isso.

Então, o tamanho da página é sempre igual ao tamanho do quadro?

Ative as imagens;)

Combustível
fonte

Respostas:

8

Uma página é uma região do espaço de endereço virtual e um quadro de página é uma região da memória física. Uma página que mapeia uma região da memória física deve ter o mesmo tamanho que essa parte da memória física, caso contrário, não faz sentido.

Eles também geralmente devem estar alinhados corretamente. Se você tentar mapear, digamos, um quadro de página de 2Mb na memória virtual, o endereço virtual e o endereço físico deverão estar alinhados com 2Mb.

Muitas CPUs modernas suportam mais de um tamanho de página e algumas podem suportar tamanhos de página diferentes no mesmo espaço de endereço. O Intel x86-64 atual, por exemplo, suporta tamanhos de página de 4kb, 2Mb e 1Gb. Esses números não são arbitrários; eles representam o espaço de endereço coberto por diferentes "níveis" na tabela de páginas multinível. Da mesma forma, o ARM moderno suporta páginas de 4kb, 64kb e 1Mb, embora o ARM não se refira às páginas de 1Mb como "páginas" (são "seções"). O ARMv4 e o ARMv5 suportaram a divisão de páginas nas chamadas "subpáginas"; eles não estão mais disponíveis no ARMv7.

Curiosamente, existem algumas outras coisas que geralmente têm o mesmo tamanho que o tamanho da página. Obviamente, uma entrada TLB é do mesmo tamanho que uma página ou quadro, pois é conceitualmente um cache para as entradas da tabela de páginas. No entanto, o tamanho do cache L1 também é frequentemente determinado pelo tamanho da página.

Suponha que o cache L1 seja associativo ao conjunto (um cache mapeado direto é realmente apenas um cache associativo unidirecional, para que você possa pensar nisso como um caso limitante), então é conveniente fazer um "definir" o tamanho de uma página física. Portanto, suponha que o tamanho da página seja 4kb e o cache L1 seja um cache associativo de conjunto de quatro maneiras, então o tamanho "melhor" para o cache L1 é 16kb (quatro vezes 4kb). Veja se você pode resolver por si mesmo, este pode ser o caso.

Pseudônimo
fonte
1

sim, o tamanho da página deve ser igual ao tamanho do quadro para minimizar a fragmentação interna da memória principal.

RAJNISH
fonte
3
Observe que algumas arquiteturas suportam vários tamanhos de página simultaneamente.
TEMLIB 25/09/15
Você pode elaborar? Preferimos respostas detalhadas que forneçam explicações, justificativas ou análises. Se o tamanho da página não fosse igual ao tamanho do quadro, como isso causaria maior fragmentação interna da memória principal? Você pode editar a resposta para adicionar uma explicação disso?
DW
A resposta acima com 1 voto positivo está absolutamente errada. A paginação usa blocos de memória de tamanho constante e, portanto, minimiza a fragmentação externa em detrimento da interna, se a memória alocada for menor que uma página. Portanto, concluí que seu sistema operacional ficará mais feliz se você escolher pageSize = frameSize.
precisa
@JigneshKumar, não use a caixa 'Sua resposta' para comentar as respostas existentes. Em vez disso, concentre-se nas perguntas em que você pode fornecer uma resposta completa ou fazer novas perguntas úteis. Obrigado!
DW
0

O quadro da página não pode ser menor que a página, porque o deslocamento pode estourar o quadro da página. E o contrário - o quadro da página sendo maior que a página? Ao contrário do cenário anterior, isso funcionaria, mas seria um desperdício, porque haveria partes do quadro da página que nunca foram usadas (essas são as partes que estão além do deslocamento máximo).

JRG
fonte