Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 理解Qemu地址翻译_C_Linux_Linux Kernel_Qemu_Page Tables - Fatal编程技术网

C 理解Qemu地址翻译

C 理解Qemu地址翻译,c,linux,linux-kernel,qemu,page-tables,C,Linux,Linux Kernel,Qemu,Page Tables,这是我的设置: 在虚拟机内部的用户空间程序中,我在地址bf9ee1a0处存储了一个值为“8”的变量 我得到了一个物理地址ff9ee1a0,对应于在vm内核空间中调用virt_to_phys函数时的地址 在qemu上,pte和pte_addr分别是a5913865和bf955f78。我刚刚使用了x86_cpu_handle_mmu_fault函数并添加了一些printf语句。 我的理解是操作系统和qemu的映射应该是相同的。i、 e.bf9ee1a0应映射到a5913865 我知道这里涉及到很多级

这是我的设置:

在虚拟机内部的用户空间程序中,我在地址bf9ee1a0处存储了一个值为“8”的变量

我得到了一个物理地址ff9ee1a0,对应于在vm内核空间中调用virt_to_phys函数时的地址

在qemu上,pte和pte_addr分别是a5913865和bf955f78。我刚刚使用了x86_cpu_handle_mmu_fault函数并添加了一些printf语句。 我的理解是操作系统和qemu的映射应该是相同的。i、 e.bf9ee1a0应映射到a5913865

我知道这里涉及到很多级别的翻译。来宾虚拟-来宾物理-主机虚拟

以下是我的问题: 1.我想知道数据实际存储在哪里

  • 那么虚拟物理是什么意思呢

  • 我确保控制寄存器中使用的地址在vm内的操作系统和用于分页的qemu中都是相同的。那么为什么会有这种差异呢

  • 如果需要打印pte在qemu中的页面内容,如何使用printf语句打印它们


  • 非常感谢您的任何见解。

    我不知道您的问题的答案(否则我会提供答案)——但我很好奇您为什么需要这些信息?如果您试图与外部世界通信,那么基于tcp套接字的方法不是更好吗?我正在尝试使用qemu模拟一条新指令。我想了解转换是如何从用户空间——内核空间——qemu主机虚拟空间存储数据的