mmap 使用问题

HNLGDXYJS 2011-11-27 04:57:55
hi, all.
我想用 mmap 生成一个内存池(linux 2.6 ), 有几点不是很明白:
1、mmap 要求映射的大小是页的整数倍 (linux 下一页是 4K), 那我这个内存池要分配很多不同大小的块, 比如 128 字节, 256 字节等。此时要求调用 mmap 多次, 来分别生成不同大小的内存块, 但它们都映射到同一个文件, 那 mmap()中的偏移要怎样算?

2、有没有用 mmap 来生成内存池的例子, 可以参考下?

...全文
233 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fredshao 2011-11-28
  • 打赏
  • 举报
回复
不懂,学习了,现在也在学习LINUX,初学者,呵呵
luciferisnotsatan 2011-11-28
  • 打赏
  • 举报
回复
可以看看SGI STL里的内存池概念
自信男孩 2011-11-27
  • 打赏
  • 举报
回复
mmap可以在内核中申请一片共享内存,一般用于进程间通讯使用的。你可以使用它将申请的不同的空间赋值给不同的指针或者使用一个指针,可以使用偏移量来区分不同的区域。
qq120848369 2011-11-27
  • 打赏
  • 举报
回复
1, 你的内存池思想太死板了,一次匿名映射512M,自己制作一个slab内存池管理器即可。

内存池名字的含义: 内存池 + 池管理器。

2,你都知道Linux2.6 , 就不能man mmap么.
柯本 2011-11-27
  • 打赏
  • 举报
回复
例子参考下:
http://www.cppblog.com/bigsml/archive/2006/07/27/10606.html
如果是多块内存块,可以用链表的方式串起来

70,026

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧