Почему в XV6 константа PHYSTOP определена как 0xE000000?

Насколько я знаю, в XV6 PHYSTOP должен быть 1 ГБ.

В этом случае значение PHYSTOP должно быть 0x40000000 (1 ГБ), а не 0xE000000 (224 МБ), как показано в http://pdos.csail.mit.edu/6.828/2014/xv6/xv6-rev8.pdf:

0203 #define PHYSTOP 0xE000000 // Top physical memory

Более того, в XV6 процесс может отображаться от 0 до 0x80000000 (KERNBASE). То есть процесс может использовать адресное пространство 2 ГБ. Как это возможно, если PHYSTOP не 2 ГБ?

Что мне не хватает?


person SyndicatorBBB    schedule 23.04.2015    source источник


Ответы (1)


PHYSTOP - константа, определенная как 0xE000000 по соображениям производительности.

если PHYSTOP установлено выше, вам нужно будет отобразить всю эту свободную память с помощью mappages. Сегодня операционные системы отображают свободные страницы на лету, однако в xv6 мы отображаем их при инициализации ОС. отображение 2 ГБ идет медленно.

обратите внимание, что вы можете изменить это значение перед компиляцией для большей виртуальной памяти.

person Doron Cohen    schedule 27.04.2015