作者larkes (larkes)
看板LinuxDev
标题[问题] 有关slab allocator和kmalloc的问题
时间Sat Apr 21 12:28:12 2012
最近在使用配置记忆体的功能,
有遇到一些问题, 问题如下:
1.
我对於kmem_cache_create的认知是:
kernel在预设情况下会事先配置4k bytes(跟page size)的记忆体,
然後根据我们设定的object size,
决定要分割几个object.
不知道我这样的说法有无错误呢?
2.
struct kmem *my_cache;
my_cache = kmeme_cache_create("my_cache",800,0,
SLAB_HWCACHE_ALIGN,NULL);
printk(KERN_ALERT "my_cache->num:%d",my_cache->num);
我把object size设成800 bytes,
理论上my_cache->num显示结果应该是5才对...
可是显示结果却是9,
之後我把object size调成500 bytes,
它显示结果却是7. 理论上应该要显示8才对吧...
请问....为什麽会这样子呢?
my_cache->num, 它的数值结果要怎麽计算呢?
不过我把object size调到1000或2000的话,它分别显示4和2,
这个结果是正确的.
3.
承上, 把object size调到1 byte的话, 再去显示my_cache->num的值,
电脑马上就当机了,
为什麽会当机呢?
4.
如果kmalloc的flag是GFP_USER,
应该就是指帮user application配置记忆区块吧?
不知我这样的说法有没有错误呢?
如果没有错的话,
那它跟user application在用的malloc, 是不是功能都一样呢?
都一样是帮user application配置记忆区块呢?
还麻烦请指教一下,
谢谢~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.248.18.139
1F:→ RouterHsieh:最後一个问题直接去看malloc的实作会比较准吧..@@ 04/21 13:00
2F:推 shaopin:FLAG应该是指要以什麽态度来allocate吧 04/22 17:23
※ 编辑: larkes 来自: 59.120.179.172 (04/22 23:18)