免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: hui03090402
打印 上一主题 下一主题

用户申请很大的一块内存,如何得到每页对应的物理地址? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-09-10 11:05 |只看该作者

回复 #3 zx_wing 的帖子

有人会吗?我想编写程序试试,但是现在也有问题啊。不知道用户态的页是怎么分得

论坛徽章:
0
12 [报告]
发表于 2008-09-10 11:34 |只看该作者
原帖由 hui03090402 于 2008-9-10 11:05 发表
有人会吗?我想编写程序试试,但是现在也有问题啊。不知道用户态的页是怎么分得


  1. #define PAGE_SIZE (1U<<12)
  2. void *addr;

  3. addr = malloc(100 * PAGE_SIZE + PAGE_SIZE);
  4. addr = (addr + PAGE_SIZE) & ~(PAGE_SIZE - 1);
复制代码


最简单的方法我建议你man valloc

[ 本帖最后由 zx_wing 于 2008-9-10 12:19 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2008-09-10 11:53 |只看该作者
原帖由 zx_wing 于 2008-9-10 11:34 发表



#define PAGE_SIZE (1U

我以前做的时候用mmap的匿名映射来分配用户态的内存 这样可以确保页对齐   自己做页对齐的工作也行
哈工王佰玲博士发表在计算机学报上的 零拷贝报文捕获平台的研究与实现 可以去看看  通篇都在说如何做地址转换 映射之类的工作

论坛徽章:
0
14 [报告]
发表于 2008-09-10 14:24 |只看该作者
十分感谢楼上两位。我再学习学习。

论坛徽章:
0
15 [报告]
发表于 2008-09-11 17:37 |只看该作者

回复 #12 zx_wing 的帖子

不好意思,再次向你请教我在用户空间申请的内存,用你讲的方法得到的pfn是0xb95dec,这样物理地址就是0x95dec000。我用的机器的内存没有这么大啊。是不是我那块做错了啊?你给我你的qq或者msn吗?我的msn: hui03090402@163.com

论坛徽章:
0
16 [报告]
发表于 2008-09-12 09:53 |只看该作者

回复 #15 hui03090402 的帖子

在线等。望有做过这方面工作的高手解答。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP