c - Why in XV6 the constant PHYSTOP is defined as 0xE000000? -
as far know, in xv6, phystop should 1gb.
if so, phystop should 0x40000000 (1gb) , not 0xe000000 (224mb) appear in http://pdos.csail.mit.edu/6.828/2014/xv6/xv6-rev8.pdf :
0203 #define phystop 0xe000000 // top physical memory
further more, in xv6, process might mapped 0 0x80000000(kernbase). is, process might use 2gb address space. how possible if phystop isn't 2gb?
what missing?
phystop
constant defined 0xe000000 performance reasons.
if phystop
set higher, need map of free memory using mappages
. oses today map free pages on fly, on xv6 map them on os initialisation. mapping 2gb slow.
note change value before compilation bigger virtual memory.