免费注册 查看新帖 |

Chinaunix

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

『请教』get_free_pages申请大内存 [复制链接]

论坛徽章:
0
41 [报告]
发表于 2009-10-16 17:13 |只看该作者

回复 #40 epegasus 的帖子

> 是不是所有的物理地址都要先映射到内核地址空间才能分配给用户用?

不是,线性映射的0-896M空间是预先映射好的,kernel可以随时access这些memory。
而high memory的话,kernel必须首先把它们map到自己的空间,得到kernel virtual address才能访问这些memory。

但是分配给用户的话,只需要把这个page的physical page frame number写到相应的page table的pte entry里就行了。所以high memory的page是没有问题的。

> 如果不是,
> 当物理内存太多了,那远多出896的物理内存是不是可以分配独立的用户空间?
> 而这个物理空间是不是 就是在内核地址空间之外的,那么这个用户空间里的值到内核空间的copy
> 改怎么做?

kernel是直接使用user space virtual address来访问的,所以copy_from_user必须在user process context里执行,因为要用到这个user process的page table

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
42 [报告]
发表于 2009-10-16 17:43 |只看该作者
白金兄,你申请了内存之后,给所有内存赋值为0xff
  1.         memset(data, 0xff, 1024 * 1024 * 200);
复制代码

而不是清零,是不是有什么说法啊?

论坛徽章:
0
43 [报告]
发表于 2009-10-16 18:00 |只看该作者
原帖由 Godbach 于 2009-10-16 17:43 发表
白金兄,你申请了内存之后,给所有内存赋值为0xff
        memset(data, 0xff, 1024 * 1024 * 200);
而不是清零,是不是有什么说法啊?

没有,只是个人习惯问题
因为内存一般意义上讲,如果未被使用过,分配到以后内容是 0x00,我全写 0xff,以确保那段空间是可操作的

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
44 [报告]
发表于 2009-10-16 18:09 |只看该作者

回复 #43 platinum 的帖子

哦,我的做法通常是清零。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
45 [报告]
发表于 2009-10-16 18:51 |只看该作者

回复 #43 platinum 的帖子

白金兄,还有通过vmalloc=xxx给内核传参数时,大小不能超过物理内存吧。

论坛徽章:
0
46 [报告]
发表于 2009-10-16 19:11 |只看该作者
原帖由 Godbach 于 2009-10-16 18:51 发表
白金兄,还有通过vmalloc=xxx给内核传参数时,大小不能超过物理内存吧。

我也说不清,在我的虚拟机里可以,设成 4096M 都没问题,找了一个真实机器试却不行
另外发现还与内核参数有关,就是 HIGHMEM、1G/3G 那些,我设置的是 2G/2G

论坛徽章:
0
47 [报告]
发表于 2009-10-19 10:37 |只看该作者

开源软件不是这样用的!

开源的,读读源代码就知道了。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
48 [报告]
发表于 2009-10-20 13:15 |只看该作者
原帖由 platinum 于 2009-10-16 15:48 发表

不是为了配合你做测试吗,临时修改了分配值


白金兄你在内核引导菜单中怎么改的啊,我加了个vmalloc=1024M 结果不能引导了,改成vmalloc=800M, kernel panic了

论坛徽章:
0
49 [报告]
发表于 2014-01-07 18:00 |只看该作者
同求啊。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。我也遇到了这问题

论坛徽章:
16
2015亚冠之吉达阿赫利
日期:2015-08-17 11:21:462015年迎新春徽章
日期:2015-03-04 09:58:11酉鸡
日期:2014-12-07 09:06:19水瓶座
日期:2014-11-04 14:23:29天秤座
日期:2014-03-02 08:57:52双鱼座
日期:2014-02-22 13:07:56午马
日期:2014-02-14 11:08:18双鱼座
日期:2014-02-13 11:09:37卯兔
日期:2014-02-06 15:10:34子鼠
日期:2014-01-20 14:48:19戌狗
日期:2013-12-19 09:37:46射手座
日期:2013-12-19 09:33:47
50 [报告]
发表于 2014-01-07 19:01 |只看该作者
有一种不是很可靠的方法叫CMA. 另外可以参考hugetlb是怎样通过启动参数将各种大小的大页保留到自己的pool中的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP