忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
12下一页
最近访问板块 发新帖
查看: 7501 | 回复: 16

内核态和用户态共享内存,__get_free_pages如何获得大于4M的连续内存呢? [复制链接]

论坛徽章:
0
发表于 2010-02-02 09:46 |显示全部楼层
本帖最后由 flyingsportshoe 于 2010-04-30 16:01 编辑

需要再内核中维护一个哈希表,这个哈希表在内核态做查找,在用户态进行写入删除维护。
比较无奈的是在内核态只能分配4M的连续内存,无法满足需求,大家有什么好的建议么?指点一二,让我绕过这个问题也可以~

附上我的解决思路:
    原来想的只是避免指针操作,因为在内核态保存的指针是内核态的虚拟地址,所以hash表在用户态的访问是不正常的。所以想将hash表改造成为完全静态的数组来保存数据,所以出现了4M不能满足的情况。后来就考虑做一套内存管理的机制来管理共享内存,hash表的指针体系改造成2个,一个是用户态的指针体系,一套是内核态的指针体系。这样保证了hash表在用户态和内核态都能使用。但这个只是想法,理论上是可以的,目前正在测试代码是否可行。
     经过测试在hash表上保留2套指针的方法是可行的,所有牵涉到指针操作的地方均有内核态一个指针,用户态一个指针。在用户态操作的时候使用用户态的指针,在内核态的时候使用内核态的指针。

论坛徽章:
0
发表于 2010-02-02 12:31 |显示全部楼层
呵呵 顶起来

论坛徽章:
0
发表于 2010-02-03 22:27 |显示全部楼层
不可能啊,我就是从内核申请很大的内存啊。

我现在手边没有代码,大概就是类似 get_page 之类的函数。绝对可以申请很多的内存的

论坛徽章:
0
发表于 2010-03-02 16:46 |显示全部楼层
顶顶顶顶顶,顶起来

论坛徽章:
0
发表于 2010-03-02 16:47 |显示全部楼层
本帖最后由 flyingsportshoe 于 2010-03-02 16:49 编辑

3楼的大哥,帮我看看代码,看看你怎么办到的?谢谢啦

论坛徽章:
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
发表于 2010-03-02 17:29 |显示全部楼层
这个函数分配的内存是有上限的。

论坛徽章:
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
发表于 2010-03-02 17:30 |显示全部楼层
用vmalloc可以分配较大的内存,但是不是连续的。

论坛徽章:
0
发表于 2010-03-05 17:00 |显示全部楼层
修改源码中的限制,重新编译内核


但是LZ为什么要物理连续的内存(4MB连续内存的限制是对物理连续的,逻辑连续的完全可以)啊?

论坛徽章:
0
发表于 2010-03-11 15:59 |显示全部楼层
学习的。

论坛徽章:
0
发表于 2010-03-12 08:41 |显示全部楼层
回复深蓝的苹果,主要是想做内核态和用户态的共享内存。4M感觉对于应用来说不够。不过后来改进了算法+上自己做了一套内存管理机制,解决了此问题。谢谢大家的关注
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10张SACC2017门票等你来拿~

在数字化转型时代,云已成为万物智能的数字化大脑。而随着大数据应用、人工智能、移动互联网等技术的飞速发展,“智慧 +” 的概念正在深入到各行各业,提升企业效率,释放商业潜能,创造全新机遇。作为国内顶级技术盛会之一,2017 中国系统架构师大会(SACC2017)将于 10 月 19-21 日在北京新云南皇冠假日酒店震撼来袭。今年,大会以 “云智未来” 为主题,云集国内外顶级专家,围绕云计算、人工智能、大数据、移动互联网、产业应用等热点领域展开技术探讨与交流。本届大会共设置 2 大主会场,18 个技术专场;邀请来自互联网、金融、制造业、电商等多个领域,100 余位技术专家及行业领袖来分享他们的经验;并将吸引 4000 + 人次的系统运维、架构师及 IT 决策人士参会,为他们提供最具价值的交流平台。
----------------------------------------
优惠时间:2017年10月19日前

活动链接>>
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP