在xv6 mmu.h
文件中,有以下2行代码
#define PGROUNDUP(sz) (((sz)+PGSIZE-1) & ~(PGSIZE-1))
#define PGROUNDDOWN(a) (((a)) & ~(PGSIZE-1))
他们干些什么?
发布于 2017-06-14 20:48:38
PGROUNDUP
和PGROUNDDOWN
是宏,用于舍入发送到多个PGSIZE
的地址。这些通常用于获得对齐的页面地址。PGROUNDUP
将地址舍入到PGSIZE
的较高倍数,而PGROUNDDOWN
将其舍入到PGSIZE
的较低倍数。
让我们举一个例子,如果在一个具有地址620的具有PGROUNDUP
1KB的系统上调用PGSIZE
:
同样,对于PGROUNDDOWN
,请考虑:
发布于 2021-07-16 06:48:37
首先,您应该知道(PGSIZE-1)是最大余数(addr/page_size)
从本质上说,我们只需要放弃剩下的部分,并且&~(PGSIZE-1)制造了这个东西。
https://stackoverflow.com/questions/43289022
复制相似问题