免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3331 | 回复: 10
打印 上一主题 下一主题

如何在内核和用户层共享1G内存 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-05 16:41 |只看该作者 |倒序浏览
这就是上头的要求,而且实际情况确实需要很大共享内存

论坛徽章:
0
2 [报告]
发表于 2010-02-06 05:55 |只看该作者
能否把需求再说的具体点?一定要同时共享1G么?如果不是,可以每次只共享1M,多弄几次。

另外,如果是X86-32, 内核在某个时刻管理的内存最大也就是1G。里面内核自己也用了很多。

论坛徽章:
0
3 [报告]
发表于 2010-02-06 18:40 |只看该作者
需求就是要共享1G内存,可以每次只共享1M,多弄几次是不行的

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
4 [报告]
发表于 2010-02-08 22:39 |只看该作者
共享这么大内存要干吗?
用户态要执行什么样的操作,内核态又要如何处理这些内存
把你的需求或者目的描述一下

论坛徽章:
0
5 [报告]
发表于 2010-02-09 09:12 |只看该作者
不知在启动,内存初始化的时候,事先把1G的内存从内核中预留下来,再想办法跟用户态共享的思路行得通不……

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
6 [报告]
发表于 2010-02-09 09:23 |只看该作者
不知在启动,内存初始化的时候,事先把1G的内存从内核中预留下来,再想办法跟用户态共享的思路行得通不……
独孤九贱 发表于 2010-02-09 09:12



这部分内存应该如何管理呢?
印象中bootmem获取的内存是不会交给buddy system的(不知道是否正确,印象中是这样的)
这样slab也访问不到这部分物理内存

搜了一下,好像确实是这样的
http://blog.csdn.net/wzhwho/archive/2009/12/13/4996510.aspx
2.7.      Boot Memory

    如果要分配大量的连续物理内存,上述的分配函数都不能满足,就只能用比较特殊的方式,在Linux内核引导阶段来预留部分内存。
2.7.1.       在内核引导时分配内存

    void* alloc_bootmem(unsigned long size)

    可以在Linux内核引导过程中绕过伙伴系统来分配大块内存。使用方法是在Linux内核引导时,调用mem_init函数之前用alloc_bootmem函数申请指定大小的内存。如果需要在其他地方调用这块内存,可以将alloc_bootmem返回的内存首地址通过EXPORT_SYMBOL导出,然后就可以使用这块内存了。这种内存分配方式的缺点是,申请内存的代码必须在链接到内核中的代码里才能使用,因此必须重新编译内核,而且内存管理系统看不到这部分内存,需要用户自行管理。测试结果表明,重新编译内核后重启,能够访问引导时分配的内存块。
2.7.2.       通过内核引导参数预留顶部内存

    在Linux内核引导时,传入参数“mem=size”保留顶部的内存区间。比如系统有256MB内存,参数“mem=248M”会预留顶部的8MB内存,进入系统后可以调用ioremap(0xF800000,0x800000)来申请这段内存。

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
7 [报告]
发表于 2010-02-09 09:27 |只看该作者
做一个ramdisk不知道行不行
总感觉需要自己添加系统调用以及用户态函数库

论坛徽章:
0
8 [报告]
发表于 2010-02-11 13:28 |只看该作者
boot的时候预留出来,用起来跟操作驱动设备是一样的;
如果你在预留出来的内存上做ramdisk,用起来就是把预留出来的内存设备再像磁盘一样操作,只是这设备不再需要缓冲,所以管理内存的方式是文件,当然效率要看使用的环境。找个合适的管理内存外设的方式。

论坛徽章:
0
9 [报告]
发表于 2010-02-11 13:55 |只看该作者
还没使用过alloc_bootmem分配内存;目前用到的最大共享内存就64M

论坛徽章:
0
10 [报告]
发表于 2010-02-17 20:11 |只看该作者
新年快乐,各位:
不好意思,最近太忙,没时间上CU来看下贴,我最后试了一下,6楼兄弟的方法可行
谢谢各位
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP