Linux原理及应用0465746.pptVIP

  • 3
  • 0
  • 约 94页
  • 2016-12-23 发布于江西
  • 举报
* 3.4.4分配与回收——内核态内存的申请与释放接口 slab分配器的相关操作: (2)kmem_cache_alloc( )与kmem_cache_free( ) 当需要分配一个拥有专用slab队列的对象时,应该通过kmem_cache_alloc( )函数,相反的动作则是kmem_cache_free( )函数。 分配的对象来自slab缓冲,释放的对象归还slab缓冲,通过某种标识表明对象是可用还是已被占用。 3.4.4分配与回收——内核态内存的申请与释放接口 slab分配器的相关操作: (3)kmem_cache_grow( )与kmem_cache_reap( ) kmem_cache_create( )函数只是建立了所需的专用缓冲区队列的基础设施,所形成的slab队列是 个空队列。 而具体slab的创建则要等需要分配缓冲区时,却发现队列中并无空闲的缓冲区可供分配时,再通过kmem_cache_grow( )来进行, kmem_cache_ grow( )再向伙伴系统申请空间。 kswapd会定时调用kmem_cache_reap( )来“收 割”缓冲区队列。 (4)kmalloc( )函数与kfree( )函数 kmalloc:从slab cache中申请连续的物理内存,通常用于专用对象。 kfree:释放。 3.4.4分配与回收——用户态内存的申请与释放接口 vm

文档评论(0)

1亿VIP精品文档

相关文档