K.W*_*.Wu 3 c operating-system xv6
在 xv6mmu.h文件中,有这 2 行代码
#define PGROUNDUP(sz) (((sz)+PGSIZE-1) & ~(PGSIZE-1))
#define PGROUNDDOWN(a) (((a)) & ~(PGSIZE-1))
Run Code Online (Sandbox Code Playgroud)
他们在做什么?
小智 8
PGROUNDUP和PGROUNDDOWN是用于将地址四舍五入到PGSIZE. 这些通常用于获取页面对齐的地址。PGROUNDUP会将地址四舍五入到 的较高倍数,PGSIZE而PGROUNDDOWN将其四舍五入到 的较低倍数PGSIZE。
让我们举一个例子,如果在地址为 620 的 1KBPGROUNDUP系统上调用PGSIZE:
同样PGROUNDDOWN考虑: