这是我的设置:
在vm中,在用户空间程序中,我在地址bf9ee1a0处存储值为“8”的变量。
当我在vm内核空间中调用virt_to_phys函数时,我得到了与地址对应的ff9ee1a0的物理地址。
在qemu上,pte和pte_addr分别是a5913865和bf955f78。我刚刚使用了x86_cpu_handle_mmu_fault函数并添加了某些printf语句。 我的理解是os和qemu的映射应该是相同的。即bf9ee1a0应映射到a5913865。
我知道这里有很多级别的翻译。访客虚拟 - 访客物理 - 主机虚拟。
这是我的问题: 1.我想知道实际存储的数据在哪里?
virt_to_phys()的含义是什么?
我确保控制寄存器中使用的地址在vm内部和qemu中都是相同的,用于分页。那为什么这种差异呢?
如果需要在qemu中打印pte所具有的页面内容,如何使用printf语句进行打印?
非常感谢任何见解。