Anatomy of the linux slab allocator Learn how linux manages memory Document options Print this page E-mail this page Document options requiring JavaScript are not displayed Watch these demos Integrate new tools and architectures into your environment - fast! --> Rate this page Help us improve this content Level: Intermediate M. Tim Jones ( [email=mtj@mtjones.com?subject=Anatomy o...
by wangchy_love - AIX文档中心 - 2007-10-16 11:24:17 阅读(2491) 回复(0)
slab机制是什么意思呢? 看书上讲的是在栈中分配一堆结构体,用的时候取不够了再分,多了就放 又看了IBM上的,搞的有点晕了。帮忙讲一下这个名词呗! 还有临时映射,书上说临时映射不能睡眠,这个是什么意思! 进程怎么会知道他在不可以睡眠的内存中呢?请教!~ 我把它创建在永久映射的区域里又有什么区别呢?
SLOB和slab都是linux内存管理后来引入的,我发现在实现上几乎都有同名函数,请问SLOB和slab倒底有何区别? [ 本帖最后由 fineamy 于 2006-11-30 10:59 编辑 ]
kmem_cache_create(...) { ... do { unsigned int break_flag = 0; cal_wastage: kmem_cache_estimate(cachep->gfporder, size, flags, &left_over, &cachep->num); if (break_flag) break; if (cachep->gfporder >= MAX_GFP_ORDER) break; if (!cachep->num) goto next; if (flags & CFLGS_OFF_slab && cachep->n...
最近在看slab内存管理,看到在kem_cache_s结构中的如下成员: struct kmem_cache_s { /* 1) per-cpu data, touched during every alloc/free */ struct array_cache *array[NR_CPUS]; unsigned int batchcount; unsigned int limit; 有些不解: 1。array_cache(abbr. ac)分配是好像是从通用cache中取对象,那么通用cache结构中也有ac结构,那个ac结构由谁分配呢?(chicken-...
深入理解linux内核上说(2nd, page 247): slab分配器把对象分组放进高速缓存。每个高速缓存都是同种类型对象的一种“储备”。 那么所有的高速缓存都是由slab分配器来管理的吗?比如说:页高速缓存,目录项高速缓存等等。? [ 本帖最后由 yjh777 于 2005-12-26 09:11 编辑 ]
每个slab的前部保留了一小块区域空着不用,即为“着色区”,其作用是使同一slab队列中不同slab上对象区的起始地址互相错开,这样有利于改善高速缓冲的效率。可是,为什么会有利于改善高速缓冲的效率呢?
看过ACE的代码。但是没看完,有点儿头大,感觉效率不会太高,因为它没有预先分配连续的大块内存,但它的一个ojbect header,这个倒是可取之处 于是我冲动了两个晚上,自己写了一个内存池,感觉效率还可以。 1。实现方法就是预先创建N个固定大小的内存块,然后将它们串成双向链表,然后持有一个头节点, 2,分配内存时,将每个slab再切成用户请求的小块,然后这些小块都附上一个object header, 保存它所在的slab header或它的下一个...
本人的程序是个非常复杂的多线程网络程序, 大致流程如下: 1.tcp接受网络数据,创建一个tcpservertask线程处理数据 2.在tcpservertask线程处理数据里,创建另一个线程motor_control(); 3.再次接受网络数据,如是某种服务类型(应用层定义的),退出原有的motor_control()线程 同时,创建一个新的motor_control线程 创建每个线程时都也设为detatched状态,线程退出时就可自己回收资源了。 如是重复几百次,察看/pro...