Недавно я отправился на поиски памяти, используемой VirtualBox. Как вы, возможно, знаете, в диспетчере задач или Process Explorer память, используемая VirtualBox, составляет всего несколько сотен мегабайт, независимо от того, сколько памяти фактически используется гостевым хостом. В моем случае я использовал виртуальную машину емкостью 2 ГБ, поэтому я хотел понять, почему я нигде не видел, чтобы эта память использовалась.
После долгих поисков я скачал RamMap и наконец нашел место, где отображается объем гостевой памяти:
Когда я останавливаю свою виртуальную машину, системный PTE падает до 40 МБ, а при повторном запуске - до 2 ГБ. Ясно, что именно здесь находится моя гостевая ОС!
Итак, мой вопрос: почему память для виртуализированного гостя хранится в этом месте? Мое ограниченное понимание System PTE - это отображение реальной памяти и различных адресных пространств процесса. Так что я бы не ожидал, что какой-то массив будет отображать один индекс в другой. Зачем нам ставить туда всю память ОС?
Спасибо, что просветили меня!