据我所知,在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,怎么可能?
我错过了什么?
答案 0 :(得分:2)
PHYSTOP
是一个定义为0xE000000的常量。
如果将PHYSTOP
设置得更高,则需要使用mappages
映射所有可用内存。操作系统今天即时映射免费页面,但是在xv6上我们将它们映射到操作系统初始化。映射2GB很慢。
请注意,您可以在编译更大的虚拟内存之前更改此值。