【问题标题】:Why in XV6 the constant PHYSTOP is defined as 0xE000000?为什么在 XV6 中常量 PHYSTOP 被定义为 0xE000000?
【发布时间】:2015-07-01 08:53:23
【问题描述】:

据我所知,在 XV6 中,PHYSTOP 应该是 1GB。

如果是这样,PHYSTOP 应该是 0x40000000 (1GB) 而不是 http://pdos.csail.mit.edu/6.828/2014/xv6/xv6-rev8.pdf 中出现的 0xE000000 (224MB):

0203 #define PHYSTOP 0xE000000 // Top physical memory

此外,在 XV6 中,进程可能从 0 映射到 0x80000000(KERNBASE)。也就是说,一个进程可能使用 2GB 的地址空间。如果 PHYSTOP 不是 2GB,怎么可能?

我错过了什么?

【问题讨论】:

    标签: c unix operating-system xv6


    【解决方案1】:

    PHYSTOP 是一个常量,出于性能原因定义为 0xE000000。

    如果PHYSTOP 设置得更高,您将需要使用mappages 映射所有可用内存。今天的操作系统动态映射空闲页面,但是在 xv6 上,我们将它们映射到操作系统初始化。映射 2GB 很慢。

    请注意,您可以在编译之前更改此值以获得更大的虚拟内存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-16
      • 1970-01-01
      • 2020-08-19
      • 2020-07-01
      • 1970-01-01
      • 2011-09-06
      • 1970-01-01
      • 2022-08-19
      相关资源
      最近更新 更多