4

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

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

0203 #define PHYSTOP 0xE000000 // Top physical memory

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

我错过了什么?

4

1 回答 1

5

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

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

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

于 2015-04-27T10:15:02.263 回答