主权项 |
一种快速扫描全虚拟化虚拟机脏页位图的方法,其特征在于,包括以下步骤:(1)标志位初始化阶段:在Xen虚拟机的地址空间中为全虚拟化虚拟机的4GB内存空间分配一级标志位和二级标志位,同时将一级标志位和二级标志位初始化为零,一级标志位的数量为4GB/128MB=32个,二级标志位的数量为1个;(2)标志位设置阶段:读取Xen虚拟机第二级页表项中的地址,并根据地址来设置一级标志位和二级标志位的值,具体包括以下子步骤:(2‑1)读取Xen虚拟机第二级页表的第0个页表项;(2‑2)判断已读取页表项中的地址是否有效,若地址有效,则转入步骤(2‑3),否则转入步骤(2‑4);(2‑3)设置该地址相应的一级标志位为1,并根据地址获取相应的脏页位图页面,然后转入步骤(2‑5);(2‑4)获取全零的脏页位图页面,然后转入步骤(2‑7);(2‑5)判断该页表项是否为第4~31号页表项,如果是,则转入步骤(2‑6),否则转入步骤(2‑7);(2‑6)设置二级标志位为1;(2‑7)判断该页表项是否为第31个页表项,如果是,则转入步骤(2‑8),否则转入步骤(2‑9);(2‑8)结束设置,将脏页位图和一级标志位及二级标志位返回给用户空间的应用;(2‑9)读取下一个页表项,并返回步骤(2‑2);(2‑10)重复步骤(2‑2)至(2‑9),直到所有页表项都处理完毕为止;(3)标志位扫描阶段:根据设置的一级标志位和二级标志位的值来扫描全虚拟化虚拟机的脏页位图,从而得到变脏页面号,具体包括以下子步骤:(3‑1)读取第0个一级标志位的值;(3‑2)判断是否为第4个一级标志位,如果是,则转入步骤(3‑6),否则转入步骤(3‑3);(3‑3)判断该一级标志位的值是否为0,如果是,则转入步骤(3‑5),否则转入步骤(3‑4);(3‑4)逐位扫描该一级标志位对应的脏页位图页面,并将位值为1对应的页面号记录下来,然后转入步骤(3‑5);(3‑5)读取下一个一级标志位的值,并转入步骤(3‑2);(3‑6)判断二级标志位的值是否为零,如果是,则转入步骤(3‑11),否则转入步骤(3‑7);(3‑7)判断已读取的一级标志位是否为第31个一级标志位,如果是,则过程结束,否则转入步骤(3‑8);(3‑8)判断已读取的一级标志位的值是否为0,如果是,则转入步骤(3‑10),否则转入步骤(3‑9);(3‑9)逐位扫描该一级标志位对应的脏页位图页面,并将位值为1对应的页面号记录下来,然后转入步骤(3‑10);(3‑10)读取下一个一级标志位,并返回步骤(3‑7)。 |