Welcome 微信登录

首页 / 操作系统 / Linux / Linux平台上几个常见内核内存分配函数

* kmalloc Prototype: #include <linux/slab.h> void *kmalloc(size_t size, int flags); Kmalloc分配一段未清0的连续物理内存页,并返回虚存地址。有点是快,并且可指定flag,如DMA内存,高地址区域内存等。缺点是不能分配大于128KB(处于跨平台考虑),几个重要的flag: GFP_ATOMIC Used to allocate memory from interrupt handlers and other code outside of a process context. Never sleeps. GFP_KERNEL Normal allocation of kernel memory. May sleep. GFP_USER Used to allocate memory for user-space pages; it may sleep. GFP_HIGHUSER Like GFP_USER, but allocates from high memory, if any. High memory is described in the next subsection. * slab allocator(lookaside cache) 从Memcached的实现知道有这么一个内存管理策略,其显着特点是分配一组相同大小的内存块作为内存池,其实现对应于源代码中的<linux/slab.h>和mm/slab.c。 Prototype: #include <linux/malloc.h> kmem_cache_t *kmem_cache_create(char *name, size_t size, size_t offset, unsigned long flags, constructor( ), destructor( )); int kmem_cache_destroy(kmem_cache_t *cache); /proc/slabinfo A virtual file containing statistics on slab cache usage. *__get_free_pages Prototype: _ _get_free_pages(unsigned int flags, unsigned int order);
  • 1
  • 2
  • 下一页
Linux下C语言对PHP扩展跟我学LFS LiveUSB制作相关资讯      Linux平台 
  • 停止那些无聊的预测吧!Linux已经  (08/03/2014 09:37:01)
  • Linux平台存储架构与应用方案研究  (04/30/2013 07:03:08)
  • Linux平台用C++实现事件对象,同步  (12/18/2011 19:52:29)
  • Linux 平台七大桌面环境通览  (06/25/2014 12:32:36)
  • 卡马克认为Linux仍然不是一个商业  (08/06/2012 06:49:31)
  • Linux平台上用C++实现多线程互斥锁  (12/18/2011 19:46:15)
本文评论 查看全部评论 (0)
表情: 姓名: 字数