页表大小,虚拟内存大小和物理内存大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了页表大小,虚拟内存大小和物理内存大小相关的知识,希望对你有一定的参考价值。

机器的内存架构具有:

+-----------------------+-------+
| Virtual address:      | 48-bit|
| Page size             | 8 KB  |
| Page table entry size | 32 bit|
+-----------------------+-------+

让我们假设操作系统使用来自页表条目的4位来确定每个页面的访问权限

  1. 虚拟内存大小?
  2. 页表允许的最大物理内存大小
  3. 页表大小

我尝试过以下设置:

  • 虚拟内存大小= 2 ^ 48 B.
  • 物理内存大小= 2 ^ 41 B. PPN = 32-4 = 28位物理地址= 28 +偏移位= 28 + 13 = 41位
  • 页表大小= 2 ^ 35 * 32位 页面条目数= 48-13 = 35 页表大小=页表条目大小*页面条目数

我对PPN感到困惑。应该是28位还是32位?我不知道我的解决方案是否正确。有人可以提供我的建议吗?

谢谢。

答案

问题很模糊。首先,“最大物理内存大小”是指最大物理内存地址空间大小或可以在任何时间访问的最大物理内存大小?在前一种情况下,您的计算是正确的。在后一种情况下,物理内存大小受两个因素的限制:

  • 页表条目的最大数量。
  • 最大物理内存地址空间大小。

我想你可以自己弄清楚这个案例的计算方法。

其次,“页表大小”是指覆盖最大虚拟地址空间,最大物理地址空间或其他内容所需的页表条目数(例如,页表指针格式支持)?页面表是单级还是多级?或者它可能是多级的,但“页表大小”仅指最后一级页表条目。如果“页表大小”表示覆盖页表遵循单级格式的最大虚拟地址空间所需的页表条目的总大小,则计算才正确。

第三,似乎你假设内存是字节可寻址的,并且一个字节的大小是8位。这些是常见的假设,但最好在问题或答案中明确说明。否则计算会有所不同。

我对PPN感到困惑。应该是28位还是32位?

你是对的,它是28位。

以上是关于页表大小,虚拟内存大小和物理内存大小的主要内容,如果未能解决你的问题,请参考以下文章

内存管理

[转帖] 学习 Linux 大页的内存知识

oracle安装时需要的虚拟内存大小

06 内存(上)划分与组织内存

嵌入式linux学习笔记1—内存管理MMU之虚拟地址到物理地址的转化

内存管理