虚拟地址到物理地址映射时如何对齐?
先看这张图:

也就是说 在映射时,只要va或者va+size不是PGSIZE的整数倍,那就要多算一个。
小的要左对齐,大的要右对齐。
VA=ROUNDDOWN(va,PGSIZE)
ROUNDUP(va+size,PGSIZE)
那么映射页的个数为:
n=(ROUNDUP(va+size,PGSIZE)-ROUNDDOWN(va,PGSIZE))/PGSIZE
映射:
PA=ROUNDDOWN(pa,PGSIZE)
for(i=0;i<n;i++)
{
VA+i*PGSIZE --> PA+i*PGSIZE
}

浙公网安备 33010602011771号