首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在xv6中PGROUNDUP和PGROUNDDOWN是什么意思?

在xv6中PGROUNDUP和PGROUNDDOWN是什么意思?
EN

Stack Overflow用户
提问于 2017-04-08 00:50:14
回答 2查看 4K关注 0票数 4

在xv6 mmu.h文件中,有以下2行代码

代码语言:javascript
运行
复制
    #define PGROUNDUP(sz)  (((sz)+PGSIZE-1) & ~(PGSIZE-1))
    #define PGROUNDDOWN(a) (((a)) & ~(PGSIZE-1))

他们干些什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-14 20:48:38

PGROUNDUPPGROUNDDOWN是宏,用于舍入发送到多个PGSIZE的地址。这些通常用于获得对齐的页面地址。PGROUNDUP将地址舍入到PGSIZE的较高倍数,而PGROUNDDOWN将其舍入到PGSIZE的较低倍数。

让我们举一个例子,如果在一个具有地址620的具有PGROUNDUP 1KB的系统上调用PGSIZE

  • ==> (620+(1024-1)& ~(1023)) ==> 1024
  • 地址620被围捕到1024。

同样,对于PGROUNDDOWN,请考虑:

  • ==> (2400 & ~(1023)) ==> 2048
  • 地址2400被四舍五入到2048年。
票数 11
EN

Stack Overflow用户

发布于 2021-07-16 06:48:37

首先,您应该知道(PGSIZE-1)是最大余数(addr/page_size)

  • 四舍五入

从本质上说,我们只需要放弃剩下的部分,并且&~(PGSIZE-1)制造了这个东西。

  • 围起来
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43289022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档