QEMU分页机制分析

本文深入剖析了QEMU的分页机制,首先介绍了QEMU页面的层次结构,接着详细阐述了页面的查找和分配过程。
摘要由CSDN通过智能技术生成

1 qemu页面层次划分

qemu通过定义一些宏灵活地进行分页,首先由宏TARGET_PAGE_BITS(12)确定页的大小,然后根据目标机的物理地址空间和宿主机的字长确定P_L1_BITS和V_L1_BITS,从而使得剩余部分可以被L2_BITS均分。那么如何确定P_L1_BITS和V_L1_BITS的值呢?先看下面两个宏定义:
/* The bits remaining after N lower levels of page tables. */
#define P_L1_BITS_REM \
((TARGET_PHYS_ADDR_SPACE_BITS - TARGET_PAGE_BITS) % L2_BITS)
#define V_L1_BITS_REM \
((L1_MAP_ADDR_SPACE_BITS - TARGET_PAGE_BITS) % L2_BITS)
这两个宏确定了按照L2_BITS大小均分后剩余的bit数。

再看P_L1_BITS的定义,它取决于P_L1_BITS_REM的大小,这么做得目的就是既能保证除去L1层之后,剩余长度的页面可以按照L2_BITS大小均分,也避免了L1页面尺寸太小,降低了访问效率。
/* Size of the L1 page table. Avoid silly small sizes. */
#if P_L1_BITS_REM < 4
#define P_L1_BITS (P_L1_BITS_REM + L2_BITS)
#else
#define P_L1_BITS P_L1_BITS_REM
#endif

V_L1_BITS定义的思想与P_L1_BITS完全一致,如下&#
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值