[Linux内存]linux内存分配函数总结
2015-01-26 20:07
225 查看
linux内核相关
1,linux内核内存分配函数总结
vmalloc
工作方式类似于kmalloc(), 不过虚拟地址连续,物理地址不连续。获得大块内存时使用,通常在creat_module()系统调用的地方使用。
2,各种API应用举例
kmem_cache_create和kmem_cache_alloc,比如在Namespace.c文件的mnt_int()函数中调用kmem_cache_creat()函数创建名为mnt_cache的缓存,然后在调用do_mount()函数的时候调用kmem_cache_alloc()函数分配一个mount结构体。
用户层相关:
3,malloc和calloc函数
void *calloc(size_t n, size_t size);
在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针;如果分配不成功,返回NULL。calloc在动态分配完内存后,自动初始化该内存空间为零,而malloc不初始化,里边数据是随机的垃圾数据。
extern void *malloc(unsigned int num_bytes);
使用malloc()和calloc()函数分配的内存使用完以后一定要用free()函数将内存手动释放。
malloc()函数申请到的内存空间在什么范围:答:0X00000000到0XBFFFFFFF
4,linux内核有些地方分配内存不允许失败,这个时候应该如何保证
答:使用内存池技术,内存池本质也是后背高速缓存,只是在使用前提前准备好,缺点是浪费内存。
1,linux内核内存分配函数总结
单位 | 接口 | 算法 |
动态大小 | kmalloc/kfree/krealloc/kcalloc | 按大小组织的缓存数组 |
固定大小 | kmem_cache_create/kmem_cache_destroy kmem_cache_alloc/kmem_cache_free | Slab[2] |
2^n页 | alloc_pages/free_pages __get_free_pages/__free_pages | 伙伴算法,分配若干(物理连续)页面,返回指向该区域第一个字节的指针 |
工作方式类似于kmalloc(), 不过虚拟地址连续,物理地址不连续。获得大块内存时使用,通常在creat_module()系统调用的地方使用。
2,各种API应用举例
kmem_cache_create和kmem_cache_alloc,比如在Namespace.c文件的mnt_int()函数中调用kmem_cache_creat()函数创建名为mnt_cache的缓存,然后在调用do_mount()函数的时候调用kmem_cache_alloc()函数分配一个mount结构体。
用户层相关:
3,malloc和calloc函数
void *calloc(size_t n, size_t size);
在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针;如果分配不成功,返回NULL。calloc在动态分配完内存后,自动初始化该内存空间为零,而malloc不初始化,里边数据是随机的垃圾数据。
extern void *malloc(unsigned int num_bytes);
使用malloc()和calloc()函数分配的内存使用完以后一定要用free()函数将内存手动释放。
malloc()函数申请到的内存空间在什么范围:答:0X00000000到0XBFFFFFFF
4,linux内核有些地方分配内存不允许失败,这个时候应该如何保证
答:使用内存池技术,内存池本质也是后背高速缓存,只是在使用前提前准备好,缺点是浪费内存。
相关文章推荐
- [Linux内存]linux内存分配函数总结
- Linux开发心得总结3 - brk和sbrk及内存分配函数介绍
- Linux开发心得总结9 - Linux中的内存分配和释放之kmem_cache_alloc()函数分析
- Linux中的内存分配和释放之bootmam_init()函数分析
- Linux中的内存分配和释放之mem_init()函数分析
- 内存分配函数总结- 陈敏的博客- CSDN博客
- linux内存分配方法总结--总结的不错
- linux 常用内存分配函数小结
- Linux中的内存分配和释放之__alloc_boot函数分析
- linux 内存分配函数
- 内存分配函数总结
- Linux内核中常见内存分配函数(二) 分类: arm-linux-Ubuntu 2013-08-08 17:58 723人阅读 评论(0) 收藏
- Linux中的内存分配和释放之free_area_init_node()函数分析
- Linux中的内存分配和释放之__alloc_pages()函数分析
- Linux常用内核态内存分配方式总结
- Linux中的内存分配和释放之build_all_zonelists()函数分析
- Linux中的内存分配和释放之kmem_cache_alloc()函数分析
- Linux中的内存分配和释放之__free_pages()函数分析
- 内存分配函数小总结
- 堆栈、栈帧、函数调用、内存分配总结